-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoutputs.nix
66 lines (54 loc) · 1.43 KB
/
outputs.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
pkgs:
rec {
release = import ./zig-release.nix;
zig = pkgs.callPackage ./zig.nix { inherit release; };
devShell = pkgs.mkShell {
nativeBuildInputs = zig.nativeBuildInputs ++ (with pkgs; [
# ninja is faster than make which is useful for incremental builds
ninja
]);
inherit (zig)
buildInputs
hardeningDisable;
inZigDevEnv = 1;
};
zigPrebuilt = pkgs.stdenv.mkDerivation {
pname = "zig";
inherit (release) version;
src = let
inherit (pkgs.stdenv.hostPlatform) system;
zigSystem = zigSystems.${system};
in
pkgs.fetchurl {
url = "https://ziglang.org/builds/zig-${zigSystem}-${release.version}.tar.xz";
inherit (release.binaries.${system}) sha256;
};
dontConfigure = true;
dontBuild = true;
dontFixup = true;
installPhase = ''
mkdir -p $out/bin
cp zig $out/bin
cp -r lib/ $out
'';
};
# Contains only `zig`, optimized for fast building
zigPrebuiltNoLib = pkgs.runCommand "zig-${release.version}" {} ''
mkdir $out
tar xfJ ${zigPrebuilt.src} -C $out --strip-components=1 --wildcards --no-wildcards-match-slash '*/zig'
'';
zigSystems = {
x86_64-linux = "linux-x86_64";
aarch64_linux = "linux-aarch64";
};
bootstrapEnv = pkgs.symlinkJoin {
name = "zig-bootstrap";
paths = with pkgs; [
gcc
cmake
ninja
python3
];
preferLocalBuild = true;
};
}