๐Ÿ“ฆ joshuablais / go-repo

๐Ÿ“„ flake.nix ยท 50 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50{
  description = "A quick scaffolding system for go projects";
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

  outputs = { self, nixpkgs }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
    in {
      packages.${system}.default = pkgs.buildGoModule {
        pname = "scaffold";
        version = "1.0.0";
        src = ./.;

        vendorHash = "sha256-kuheizBlwHUpozXPmFnoYOJ4zzyUDu3U5k8j0N1bhGc=";

        # Critical: Wrap binary with runtime dependencies
        nativeBuildInputs = [ pkgs.makeWrapper ];

        postInstall = ''
          # Rename binary
          mv $out/bin/go-repo $out/bin/scaffold

          # Wrap with required tools in PATH
          wrapProgram $out/bin/scaffold \
            --prefix PATH : ${pkgs.lib.makeBinPath [
              pkgs.git
              pkgs.gh
              pkgs.devenv
              pkgs.nix
              pkgs.direnv
              pkgs.age
            ]}
        '';
      };

      devShells.${system}.default = pkgs.mkShell {
        buildInputs = with pkgs; [
          go
          gopls
          git
          gh
          devenv
          age
          direnv
        ];
      };
    };
}