mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Merge branch 'main' into fix-https-listen
This commit is contained in:
		
						commit
						84c4b0336f
					
				@ -17,11 +17,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "nixpkgs": {
 | 
					    "nixpkgs": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1662019588,
 | 
					        "lastModified": 1664106353,
 | 
				
			||||||
        "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=",
 | 
					        "narHash": "sha256-HMJP80+DSxFySpWyuxz5+iNozS3+dVt0b4n6YMIU5/8=",
 | 
				
			||||||
        "owner": "NixOS",
 | 
					        "owner": "NixOS",
 | 
				
			||||||
        "repo": "nixpkgs",
 | 
					        "repo": "nixpkgs",
 | 
				
			||||||
        "rev": "2da64a81275b68fdad38af669afeda43d401e94b",
 | 
					        "rev": "79d3ca08920364759c63fd3eb562e99c0c17044a",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										302
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										302
									
								
								flake.nix
									
									
									
									
									
								
							@ -6,163 +6,163 @@
 | 
				
			|||||||
    flake-utils.url = "github:numtide/flake-utils";
 | 
					    flake-utils.url = "github:numtide/flake-utils";
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  outputs = { self, nixpkgs, flake-utils, ... }:
 | 
					  outputs = {
 | 
				
			||||||
    let
 | 
					    self,
 | 
				
			||||||
      headscaleVersion = if (self ? shortRev) then self.shortRev else "dev";
 | 
					    nixpkgs,
 | 
				
			||||||
    in
 | 
					    flake-utils,
 | 
				
			||||||
 | 
					    ...
 | 
				
			||||||
 | 
					  }: let
 | 
				
			||||||
 | 
					    headscaleVersion =
 | 
				
			||||||
 | 
					      if (self ? shortRev)
 | 
				
			||||||
 | 
					      then self.shortRev
 | 
				
			||||||
 | 
					      else "dev";
 | 
				
			||||||
 | 
					  in
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      overlay = final: prev:
 | 
					      overlay = _: prev: let
 | 
				
			||||||
        let
 | 
					        pkgs = nixpkgs.legacyPackages.${prev.system};
 | 
				
			||||||
          pkgs = nixpkgs.legacyPackages.${prev.system};
 | 
					      in rec {
 | 
				
			||||||
        in
 | 
					        headscale = pkgs.buildGo119Module rec {
 | 
				
			||||||
        rec {
 | 
					          pname = "headscale";
 | 
				
			||||||
          headscale =
 | 
					          version = headscaleVersion;
 | 
				
			||||||
            pkgs.buildGo119Module rec {
 | 
					          src = pkgs.lib.cleanSource self;
 | 
				
			||||||
              pname = "headscale";
 | 
					 | 
				
			||||||
              version = headscaleVersion;
 | 
					 | 
				
			||||||
              src = pkgs.lib.cleanSource self;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
              # When updating go.mod or go.sum, a new sha will need to be calculated,
 | 
					          # 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.
 | 
					          # update this if you have a mismatch after doing a change to thos files.
 | 
				
			||||||
              vendorSha256 = "sha256-DosFCSiQ5FURbIrt4NcPGkExc84t2MGMqe9XLxNHdIM=";
 | 
					          vendorSha256 = "sha256-DosFCSiQ5FURbIrt4NcPGkExc84t2MGMqe9XLxNHdIM=";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              ldflags = [ "-s" "-w" "-X github.com/juanfont/headscale/cmd/headscale/cli.Version=v${version}" ];
 | 
					          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" ];
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    } // flake-utils.lib.eachDefaultSystem
 | 
					
 | 
				
			||||||
      (system:
 | 
					        golines = pkgs.buildGoModule rec {
 | 
				
			||||||
        let
 | 
					          pname = "golines";
 | 
				
			||||||
          pkgs = import nixpkgs {
 | 
					          version = "0.9.0";
 | 
				
			||||||
            overlays = [ self.overlay ];
 | 
					
 | 
				
			||||||
            inherit system;
 | 
					          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;
 | 
					          vendorSha256 = "sha256-sEzWUeVk5GB0H41wrp12P8sBWRjg0FHUX6ABDEEBqK8=";
 | 
				
			||||||
            buildDeps ++ [
 | 
					
 | 
				
			||||||
 | 
					          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
 | 
					              golangci-lint
 | 
				
			||||||
              golines
 | 
					 | 
				
			||||||
              nodePackages.prettier
 | 
					              nodePackages.prettier
 | 
				
			||||||
 | 
					              golines
 | 
				
			||||||
              # Protobuf dependencies
 | 
					              clang-tools
 | 
				
			||||||
              protobuf
 | 
					 | 
				
			||||||
              protoc-gen-go
 | 
					 | 
				
			||||||
              protoc-gen-go-grpc
 | 
					 | 
				
			||||||
              protoc-gen-grpc-gateway
 | 
					 | 
				
			||||||
              buf
 | 
					 | 
				
			||||||
              clang-tools # clang-format
 | 
					 | 
				
			||||||
            ];
 | 
					            ];
 | 
				
			||||||
 | 
					          } ''
 | 
				
			||||||
 | 
					            ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt ${./.}
 | 
				
			||||||
          # Add entry to build a docker image with headscale
 | 
					            ${pkgs.golangci-lint}/bin/golangci-lint run --fix --timeout 10m
 | 
				
			||||||
          # caveat: only works on Linux
 | 
					            ${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 ${./.}
 | 
				
			||||||
          # Usage:
 | 
					            ${pkgs.clang-tools}/bin/clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}" -i ${./.}
 | 
				
			||||||
          # 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 ${./.}
 | 
					 | 
				
			||||||
            '';
 | 
					 | 
				
			||||||
          };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user