diff --git a/overlay/default.nix b/overlay/default.nix index 280b786..f85bf1d 100644 --- a/overlay/default.nix +++ b/overlay/default.nix @@ -7,6 +7,7 @@ nixpkgs.lib.composeManyExtensions [ colmena.overlays.default rust-overlay.overlays.default niri.overlays.niri + self.overlays.mimalloc self.overlays.modern-minimal self.overlays.fixes ] final prev diff --git a/overlay/mimalloc.nix b/overlay/mimalloc.nix new file mode 100644 index 0000000..34bcad2 --- /dev/null +++ b/overlay/mimalloc.nix @@ -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" ]; +}))