Skip to content

Commit 18f2bf3

Browse files
authored
Merge pull request #11678 from MinaProtocol/refactor-split-overlays
Nix: refactor by splitting out overlays per-language
2 parents 91f9501 + b1dbbe7 commit 18f2bf3

File tree

5 files changed

+66
-58
lines changed

5 files changed

+66
-58
lines changed

flake.nix

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@
3939
, opam-nix, opam-repository, nixpkgs-mozilla, flake-buildkite-pipeline, ...
4040
}:
4141
{
42-
overlay = import ./nix/overlay.nix;
42+
overlays = {
43+
misc = import ./nix/misc.nix;
44+
rust = import ./nix/rust.nix;
45+
go = import ./nix/go.nix;
46+
};
4347
nixosModules.mina = import ./nix/modules/mina.nix inputs;
4448
nixosConfigurations.container = nixpkgs.lib.nixosSystem {
4549
system = "x86_64-linux";
@@ -150,14 +154,13 @@
150154
} // utils.lib.eachDefaultSystem (system:
151155
let
152156
pkgs = nixpkgs.legacyPackages.${system}.extend
153-
(nixpkgs.lib.composeManyExtensions [
157+
(nixpkgs.lib.composeManyExtensions ([
154158
(import nixpkgs-mozilla)
155-
(import ./nix/overlay.nix)
156159
(final: prev: {
157160
ocamlPackages_mina = requireSubmodules
158161
(import ./nix/ocaml.nix { inherit inputs pkgs; });
159162
})
160-
]);
163+
] ++ builtins.attrValues self.overlays));
161164
inherit (pkgs) lib;
162165
mix-to-nix = pkgs.callPackage inputs.mix-to-nix { };
163166
nix-npm-buildPackage = pkgs.callPackage inputs.nix-npm-buildPackage { };
Lines changed: 12 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,6 @@
1-
final: prev:
2-
let pkgs = final;
3-
in {
4-
sodium-static =
5-
pkgs.libsodium.overrideAttrs (o: { dontDisableStatic = true; });
6-
7-
rocksdb = (prev.rocksdb.override {
8-
snappy = null;
9-
lz4 = null;
10-
zstd = null;
11-
bzip2 = null;
12-
}).overrideAttrs (_: {
13-
cmakeFlags = [
14-
"-DPORTABLE=1"
15-
"-DWITH_JEMALLOC=0"
16-
"-DWITH_JNI=0"
17-
"-DWITH_BENCHMARK_TOOLS=0"
18-
"-DWITH_TESTS=1"
19-
"-DWITH_TOOLS=0"
20-
"-DWITH_BZ2=0"
21-
"-DWITH_LZ4=0"
22-
"-DWITH_SNAPPY=0"
23-
"-DWITH_ZLIB=0"
24-
"-DWITH_ZSTD=0"
25-
"-DWITH_GFLAGS=0"
26-
"-DUSE_RTTI=1"
27-
];
28-
});
29-
30-
# Dependencies which aren't in nixpkgs and local packages which need networking to build
31-
32-
marlin_plonk_bindings_stubs = pkgs.rustPlatform.buildRustPackage {
33-
pname = "marlin_plonk_bindings_stubs";
34-
version = "0.1.0";
35-
srcs = [ ../src/lib/marlin_plonk_bindings/stubs ../src/lib/marlin ];
36-
nativeBuildInputs = [ pkgs.ocamlPackages_mina.ocaml ];
37-
sourceRoot = "stubs";
38-
postUnpack = ''
39-
mkdir -p marlin_plonk_bindings
40-
mv stubs marlin_plonk_bindings
41-
export sourceRoot=marlin_plonk_bindings/stubs
42-
'';
43-
cargoLock.lockFile = ../src/lib/marlin_plonk_bindings/stubs/Cargo.lock;
44-
};
45-
46-
go-capnproto2 = pkgs.buildGoModule rec {
1+
# An overlay defining Go parts&dependencies of Mina
2+
final: prev: {
3+
go-capnproto2 = final.buildGoModule rec {
474
pname = "capnpc-go";
485
version = "v3.0.0-alpha.1";
496
vendorSha256 = "sha256-jbX/nnlnQoItFXFL/MZZKe4zAjM/EA3q+URJG8I3hok=";
@@ -55,21 +12,22 @@ in {
5512
};
5613
};
5714

58-
libp2p_ipc_go = pkgs.stdenv.mkDerivation {
15+
libp2p_ipc_go = final.stdenv.mkDerivation {
5916
# todo: buildgomodule?
6017
name = "libp2p_ipc-go";
61-
buildInputs = [ pkgs.capnproto pkgs.go-capnproto2 ];
18+
buildInputs = [ final.capnproto final.go-capnproto2 ];
6219
src = ../src/libp2p_ipc;
6320
buildPhase = ''
64-
capnp compile -ogo -I${pkgs.go-capnproto2.src}/std libp2p_ipc.capnp
21+
capnp compile -ogo -I${final.go-capnproto2.src}/std libp2p_ipc.capnp
6522
'';
6623
installPhase = ''
6724
mkdir $out
6825
cp go.mod go.sum *.go $out/
6926
'';
7027
};
28+
7129
# Jobs/Test/Libp2pUnitTest
72-
libp2p_helper = pkgs.buildGoModule {
30+
libp2p_helper = final.buildGoModule {
7331
pname = "libp2p_helper";
7432
version = "0.1";
7533
src = ../src/app/libp2p_helper/src;
@@ -84,9 +42,9 @@ in {
8442
== "8b90b3cee4be058eeca0bc9a5a2ee88d62cada9fb09785e0ced5e5cea7893192" then
8543
"sha256-MXLfE122UCNizqvGUu6WlThh1rnZueTqirCzaEWmbno="
8644
else
87-
pkgs.lib.warn
45+
final.lib.warn
8846
"Please update the hashes in ${__curPos.file}#${toString __curPos.line}"
89-
pkgs.lib.fakeHash;
47+
final.lib.fakeHash;
9048
NO_MDNS_TEST = 1; # no multicast support inside the nix sandbox
9149
overrideModAttrs = n: {
9250
# remove libp2p_ipc from go.mod, inject it back in postconfigure
@@ -96,8 +54,8 @@ in {
9654
};
9755
postConfigure = ''
9856
chmod +w vendor
99-
cp -r --reflink=auto ${pkgs.libp2p_ipc_go}/ vendor/libp2p_ipc
57+
cp -r --reflink=auto ${final.libp2p_ipc_go}/ vendor/libp2p_ipc
10058
sed -i 's/.*libp2p_ipc.*//' go.mod
10159
'';
10260
};
103-
}
61+
}

nix/misc.nix

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Overlay containing various overrides for nixpkgs packages used by Mina
2+
final: prev:
3+
{
4+
sodium-static =
5+
final.libsodium.overrideAttrs (o: { dontDisableStatic = true; });
6+
7+
rocksdb = (prev.rocksdb.override {
8+
snappy = null;
9+
lz4 = null;
10+
zstd = null;
11+
bzip2 = null;
12+
}).overrideAttrs (_: {
13+
cmakeFlags = [
14+
"-DPORTABLE=1"
15+
"-DWITH_JEMALLOC=0"
16+
"-DWITH_JNI=0"
17+
"-DWITH_BENCHMARK_TOOLS=0"
18+
"-DWITH_TESTS=1"
19+
"-DWITH_TOOLS=0"
20+
"-DWITH_BZ2=0"
21+
"-DWITH_LZ4=0"
22+
"-DWITH_SNAPPY=0"
23+
"-DWITH_ZLIB=0"
24+
"-DWITH_ZSTD=0"
25+
"-DWITH_GFLAGS=0"
26+
"-DUSE_RTTI=1"
27+
];
28+
});
29+
30+
}

nix/ocaml.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# A set defining OCaml parts&dependencies of Mina
12
{ inputs, ... }@args:
23
let
34
opam-nix = inputs.opam-nix.lib.${pkgs.system};

nix/rust.nix

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# An overlay defining Rust parts&dependencies of Mina
2+
final: prev: {
3+
marlin_plonk_bindings_stubs = final.rustPlatform.buildRustPackage {
4+
pname = "marlin_plonk_bindings_stubs";
5+
version = "0.1.0";
6+
srcs = [ ../src/lib/marlin_plonk_bindings/stubs ../src/lib/marlin ];
7+
nativeBuildInputs = [ final.ocamlPackages_mina.ocaml ];
8+
sourceRoot = "stubs";
9+
postUnpack = ''
10+
mkdir -p marlin_plonk_bindings
11+
mv stubs marlin_plonk_bindings
12+
export sourceRoot=marlin_plonk_bindings/stubs
13+
'';
14+
cargoLock.lockFile = ../src/lib/marlin_plonk_bindings/stubs/Cargo.lock;
15+
};
16+
}

0 commit comments

Comments
 (0)