Selectively build packages with LLVM

This commit is contained in:
Mikael Voss 2024-10-12 20:44:15 +02:00
parent 9d78035368
commit 51c93e0cc3
No known key found for this signature in database
2 changed files with 143 additions and 0 deletions

View file

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

142
overlay/llvm.nix Normal file
View file

@ -0,0 +1,142 @@
{ nixpkgs, ... }: final: prev:
let
inherit (nixpkgs) lib;
inherit (lib) optionalAttrs toList;
inherit (final.llvmPackages_latest) clangUseLLVM bintools;
stdenv = final.overrideCC final.stdenv (clangUseLLVM.override { inherit bintools; });
cflags = [ "-flto" ];
ldflags = [ "--icf=safe" "--lto-O2" ];
override = pkg: (pkg.overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // optionalAttrs (!prevAttrs ? NIX_CFLAGS_COMPILE) {
NIX_CFLAGS_COMPILE = toList prevAttrs.env.NIX_CFLAGS_COMPILE or [ ] ++ cflags |> toString;
} // optionalAttrs (prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = toList prevAttrs.NIX_LDFLAGS or [ ] ++ ldflags |> toString;
};
} // optionalAttrs (prevAttrs ? NIX_CFLAGS_COMPILE) {
NIX_CFLAGS_COMPILE = toList prevAttrs.env.NIX_CFLAGS_COMPILE or [ ] ++ cflags;
} // optionalAttrs (!prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = toList prevAttrs.NIX_LDFLAGS or [ ] ++ ldflags;
})).override { inherit stdenv; };
in lib.genAttrs [
"alsa-lib"
"at-spi2-atk"
"bluez"
"cairo"
"celt"
"colord"
"cryptsetup"
"cups"
"dav1d"
"dbus"
"dbus-broker"
"dconf"
"fdk-aac"
"ffmpeg"
"ffmpeg-headless"
"firefox-unwrapped"
"flac"
"flite"
"fontconfig"
"freetype"
"fribidi"
"fprintd"
"fwupd"
"gdk-pixbuf"
"geoclue2"
"ghostscript"
"giflib"
"gjs"
"glib"
"glslang"
"gtk2"
"gtk3"
"gtk4"
"gtkmm"
"gumbo"
"haproxy"
"harfbuzz"
"imlib2"
"inkscape"
"iwd"
"jasper"
"jbig2dec"
"kitty"
"ladspa"
"lame"
"lcms2"
"libaom"
"libass"
"libblockdev"
"libde256"
"libdrm"
"libepoxy"
"libevdev"
"libevent"
"libexif"
"libglvnd"
"libheif"
"libinput"
"libjpeg"
"libmng"
"libmpeg2"
"libogg"
"libopus"
"libnotify"
"libpng"
"libpng-apng"
"libpulseaudio"
"librsvg"
"libsndfile"
"libtheora"
"libtiff"
"libusb"
"libva"
"libva-minimal"
"libvorbis"
"libvpx"
"libxkbcommon"
"libwebp"
"mesa"
"mimalloc"
"mpv"
"nix"
"nsncd"
"openh264"
"openjpeg"
"openssh"
"pango"
"pcre"
"pipewire"
"pixman"
"polkit"
"poppler"
"qemu-user"
"rtkit"
"sbc"
"sioyek"
"speex"
"spdlog"
"svt-av1"
"swaylock"
"swaylock-effects"
"systemd"
"thunderbird-unwrapped"
"udisks"
"v4l-utils"
"vulkan-headers"
"vulkan-loader"
"waybar"
"wayland"
"wayland-protocols"
"wayland-scanner"
"wireplumber"
"wlroots"
"woff2"
"x264"
"x265"
"xvidcore"
] (pkg: override prev.${pkg})