Configure mimalloc and link certain packages directly

This commit is contained in:
Mikael 2024-10-08 23:15:30 +02:00
parent 19e472e29e
commit d66b4d4396
Signed by: mikael
SSH key fingerprint: SHA256:21QyD2Meiot7jOUVitIR5YkGB/XuXdCvLW1hE6dsri0
2 changed files with 65 additions and 0 deletions

View file

@ -7,6 +7,7 @@ nixpkgs.lib.composeManyExtensions [
colmena.overlays.default colmena.overlays.default
rust-overlay.overlays.default rust-overlay.overlays.default
niri.overlays.niri niri.overlays.niri
self.overlays.mimalloc
self.overlays.modern-minimal self.overlays.modern-minimal
self.overlays.fixes self.overlays.fixes
] final prev ] final prev

64
overlay/mimalloc.nix Normal file
View file

@ -0,0 +1,64 @@
{ nixpkgs, ... }: final: prev:
let
inherit (nixpkgs) lib;
in {
mimalloc = (prev.mimalloc.overrideAttrs (prevAttrs: {
postPatch = prevAttrs.postPatch or "" + ''
sed -E -i \
-e 's/(\{ )1(, UNINIT, MI_OPTION_LEGACY\(purge_decommits,reset_decommits\) \})/\10\2/' \
-e 's/(\{ )0(, UNINIT, MI_OPTION_LEGACY\(allow_large_os_pages,large_os_pages\) \})/\11\2/' \
-e 's/(\{ )10(, UNINIT, MI_OPTION_LEGACY\(purge_delay,reset_delay\) \})/\150\2/' \
src/options.c
'';
})).override {
secureBuild = true;
};
firefox = final.wrapFirefox final.firefox-unwrapped { };
mpv = final.mpv-unwrapped.wrapper { mpv = final.mpv-unwrapped; };
thunderbird = final.wrapThunderbird final.thunderbird-unwrapped { };
} // lib.genAttrs [
"bat"
"bottom"
"cryptsetup"
"dbus-broker"
"fd"
"firefox-unwrapped"
"fractal"
"fuzzel"
"helix"
"kitty"
"mako"
"mpv-unwrapped"
"niri"
"nix"
"nushell"
"openssh"
"pipewire"
"pueue"
"ripgrep"
"sd"
"sioyek"
"sudo-rs"
"systemd"
"swayidle"
"swaylock"
"swaylock-effects"
"thunderbird-unwrapped"
"uutils-coreutils"
"uutils-coreutils-noprefix"
"waybar"
"wirepluber"
"xdg-desktop-portal-gnome"
"xdg-desktop-portal-gtk"
] (pkg: prev.${pkg}.overrideAttrs (prevAttrs: {
buildInputs = prevAttrs.buildInputs or [ ] ++ [ final.mimalloc ];
env = prevAttrs.env or { } // lib.optionalAttrs (prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = toString (lib.toList prevAttrs.env.NIX_LDFLAGS or [ ] ++ [ "-lmimalloc" ]);
};
NIX_RUSTFLAGS = lib.toList prevAttrs.NIX_RUSTFLAGS or [ ] ++ [ "-C link-arg=-lmimalloc" ];
} // lib.optionalAttrs (!prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = lib.toList prevAttrs.NIX_LDFLAGS or [ ] ++ [ "-lmimalloc" ];
}))