Skip to content

Commit 13edaae

Browse files
committed
PR: Improve nix flake
1 parent 931c6f9 commit 13edaae

File tree

1 file changed

+86
-19
lines changed

1 file changed

+86
-19
lines changed

flake.nix

Lines changed: 86 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,23 @@
44

55
flake-utils.url = "github:numtide/flake-utils";
66

7-
nixpkgs.url = "github:nixos/nixpkgs/24.05";
8-
stable.url = "github:nixos/nixpkgs/24.05";
7+
nixpkgs.url = "github:nixos/nixpkgs/release-24.11";
8+
stable.url = "github:nixos/nixpkgs/release-24.11";
99
nixpkgs.follows = "opam-nix/nixpkgs";
10+
emacs-overlay.url = "github:nix-community/emacs-overlay";
1011

1112
prover_cvc4_1_8 = {
1213
url = "github:CVC4/CVC4-archived/1.8";
1314
flake = false;
1415
};
1516

16-
prover_cvc5_1_0_9 = {
17-
url = "github:cvc5/cvc5/cvc5-1.0.9";
17+
prover_cvc5_1_3_0 = {
18+
url = "github:cvc5/cvc5/cvc5-1.3.0";
1819
flake = false;
1920
};
2021

21-
prover_z3_4_12_6 = {
22-
url = "github:z3prover/z3/z3-4.12.6";
22+
prover_z3_4_14_1 = {
23+
url = "github:z3prover/z3/z3-4.14.1";
2324
flake = false;
2425
};
2526
};
@@ -40,7 +41,7 @@
4041
};
4142

4243
query = devPackagesQuery // {
43-
ocaml-base-compiler = "4.14.2";
44+
ocaml-base-compiler = "5.4.0";
4445
};
4546

4647
scope = on.buildOpamProject' { } ./. query;
@@ -54,8 +55,19 @@
5455
'';
5556
doNixSupport = false;
5657
});
57-
conf-pkg-config = prev.conf-pkg-config.overrideAttrs (oa: {
58-
nativeBuildInputs = oa.nativeBuildInputs ++ [pkgs.pkg-config];
58+
conf-zlib = prev.conf-zlib.overrideAttrs (finalAttrs: prevAttrs: rec {
59+
nativeBuildInputs = prevAttrs.nativeBuildInputs
60+
++ (with pkgs; [ pkg-config ]);
61+
});
62+
conf-git = prev.conf-git.overrideAttrs (finalAttrs: prevAttrs: rec {
63+
nativeBuildInputs = prevAttrs.nativeBuildInputs
64+
++ (with pkgs; [ git ]);
65+
buildInputs = prevAttrs.buildInputs
66+
++ (with pkgs; [ git ]);
67+
});
68+
alt-ergo = prev.alt-ergo.overrideAttrs (finalAttrs: prevAttrs: rec {
69+
nativeBuildInputs = prevAttrs.nativeBuildInputs
70+
++ (with pkgs; [ darwin.sigtool ]);
5971
});
6072
};
6173

@@ -78,20 +90,47 @@
7890
src = inputs."${"prover_" + pkg + "_" + builtins.replaceStrings ["."] ["_"] version}";
7991
});
8092

81-
mkAltErgo = version:
82-
((on.queryToScope { } (query // { alt-ergo = version; })).overrideScope overlay).alt-ergo;
93+
mkAltErgo = version: (on.queryToScope { } (query // { alt-ergo = version; })).alt-ergo;
94+
95+
devTools =
96+
(let
97+
overlays = [ (import inputs.emacs-overlay) ];
98+
pkgs = import nixpkgs {
99+
inherit system overlays;
100+
};
101+
in
102+
(with pkgs; [
103+
(emacsWithPackagesFromUsePackage {
104+
config = ''(setq easycrypt-prog-name "ec.native")'';
105+
defaultInitFile = true;
106+
alwaysEnsure = true;
107+
package = pkgs.emacs;
108+
extraEmacsPackages = epkgs: [ epkgs.proof-general ];
109+
})
110+
bashInteractive
111+
git
112+
difftastic
113+
])
114+
++
115+
pkgs.lib.optionals (!pkgs.stdenv.isDarwin) [ pkgs.pperf-tools ]
116+
);
83117
in rec {
84118
legacyPackages = scope';
85119

86120
packages = rec {
87-
z3 = mkProverPackage "z3" "4.12.6";
121+
z3 = mkProverPackage "z3" "4.14.1";
88122
cvc4 = mkProverPackage "cvc4" "1.8";
89-
cvc5 = mkProverPackage "cvc5" "1.0.9";
90-
altErgo = mkAltErgo "2.4.3";
123+
cvc5 = mkProverPackage "cvc5" "1.3.0";
124+
altErgo = mkAltErgo "2.4.2";
91125

92126
provers = pkgs.symlinkJoin {
93127
name = "provers";
94-
paths = [ altErgo z3 cvc4 cvc5 ];
128+
paths = [
129+
# altErgo
130+
z3
131+
# cvc4
132+
cvc5
133+
];
95134
};
96135

97136
with_provers = pkgs.symlinkJoin {
@@ -102,12 +141,40 @@
102141
default = main;
103142
};
104143

105-
devShells.default = pkgs.mkShell {
144+
devShells.barebones = pkgs.mkShell {
106145
inputsFrom = [ scope'.easycrypt ];
107146
buildInputs =
108-
devPackages
109-
++ [ pkgs.git scope'.why3 packages.provers ]
110-
++ (with pkgs.python3Packages; [ pyyaml ]);
147+
devPackages
148+
++ [ scope'.why3 ]
149+
++ (with pkgs.python3Packages; [ pyyaml ]);
111150
};
151+
152+
devShells.noProvers = pkgs.mkShell rec {
153+
inputsFrom = [ scope'.easycrypt ];
154+
buildInputs =
155+
devPackages
156+
++ devTools
157+
++ [ scope'.why3 ]
158+
++ (with pkgs.python3Packages; [ pyyaml ]);
159+
SHELL = ''${pkgs.bashInteractive + "/bin/bash"}'';
160+
shellHook = builtins.replaceStrings ["\n"] [" "] ''
161+
export SHELL=${SHELL} &&
162+
export PATH=$PATH:`realpath .`
163+
'';
164+
};
165+
166+
devShells.withDevTools = pkgs.mkShell rec {
167+
inputsFrom = [ scope'.easycrypt ];
168+
buildInputs =
169+
devPackages
170+
++ devTools
171+
++ [ scope'.why3 packages.provers ]
172+
++ (with pkgs.python3Packages; [ pyyaml ]);
173+
SHELL = ''${pkgs.bashInteractive + "/bin/bash"}'';
174+
shellHook = builtins.replaceStrings ["\n"] [" "] ''
175+
export SHELL=${SHELL} &&
176+
export PATH=$PATH:`realpath .`
177+
'';
178+
};
112179
});
113180
}

0 commit comments

Comments
 (0)