diff --git a/flake.nix b/flake.nix index e84d45e..164ea10 100644 --- a/flake.nix +++ b/flake.nix @@ -1,3 +1,5 @@ +# ml2 ts=2 sts=2 sw=2 + { description = "A simple Go package"; @@ -22,46 +24,26 @@ # Nixpkgs instantiated for supported system types. nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); - in - { - + in { # Provide some binary packages for selected system types. packages = forAllSystems (system: - let - pkgs = nixpkgsFor.${system}; - in - { - tt = pkgs.buildGoModule { - pname = "tt"; - inherit version; - # In 'nix develop', we don't need a copy of the source tree - # in the Nix store. - src = ./.; - - # This hash locks the dependencies of this package. It is - # necessary because of how Go requires network access to resolve - # VCS. See https://www.tweag.io/blog/2021-03-04-gomod2nix/ for - # details. Normally one can build with a fake hash and rely on native Go - # mechanisms to tell you what the hash should be or determine what - # it should be "out-of-band" with other tooling (eg. gomod2nix). - # To begin with it is recommended to set this, but one must - # remember to bump this hash when your dependencies change. - # vendorHash = pkgs.lib.fakeHash; - - vendorHash = "sha256-cpjMZr+kP+XyXRxK4YI/lGHl97IROFVVz8DrID0vi6E="; - }; - }); + let + pkgs = nixpkgsFor.${system}; + in + { + tt = pkgs.callPackage ./nix/package.nix { version = version; }; + }); # Add dependencies that are only needed for development devShells = forAllSystems (system: - let - pkgs = nixpkgsFor.${system}; - in - { - default = pkgs.mkShell { - buildInputs = with pkgs; [ go gopls gotools go-tools qbe (if system == "x86_64-linux" then [fasm] else []) ]; - }; - }); + let + pkgs = nixpkgsFor.${system}; + in + { + default = pkgs.mkShell { + buildInputs = with pkgs; [ go gopls gotools go-tools qbe (if system == "x86_64-linux" then [fasm] else []) ]; + }; + }); # The default package for 'nix build'. This makes sense if the # flake provides only one package or there is a clear "main" diff --git a/nix/package.nix b/nix/package.nix new file mode 100644 index 0000000..684446b --- /dev/null +++ b/nix/package.nix @@ -0,0 +1,20 @@ +# ml2 ts=2 sts=2 sw=2 +{buildGoModule, version}: buildGoModule { + pname = "tt"; + inherit version; + # In 'nix develop', we don't need a copy of the source tree + # in the Nix store. + src = ./.; + + # This hash locks the dependencies of this package. It is + # necessary because of how Go requires network access to resolve + # VCS. See https://www.tweag.io/blog/2021-03-04-gomod2nix/ for + # details. Normally one can build with a fake hash and rely on native Go + # mechanisms to tell you what the hash should be or determine what + # it should be "out-of-band" with other tooling (eg. gomod2nix). + # To begin with it is recommended to set this, but one must + # remember to bump this hash when your dependencies change. + # vendorHash = pkgs.lib.fakeHash; + + vendorHash = "sha256-cpjMZr+kP+XyXRxK4YI/lGHl97IROFVVz8DrID0vi6E="; +}