mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Format nix with alejandra
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
		
							parent
							
								
									d0e945fdd7
								
							
						
					
					
						commit
						804d9d8196
					
				
							
								
								
									
										306
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										306
									
								
								flake.nix
									
									
									
									
									
								
							@ -6,165 +6,165 @@
 | 
			
		||||
    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 = _: 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 {
 | 
			
		||||
      overlays.default = self.overlay;
 | 
			
		||||
 | 
			
		||||
      # `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 {
 | 
			
		||||
          overlays.default = self.overlay;
 | 
			
		||||
 | 
			
		||||
          # `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