diff --git a/flake.nix b/flake.nix index 424423f..30ecaf2 100644 --- a/flake.nix +++ b/flake.nix @@ -164,5 +164,10 @@ ]; }; }; + + templates."go" = { + path = ./templates/go; + description = "Go template."; + }; }; } diff --git a/templates/go/.envrc b/templates/go/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/templates/go/.envrc @@ -0,0 +1 @@ +use flake diff --git a/templates/go/flake.nix b/templates/go/flake.nix new file mode 100644 index 0000000..6910571 --- /dev/null +++ b/templates/go/flake.nix @@ -0,0 +1,42 @@ +{ + description = "thing: stuff and things"; + + inputs.nixpkgs.url = "nixpkgs/nixos-21.11"; + + outputs = { self, nixpkgs }: + let + lastModifiedDate = + self.lastModifiedDate or self.lastModified or "19700101"; + version = builtins.substring 0 8 lastModifiedDate; + supportedSystems = + [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); + in { + packages = forAllSystems (system: + let pkgs = nixpkgsFor.${system}; + in { + thing = pkgs.buildGoModule { + pname = "thing"; + inherit version; + src = ./.; + + vendorSha256 = pkgs.lib.fakeSha256; + proxyVendor = true; + }; + }); + + defaultPackage = forAllSystems (system: self.packages.${system}.pnix); + devShells = forAllSystems (system: + let pkgs = nixpkgsFor.${system}; + in { + default = pkgs.mkShell { + shellHook = '' + PS1='\u@\h:\@; ' + ''; + nativeBuildInputs = with pkgs; [ git go gopls go-tools ]; + }; + }); + }; +} +