mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Merge pull request #830 from kradalby/nix-overlay
This commit is contained in:
		
						commit
						8fbba1ac94
					
				| @ -17,11 +17,11 @@ | ||||
|     }, | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1662019588, | ||||
|         "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=", | ||||
|         "lastModified": 1664106353, | ||||
|         "narHash": "sha256-HMJP80+DSxFySpWyuxz5+iNozS3+dVt0b4n6YMIU5/8=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "2da64a81275b68fdad38af669afeda43d401e94b", | ||||
|         "rev": "79d3ca08920364759c63fd3eb562e99c0c17044a", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|  | ||||
							
								
								
									
										302
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										302
									
								
								flake.nix
									
									
									
									
									
								
							| @ -6,163 +6,163 @@ | ||||
|     flake-utils.url = "github:numtide/flake-utils"; | ||||
|   }; | ||||
| 
 | ||||
|   outputs = { self, nixpkgs, flake-utils, ... }: | ||||
|     let | ||||
|       headscaleVersion = if (self ? shortRev) then self.shortRev else "dev"; | ||||
|     in | ||||
|   outputs = { | ||||
|     self, | ||||
|     nixpkgs, | ||||
|     flake-utils, | ||||
|     ... | ||||
|   }: let | ||||
|     headscaleVersion = | ||||
|       if (self ? shortRev) | ||||
|       then self.shortRev | ||||
|       else "dev"; | ||||
|   in | ||||
|     { | ||||
|       overlay = final: prev: | ||||
|         let | ||||
|           pkgs = nixpkgs.legacyPackages.${prev.system}; | ||||
|         in | ||||
|         rec { | ||||
|           headscale = | ||||
|             pkgs.buildGo119Module rec { | ||||
|               pname = "headscale"; | ||||
|               version = headscaleVersion; | ||||
|               src = pkgs.lib.cleanSource self; | ||||
|       overlay = _: prev: let | ||||
|         pkgs = nixpkgs.legacyPackages.${prev.system}; | ||||
|       in rec { | ||||
|         headscale = pkgs.buildGo119Module rec { | ||||
|           pname = "headscale"; | ||||
|           version = headscaleVersion; | ||||
|           src = pkgs.lib.cleanSource self; | ||||
| 
 | ||||
|               # When updating go.mod or go.sum, a new sha will need to be calculated, | ||||
|               # update this if you have a mismatch after doing a change to thos files. | ||||
|               vendorSha256 = "sha256-DosFCSiQ5FURbIrt4NcPGkExc84t2MGMqe9XLxNHdIM="; | ||||
|           # When updating go.mod or go.sum, a new sha will need to be calculated, | ||||
|           # update this if you have a mismatch after doing a change to thos files. | ||||
|           vendorSha256 = "sha256-DosFCSiQ5FURbIrt4NcPGkExc84t2MGMqe9XLxNHdIM="; | ||||
| 
 | ||||
|               ldflags = [ "-s" "-w" "-X github.com/juanfont/headscale/cmd/headscale/cli.Version=v${version}" ]; | ||||
|             }; | ||||
| 
 | ||||
|           golines = | ||||
|             pkgs.buildGoModule rec { | ||||
|               pname = "golines"; | ||||
|               version = "0.9.0"; | ||||
| 
 | ||||
|               src = pkgs.fetchFromGitHub { | ||||
|                 owner = "segmentio"; | ||||
|                 repo = "golines"; | ||||
|                 rev = "v${version}"; | ||||
|                 sha256 = "sha256-BUXEg+4r9L/gqe4DhTlhN55P3jWt7ZyWFQycO6QePrw="; | ||||
|               }; | ||||
| 
 | ||||
|               vendorSha256 = "sha256-sEzWUeVk5GB0H41wrp12P8sBWRjg0FHUX6ABDEEBqK8="; | ||||
| 
 | ||||
|               nativeBuildInputs = [ pkgs.installShellFiles ]; | ||||
|             }; | ||||
| 
 | ||||
|           golangci-lint = prev.golangci-lint.override { | ||||
|             # Override https://github.com/NixOS/nixpkgs/pull/166801 which changed this | ||||
|             # to buildGo118Module because it does not build on Darwin. | ||||
|             inherit (prev) buildGoModule; | ||||
|           }; | ||||
| 
 | ||||
|           # golangci-lint = | ||||
|           #   pkgs.buildGo117Module rec { | ||||
|           #     pname = "golangci-lint"; | ||||
|           #     version = "1.46.2"; | ||||
|           # | ||||
|           #     src = pkgs.fetchFromGitHub { | ||||
|           #       owner = "golangci"; | ||||
|           #       repo = "golangci-lint"; | ||||
|           #       rev = "v${version}"; | ||||
|           #       sha256 = "sha256-7sDAwWz+qoB/ngeH35tsJ5FZUfAQvQsU6kU9rUHIHMk="; | ||||
|           #     }; | ||||
|           # | ||||
|           #     vendorSha256 = "sha256-w38OKN6HPoz37utG/2QSPMai55IRDXCIIymeMe6ogIU="; | ||||
|           # | ||||
|           #     nativeBuildInputs = [ pkgs.installShellFiles ]; | ||||
|           #   }; | ||||
| 
 | ||||
|           protoc-gen-grpc-gateway = | ||||
|             pkgs.buildGoModule rec { | ||||
|               pname = "grpc-gateway"; | ||||
|               version = "2.8.0"; | ||||
| 
 | ||||
|               src = pkgs.fetchFromGitHub { | ||||
|                 owner = "grpc-ecosystem"; | ||||
|                 repo = "grpc-gateway"; | ||||
|                 rev = "v${version}"; | ||||
|                 sha256 = "sha256-8eBBBYJ+tBjB2fgPMX/ZlbN3eeS75e8TAZYOKXs6hcg="; | ||||
|               }; | ||||
| 
 | ||||
|               vendorSha256 = "sha256-AW2Gn/mlZyLMwF+NpK59eiOmQrYWW/9HPjbunYc9Ij4="; | ||||
| 
 | ||||
|               nativeBuildInputs = [ pkgs.installShellFiles ]; | ||||
| 
 | ||||
|               subPackages = [ "protoc-gen-grpc-gateway" "protoc-gen-openapiv2" ]; | ||||
|             }; | ||||
|           ldflags = ["-s" "-w" "-X github.com/juanfont/headscale/cmd/headscale/cli.Version=v${version}"]; | ||||
|         }; | ||||
|     } // flake-utils.lib.eachDefaultSystem | ||||
|       (system: | ||||
|         let | ||||
|           pkgs = import nixpkgs { | ||||
|             overlays = [ self.overlay ]; | ||||
|             inherit system; | ||||
| 
 | ||||
|         golines = pkgs.buildGoModule rec { | ||||
|           pname = "golines"; | ||||
|           version = "0.9.0"; | ||||
| 
 | ||||
|           src = pkgs.fetchFromGitHub { | ||||
|             owner = "segmentio"; | ||||
|             repo = "golines"; | ||||
|             rev = "v${version}"; | ||||
|             sha256 = "sha256-BUXEg+4r9L/gqe4DhTlhN55P3jWt7ZyWFQycO6QePrw="; | ||||
|           }; | ||||
|           buildDeps = with pkgs; [ git go_1_19 gnumake ]; | ||||
|           devDeps = with pkgs; | ||||
|             buildDeps ++ [ | ||||
| 
 | ||||
|           vendorSha256 = "sha256-sEzWUeVk5GB0H41wrp12P8sBWRjg0FHUX6ABDEEBqK8="; | ||||
| 
 | ||||
|           nativeBuildInputs = [pkgs.installShellFiles]; | ||||
|         }; | ||||
| 
 | ||||
|         golangci-lint = prev.golangci-lint.override { | ||||
|           # Override https://github.com/NixOS/nixpkgs/pull/166801 which changed this | ||||
|           # to buildGo118Module because it does not build on Darwin. | ||||
|           inherit (prev) buildGoModule; | ||||
|         }; | ||||
| 
 | ||||
|         # golangci-lint = | ||||
|         #   pkgs.buildGo117Module rec { | ||||
|         #     pname = "golangci-lint"; | ||||
|         #     version = "1.46.2"; | ||||
|         # | ||||
|         #     src = pkgs.fetchFromGitHub { | ||||
|         #       owner = "golangci"; | ||||
|         #       repo = "golangci-lint"; | ||||
|         #       rev = "v${version}"; | ||||
|         #       sha256 = "sha256-7sDAwWz+qoB/ngeH35tsJ5FZUfAQvQsU6kU9rUHIHMk="; | ||||
|         #     }; | ||||
|         # | ||||
|         #     vendorSha256 = "sha256-w38OKN6HPoz37utG/2QSPMai55IRDXCIIymeMe6ogIU="; | ||||
|         # | ||||
|         #     nativeBuildInputs = [ pkgs.installShellFiles ]; | ||||
|         #   }; | ||||
| 
 | ||||
|         protoc-gen-grpc-gateway = pkgs.buildGoModule rec { | ||||
|           pname = "grpc-gateway"; | ||||
|           version = "2.8.0"; | ||||
| 
 | ||||
|           src = pkgs.fetchFromGitHub { | ||||
|             owner = "grpc-ecosystem"; | ||||
|             repo = "grpc-gateway"; | ||||
|             rev = "v${version}"; | ||||
|             sha256 = "sha256-8eBBBYJ+tBjB2fgPMX/ZlbN3eeS75e8TAZYOKXs6hcg="; | ||||
|           }; | ||||
| 
 | ||||
|           vendorSha256 = "sha256-AW2Gn/mlZyLMwF+NpK59eiOmQrYWW/9HPjbunYc9Ij4="; | ||||
| 
 | ||||
|           nativeBuildInputs = [pkgs.installShellFiles]; | ||||
| 
 | ||||
|           subPackages = ["protoc-gen-grpc-gateway" "protoc-gen-openapiv2"]; | ||||
|         }; | ||||
|       }; | ||||
|     } | ||||
|     // flake-utils.lib.eachDefaultSystem | ||||
|     (system: let | ||||
|       pkgs = import nixpkgs { | ||||
|         overlays = [self.overlay]; | ||||
|         inherit system; | ||||
|       }; | ||||
|       buildDeps = with pkgs; [git go_1_19 gnumake]; | ||||
|       devDeps = with pkgs; | ||||
|         buildDeps | ||||
|         ++ [ | ||||
|           golangci-lint | ||||
|           golines | ||||
|           nodePackages.prettier | ||||
| 
 | ||||
|           # Protobuf dependencies | ||||
|           protobuf | ||||
|           protoc-gen-go | ||||
|           protoc-gen-go-grpc | ||||
|           protoc-gen-grpc-gateway | ||||
|           buf | ||||
|           clang-tools # clang-format | ||||
|         ]; | ||||
| 
 | ||||
|       # Add entry to build a docker image with headscale | ||||
|       # caveat: only works on Linux | ||||
|       # | ||||
|       # Usage: | ||||
|       # nix build .#headscale-docker | ||||
|       # docker load < result | ||||
|       headscale-docker = pkgs.dockerTools.buildLayeredImage { | ||||
|         name = "headscale"; | ||||
|         tag = headscaleVersion; | ||||
|         contents = [pkgs.headscale]; | ||||
|         config.Entrypoint = [(pkgs.headscale + "/bin/headscale")]; | ||||
|       }; | ||||
|     in rec { | ||||
|       # `nix develop` | ||||
|       devShell = pkgs.mkShell {buildInputs = devDeps;}; | ||||
| 
 | ||||
|       # `nix build` | ||||
|       packages = with pkgs; { | ||||
|         inherit headscale; | ||||
|         inherit headscale-docker; | ||||
|       }; | ||||
| 
 | ||||
|       defaultPackage = pkgs.headscale; | ||||
| 
 | ||||
|       # `nix run` | ||||
|       apps.headscale = flake-utils.lib.mkApp { | ||||
|         drv = packages.headscale; | ||||
|       }; | ||||
|       defaultApp = apps.headscale; | ||||
| 
 | ||||
|       checks = { | ||||
|         format = | ||||
|           pkgs.runCommand "check-format" | ||||
|           { | ||||
|             buildInputs = with pkgs; [ | ||||
|               gnumake | ||||
|               nixpkgs-fmt | ||||
|               golangci-lint | ||||
|               golines | ||||
|               nodePackages.prettier | ||||
| 
 | ||||
|               # Protobuf dependencies | ||||
|               protobuf | ||||
|               protoc-gen-go | ||||
|               protoc-gen-go-grpc | ||||
|               protoc-gen-grpc-gateway | ||||
|               buf | ||||
|               clang-tools # clang-format | ||||
|               golines | ||||
|               clang-tools | ||||
|             ]; | ||||
| 
 | ||||
| 
 | ||||
|           # Add entry to build a docker image with headscale | ||||
|           # caveat: only works on Linux | ||||
|           # | ||||
|           # Usage: | ||||
|           # nix build .#headscale-docker | ||||
|           # docker load < result | ||||
|           headscale-docker = pkgs.dockerTools.buildLayeredImage { | ||||
|             name = "headscale"; | ||||
|             tag = headscaleVersion; | ||||
|             contents = [ pkgs.headscale ]; | ||||
|             config.Entrypoint = [ (pkgs.headscale + "/bin/headscale") ]; | ||||
|           }; | ||||
|         in | ||||
|         rec { | ||||
|           # `nix develop` | ||||
|           devShell = pkgs.mkShell { buildInputs = devDeps; }; | ||||
| 
 | ||||
|           # `nix build` | ||||
|           packages = with pkgs; { | ||||
|             inherit headscale; | ||||
|             inherit headscale-docker; | ||||
|           }; | ||||
| 
 | ||||
|           defaultPackage = pkgs.headscale; | ||||
| 
 | ||||
|           # `nix run` | ||||
|           apps.headscale = flake-utils.lib.mkApp { | ||||
|             drv = packages.headscale; | ||||
|           }; | ||||
|           defaultApp = apps.headscale; | ||||
| 
 | ||||
|           checks = { | ||||
|             format = pkgs.runCommand "check-format" | ||||
|               { | ||||
|                 buildInputs = with pkgs; [ | ||||
|                   gnumake | ||||
|                   nixpkgs-fmt | ||||
|                   golangci-lint | ||||
|                   nodePackages.prettier | ||||
|                   golines | ||||
|                   clang-tools | ||||
|                 ]; | ||||
|               } '' | ||||
|               ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt ${./.} | ||||
|               ${pkgs.golangci-lint}/bin/golangci-lint run --fix --timeout 10m | ||||
|               ${pkgs.nodePackages.prettier}/bin/prettier --write '**/**.{ts,js,md,yaml,yml,sass,css,scss,html}' | ||||
|               ${pkgs.golines}/bin/golines --max-len=88 --base-formatter=gofumpt -w ${./.} | ||||
|               ${pkgs.clang-tools}/bin/clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}" -i ${./.} | ||||
|             ''; | ||||
|           }; | ||||
| 
 | ||||
| 
 | ||||
|         }); | ||||
|           } '' | ||||
|             ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt ${./.} | ||||
|             ${pkgs.golangci-lint}/bin/golangci-lint run --fix --timeout 10m | ||||
|             ${pkgs.nodePackages.prettier}/bin/prettier --write '**/**.{ts,js,md,yaml,yml,sass,css,scss,html}' | ||||
|             ${pkgs.golines}/bin/golines --max-len=88 --base-formatter=gofumpt -w ${./.} | ||||
|             ${pkgs.clang-tools}/bin/clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}" -i ${./.} | ||||
|           ''; | ||||
|       }; | ||||
|     }); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user