From 98e7842c26693c679dd1c8d9c9444e798253ffd0 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Mon, 26 Sep 2022 10:47:49 +0200 Subject: [PATCH 1/5] Add nix overlay to flake Signed-off-by: Kristoffer Dalby --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 7927221e75..ad21f09c5d 100644 --- a/flake.nix +++ b/flake.nix @@ -126,6 +126,8 @@ }; in rec { + overlays.default = self.overlay; + # `nix develop` devShell = pkgs.mkShell { buildInputs = devDeps; }; From d0e945fdd7c09427f0cdcbdb11d742d9b48a72c4 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Mon, 26 Sep 2022 10:48:37 +0200 Subject: [PATCH 2/5] _ unused variable Signed-off-by: Kristoffer Dalby --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ad21f09c5d..6b92981741 100644 --- a/flake.nix +++ b/flake.nix @@ -11,7 +11,7 @@ headscaleVersion = if (self ? shortRev) then self.shortRev else "dev"; in { - overlay = final: prev: + overlay = _: prev: let pkgs = nixpkgs.legacyPackages.${prev.system}; in From 804d9d8196b35af6e99dc2b24dedc23e7ed42837 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Mon, 26 Sep 2022 10:48:59 +0200 Subject: [PATCH 3/5] Format nix with alejandra Signed-off-by: Kristoffer Dalby --- flake.nix | 298 +++++++++++++++++++++++++++--------------------------- 1 file changed, 149 insertions(+), 149 deletions(-) diff --git a/flake.nix b/flake.nix index 6b92981741..27521c7554 100644 --- a/flake.nix +++ b/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; - - # 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" ]; - }; + 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="; + + 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; - }; - 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 - ]; + golines = pkgs.buildGoModule rec { + pname = "golines"; + version = "0.9.0"; - # 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") ]; + src = pkgs.fetchFromGitHub { + owner = "segmentio"; + repo = "golines"; + rev = "v${version}"; + sha256 = "sha256-BUXEg+4r9L/gqe4DhTlhN55P3jWt7ZyWFQycO6QePrw="; }; - in - rec { - overlays.default = self.overlay; - # `nix develop` - devShell = pkgs.mkShell { buildInputs = devDeps; }; + vendorSha256 = "sha256-sEzWUeVk5GB0H41wrp12P8sBWRjg0FHUX6ABDEEBqK8="; - # `nix build` - packages = with pkgs; { - inherit headscale; - inherit headscale-docker; - }; + nativeBuildInputs = [pkgs.installShellFiles]; + }; - defaultPackage = pkgs.headscale; + 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; + }; - # `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 ${./.} - ''; + # 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 + 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 ${./.} + ''; + }; + }); } From 94be5ca2952140624dd9cd2fadfb9518f0cd9639 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Mon, 26 Sep 2022 10:50:41 +0200 Subject: [PATCH 4/5] Nix update Signed-off-by: Kristoffer Dalby --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 45b4c6d704..92184e8c3d 100644 --- a/flake.lock +++ b/flake.lock @@ -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": { From fc6a1e15fc814822397a0a1a88534992752d49c2 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Mon, 26 Sep 2022 11:13:42 +0200 Subject: [PATCH 5/5] Revert overlay overlapping Signed-off-by: Kristoffer Dalby --- flake.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/flake.nix b/flake.nix index 27521c7554..050fd747a8 100644 --- a/flake.nix +++ b/flake.nix @@ -127,8 +127,6 @@ config.Entrypoint = [(pkgs.headscale + "/bin/headscale")]; }; in rec { - overlays.default = self.overlay; - # `nix develop` devShell = pkgs.mkShell {buildInputs = devDeps;};