Skip to content

Commit 4a7b315

Browse files
committed
fix: mold + clang stdenv
1 parent a85dd5d commit 4a7b315

2 files changed

Lines changed: 46 additions & 15 deletions

File tree

flake.nix

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,15 @@
290290
};
291291
});
292292
influxdb2 = inputs.nixpkgs-master.legacyPackages.x86_64-linux.influxdb2;
293+
openssl = prev.openssl.overrideAttrs (oa: {
294+
doCheck = false;
295+
});
296+
ghostty = prev.ghostty.overrideAttrs (oa: {
297+
doCheck = false;
298+
});
299+
mpfr = prev.mpfr.overrideAttrs (oa: {
300+
doCheck = false;
301+
});
293302
usbmuxd2 = prev.usbmuxd2.overrideAttrs (oldAttrs: {
294303
src = prev.fetchFromGitHub {
295304
owner = "tihmstar";

utility-functions.nix

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ in
4242
warnUndeclaredOptions = true;
4343
fetchedSourceNameDefault = "full";
4444
doCheckByDefault = false;
45+
allowUnsupportedSystem = true;
4546

4647
# RUSTFLAGS = "-C target-cpu=znver3 ";
4748
# permittedInsecurePackages = [ "nix-2.15.3" ];
@@ -52,30 +53,51 @@ in
5253
{ pkgs }:
5354
let
5455
clangStdenv = pkgs.llvmPackages_latest.stdenv;
55-
moldStdenv = pkgs.stdenvAdapters.useMoldLinker clangStdenv;
56-
withPackRelativeRelocs =
56+
57+
customStdenv =
5758
stdenv:
59+
let
60+
bintools = stdenv.cc.bintools.override {
61+
extraBuildCommands = ''
62+
wrap ld.mold ${pkgs.path}/pkgs/build-support/bintools-wrapper/ld-wrapper.sh ${pkgs.buildPackages.mold}/bin/ld.mold
63+
wrap ${stdenv.cc.bintools.targetPrefix}ld.mold ${pkgs.path}/pkgs/build-support/bintools-wrapper/ld-wrapper.sh ${pkgs.buildPackages.mold}/bin/ld.mold
64+
wrap ${stdenv.cc.bintools.targetPrefix}ld ${pkgs.path}/pkgs/build-support/bintools-wrapper/ld-wrapper.sh ${pkgs.buildPackages.mold}/bin/ld.mold
65+
'';
66+
};
67+
in
5868
stdenv.override (old: {
69+
allowedRequisites = null;
70+
cc = stdenv.cc.override { inherit bintools; };
71+
5972
mkDerivationFromStdenv =
6073
stdenvSelf:
6174
let
62-
mkDerivationSuper =
63-
(old.mkDerivationFromStdenv or (import (pkgs.outPath + "/pkgs/stdenv/generic/make-derivation.nix") {
64-
inherit (pkgs)
65-
lib
66-
config
67-
;
68-
})
69-
)
70-
stdenvSelf;
75+
defaultMkDerivationFromStdenv =
76+
stdenv:
77+
(import (pkgs.path + "/pkgs/stdenv/generic/make-derivation.nix") {
78+
inherit (pkgs) lib config;
79+
} stdenv).mkDerivation;
80+
mkDerivationSuper = (old.mkDerivationFromStdenv or defaultMkDerivationFromStdenv) stdenvSelf;
7181
in
7282
args:
73-
(mkDerivationSuper args).overrideAttrs (prevAttrs: {
74-
NIX_CFLAGS_LINK = toString (prevAttrs.NIX_CFLAGS_LINK or "") + " -Wl,-z,pack-relative-relocs,-pipe";
75-
});
83+
(mkDerivationSuper args).overrideAttrs (
84+
prevAttrs:
85+
if (prevAttrs.__structuredAttrs or false) || (prevAttrs ? env.NIX_CFLAGS_LINK) then
86+
{
87+
env = (prevAttrs.env or { }) // {
88+
NIX_CFLAGS_LINK =
89+
toString (prevAttrs.env.NIX_CFLAGS_LINK or "") + " -fuse-ld=mold -Wl,-z,pack-relative-relocs";
90+
};
91+
}
92+
else
93+
{
94+
NIX_CFLAGS_LINK =
95+
toString (prevAttrs.NIX_CFLAGS_LINK or "") + " -fuse-ld=mold -Wl,-z,pack-relative-relocs";
96+
}
97+
);
7698
});
7799
in
78-
withPackRelativeRelocs moldStdenv;
100+
customStdenv clangStdenv;
79101
# replaceStdenv = ({ pkgs }: pkgs.clangStdenv);
80102
};
81103
};

0 commit comments

Comments
 (0)