Skip to content
This repository was archived by the owner on Jan 8, 2024. It is now read-only.

Commit c55a869

Browse files
authored
Merge pull request #2555 from jonringer/refactor-nix
Refactor flake and overlay
2 parents ea5b0e1 + edabcd5 commit c55a869

8 files changed

+191
-145
lines changed

Diff for: flake.nix

+12-12
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55
inputs.flake-utils.url = "github:numtide/flake-utils";
66

77
outputs = { self, nixpkgs, flake-utils }:
8-
flake-utils.lib.eachDefaultSystem (system:
8+
let
9+
localOverlay = import ./nix/overlay.nix;
10+
overlays = [ localOverlay ];
11+
in flake-utils.lib.eachDefaultSystem (system:
912
let
10-
overlay = (import ./nix/overlay.nix) nixpkgs;
11-
1213
pkgs = import nixpkgs {
13-
inherit system;
14-
overlays = [ overlay ];
15-
};
16-
17-
waypoint = pkgs.callPackage ./nix/waypoint.nix {
18-
inherit pkgs;
14+
inherit system overlays;
1915
};
2016
in {
21-
devShell = waypoint.shell;
22-
}
23-
);
17+
legacyPackages = pkgs;
18+
inherit (pkgs) devShell;
19+
}) // {
20+
# platform independent attrs
21+
overlay = final: prev: (nixpkgs.lib.composeManyExtensions overlays) final prev;
22+
inherit overlays;
23+
};
2424
}

Diff for: nix/go-changelog.nix

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{ buildGoModule, fetchFromGitHub }:
2+
3+
buildGoModule rec {
4+
pname = "go-changelog";
5+
version = "56335215ce3a8676ba7153be7c444daadcb132c7";
6+
7+
src = fetchFromGitHub {
8+
owner = "hashicorp";
9+
repo = "go-changelog";
10+
rev = "56335215ce3a8676ba7153be7c444daadcb132c7";
11+
sha256 = "0z6ysz4x1rim09g9knbc5x5mrasfk6mzsi0h7jn8q4i035y1gg2j";
12+
};
13+
14+
vendorSha256 = "1pahh64ayr885kv9rd5i4vh4a6hi1w583wch9n1ncvnckznzsdbg";
15+
16+
subPackages = [ "cmd/changelog-build" ];
17+
}

Diff for: nix/go-mockery.nix

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{ buildGoModule, fetchFromGitHub }:
2+
3+
buildGoModule rec {
4+
pname = "go-mockery";
5+
version = "1.1.2";
6+
7+
src = fetchFromGitHub {
8+
owner = "vektra";
9+
repo = "mockery";
10+
rev = "v${version}";
11+
sha256 = "16yqhr92n5s0svk31yy3k42764fas694mnqqcny633yi0wqb876a";
12+
};
13+
14+
buildFlagsArray = ''
15+
-ldflags=
16+
-s -w -X github.com/vektra/mockery/mockery.SemVer=${version}
17+
'';
18+
19+
modSha256 = "0wyzfmhk7plazadbi26rzq3w9cmvqz2dd5jsl6kamw53ps5yh536";
20+
vendorSha256 = "0fai4hs3q822dg36a2zrxb191f71xdpafapn6ymi1w9dx68navcb";
21+
22+
subPackages = [ "cmd/mockery" ];
23+
}

Diff for: nix/go-protobuf-json.nix

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{ buildGoModule, fetchFromGitHub }:
2+
3+
buildGoModule rec {
4+
pname = "go-protobuf-json";
5+
version = "069933b8c8344593ed8905d46d59c6647c886f47";
6+
7+
src = fetchFromGitHub {
8+
owner = "mitchellh";
9+
repo = "protoc-gen-go-json";
10+
rev = "069933b8c8344593ed8905d46d59c6647c886f47";
11+
sha256 = "1q5s2pfdxxzvdqghmbw3y2w5nl7wa4x15ngahfarjhahwqsbfsx4";
12+
};
13+
14+
modSha256 = "01wrk2qhrh74nkv6davfifdz7jq6fcl3snn4w2g7vr8p0incdlcf";
15+
vendorSha256 = "1hx31gr3l2f0nc8316c9ipmk1xx435g732msr5b344rcfcfrlaxh";
16+
}

Diff for: nix/go-protobuf.nix

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{ buildGoModule, fetchFromGitHub }:
2+
3+
buildGoModule rec {
4+
pname = "go-protobuf";
5+
version = "1.5.2";
6+
7+
src = fetchFromGitHub {
8+
owner = "golang";
9+
repo = "protobuf";
10+
rev = "v${version}";
11+
sha256 = "1mh5fyim42dn821nsd3afnmgscrzzhn3h8rag635d2jnr23r1zhk";
12+
};
13+
14+
modSha256 = "0lnk2zpl6y9vnq6h3l42ssghq6iqvmixd86g2drpa4z8xxk116wf";
15+
vendorSha256 = "1qbndn7k0qqwxqk4ynkjrih7f7h56z1jq2yd62clhj95rca67hh9";
16+
17+
subPackages = [ "protoc-gen-go" ];
18+
}

Diff for: nix/go-tools.nix

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{ buildGoModule, fetchFromGitHub }:
2+
3+
buildGoModule rec {
4+
pname = "go-tools";
5+
version = "35839b7038afa36a6c000733552daa1f5ce1e838";
6+
7+
src = fetchFromGitHub {
8+
owner = "golang";
9+
repo = "tools";
10+
rev = "35839b7038afa36a6c000733552daa1f5ce1e838";
11+
sha256 = "1gnqf62s7arqk807gadp4rd2diz1g0v2khwv9wsb50y8k9k4dfqs";
12+
};
13+
14+
modSha256 = "1pijbkp7a9n2naicg21ydii6xc0g4jm5bw42lljwaks7211ag8k9";
15+
vendorSha256 = "0i2fhaj2fd8ii4av1qx87wjkngip9vih8v3i9yr3h28hkq68zkm5";
16+
17+
subPackages = [ "cmd/stringer" ];
18+
19+
# This has to be enabled because the stringer tests recompile itself
20+
# so it needs a valid reference to `go`
21+
allowGoReference = true;
22+
}

Diff for: nix/overlay.nix

+8-92
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,16 @@
1-
nixpkgs: final: prev: {
1+
final: prev: {
22
# This is the pinned protoc version we have for this project.
3-
protobufPin = prev.callPackage (
4-
nixpkgs + "/pkgs/development/libraries/protobuf/generic-v3.nix"
5-
) {
6-
version = "3.15.8";
7-
sha256 = "1q3k8axhq6g8fqczmd6kbgzpdplrrgygppym4x1l99lzhplx9rqv";
8-
};
3+
protobufPin = prev.protobuf3_15;
94

10-
go-protobuf = prev.buildGoModule rec {
11-
pname = "go-protobuf";
12-
version = "v1.5.2";
5+
devShell = final.callPackage ./waypoint.nix { };
136

14-
src = prev.fetchFromGitHub {
15-
owner = "golang";
16-
repo = "protobuf";
17-
rev = "v1.5.2";
18-
sha256 = "1mh5fyim42dn821nsd3afnmgscrzzhn3h8rag635d2jnr23r1zhk";
19-
};
7+
go-protobuf = prev.callPackage ./go-protobuf.nix { };
208

21-
modSha256 = "0lnk2zpl6y9vnq6h3l42ssghq6iqvmixd86g2drpa4z8xxk116wf";
22-
vendorSha256 = "1qbndn7k0qqwxqk4ynkjrih7f7h56z1jq2yd62clhj95rca67hh9";
9+
go-protobuf-json = prev.callPackage ./go-protobuf-json.nix { };
2310

24-
subPackages = [ "protoc-gen-go" ];
25-
};
11+
go-tools = prev.callPackage ./go-tools.nix { };
2612

27-
go-protobuf-json = prev.buildGoModule rec {
28-
pname = "go-protobuf-json";
29-
version = "069933b8c8344593ed8905d46d59c6647c886f47";
13+
go-mockery = prev.callPackage ./go-mockery.nix { };
3014

31-
src = prev.fetchFromGitHub {
32-
owner = "mitchellh";
33-
repo = "protoc-gen-go-json";
34-
rev = "069933b8c8344593ed8905d46d59c6647c886f47";
35-
sha256 = "1q5s2pfdxxzvdqghmbw3y2w5nl7wa4x15ngahfarjhahwqsbfsx4";
36-
};
37-
38-
modSha256 = "01wrk2qhrh74nkv6davfifdz7jq6fcl3snn4w2g7vr8p0incdlcf";
39-
vendorSha256 = "1hx31gr3l2f0nc8316c9ipmk1xx435g732msr5b344rcfcfrlaxh";
40-
};
41-
42-
go-tools = prev.buildGoModule rec {
43-
pname = "go-tools";
44-
version = "35839b7038afa36a6c000733552daa1f5ce1e838";
45-
46-
src = prev.fetchFromGitHub {
47-
owner = "golang";
48-
repo = "tools";
49-
rev = "35839b7038afa36a6c000733552daa1f5ce1e838";
50-
sha256 = "1gnqf62s7arqk807gadp4rd2diz1g0v2khwv9wsb50y8k9k4dfqs";
51-
};
52-
53-
modSha256 = "1pijbkp7a9n2naicg21ydii6xc0g4jm5bw42lljwaks7211ag8k9";
54-
vendorSha256 = "0i2fhaj2fd8ii4av1qx87wjkngip9vih8v3i9yr3h28hkq68zkm5";
55-
56-
subPackages = [ "cmd/stringer" ];
57-
58-
# This has to be enabled because the stringer tests recompile itself
59-
# so it needs a valid reference to `go`
60-
allowGoReference = true;
61-
};
62-
63-
go-mockery = prev.buildGoModule rec {
64-
pname = "go-mockery";
65-
version = "1.1.2";
66-
67-
src = prev.fetchFromGitHub {
68-
owner = "vektra";
69-
repo = "mockery";
70-
rev = "v${version}";
71-
sha256 = "16yqhr92n5s0svk31yy3k42764fas694mnqqcny633yi0wqb876a";
72-
};
73-
74-
buildFlagsArray = ''
75-
-ldflags=
76-
-s -w -X github.com/vektra/mockery/mockery.SemVer=${version}
77-
'';
78-
79-
modSha256 = "0wyzfmhk7plazadbi26rzq3w9cmvqz2dd5jsl6kamw53ps5yh536";
80-
vendorSha256 = "0fai4hs3q822dg36a2zrxb191f71xdpafapn6ymi1w9dx68navcb";
81-
82-
subPackages = [ "cmd/mockery" ];
83-
};
84-
85-
go-changelog = prev.buildGoModule rec {
86-
pname = "go-changelog";
87-
version = "56335215ce3a8676ba7153be7c444daadcb132c7";
88-
89-
src = prev.fetchFromGitHub {
90-
owner = "hashicorp";
91-
repo = "go-changelog";
92-
rev = "56335215ce3a8676ba7153be7c444daadcb132c7";
93-
sha256 = "0z6ysz4x1rim09g9knbc5x5mrasfk6mzsi0h7jn8q4i035y1gg2j";
94-
};
95-
96-
vendorSha256 = "1pahh64ayr885kv9rd5i4vh4a6hi1w583wch9n1ncvnckznzsdbg";
97-
98-
subPackages = [ "cmd/changelog-build" ];
99-
};
15+
go-changelog = prev.callPackage ./go-changelog.nix { };
10016
}

Diff for: nix/waypoint.nix

+75-41
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,81 @@
1-
{ pkgs }: {
2-
shell = pkgs.mkShell rec {
3-
name = "waypoint";
1+
{ lib
2+
, stdenv
3+
, autoconf
4+
, autogen
5+
, automake
6+
, docker-compose
7+
, doctl
8+
, go
9+
, go-bindata
10+
, go-changelog
11+
, go-mockery
12+
, go-protobuf
13+
, go-protobuf-json
14+
, go-tools
15+
, grpcurl
16+
, kubectl
17+
, libpng
18+
, libtool
19+
, minikube
20+
, mkShell
21+
, nasm
22+
, nodejs-16_x
23+
, pkg-config
24+
, postgresql_12
25+
, protobufPin
26+
, protoc-gen-doc
27+
, zlib
28+
}:
429

5-
buildInputs = [
6-
pkgs.docker-compose
7-
pkgs.go
8-
pkgs.go-bindata
9-
pkgs.grpcurl
10-
pkgs.nodejs-16_x
11-
pkgs.postgresql_12
12-
pkgs.protoc-gen-doc
30+
mkShell rec {
31+
name = "waypoint";
1332

14-
# Custom packages
15-
pkgs.protobufPin
16-
pkgs.go-protobuf
17-
pkgs.go-protobuf-json
18-
pkgs.go-tools
19-
pkgs.go-mockery
20-
pkgs.go-changelog
33+
packages = [
34+
docker-compose
35+
go
36+
go-bindata
37+
grpcurl
38+
nodejs-16_x
39+
postgresql_12
40+
protoc-gen-doc
2141

22-
# For testing
23-
pkgs.doctl
24-
pkgs.kubectl
25-
] ++ (with pkgs; [
26-
# Needed for website/
27-
pkgconfig autoconf automake libtool nasm autogen zlib libpng
28-
]) ++ (if pkgs.stdenv.isLinux then [
29-
# On Linux we use minikube as the primary k8s testing platform
30-
pkgs.minikube
31-
] else []);
42+
# Custom packages, added to overlay
43+
protobufPin
44+
go-protobuf
45+
go-protobuf-json
46+
go-tools
47+
go-mockery
48+
go-changelog
3249

33-
# workaround for npm/gulp dep compilation
34-
# https://github.com/imagemin/optipng-bin/issues/108
35-
shellHook = ''
36-
LD=$CC
37-
'';
50+
# For testing
51+
doctl
52+
kubectl
3853

39-
# Extra env vars
40-
PGHOST = "localhost";
41-
PGPORT = "5432";
42-
PGDATABASE = "noop";
43-
PGUSER = "postgres";
44-
PGPASSWORD = "postgres";
45-
DATABASE_URL = "postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE}?sslmode=disable";
46-
};
54+
# Needed for website/
55+
autoconf
56+
autogen
57+
automake
58+
libpng
59+
libtool
60+
nasm
61+
pkg-config
62+
zlib
63+
] ++ lib.optionals stdenv.isLinux [
64+
# On Linux we use minikube as the primary k8s testing platform
65+
minikube
66+
];
67+
68+
# workaround for npm/gulp dep compilation
69+
# https://github.com/imagemin/optipng-bin/issues/108
70+
shellHook = ''
71+
LD=$CC
72+
'';
73+
74+
# Extra env vars
75+
PGHOST = "localhost";
76+
PGPORT = "5432";
77+
PGDATABASE = "noop";
78+
PGUSER = "postgres";
79+
PGPASSWORD = "postgres";
80+
DATABASE_URL = "postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE}?sslmode=disable";
4781
}

0 commit comments

Comments
 (0)