[Package/Optimizations] Fix optimization helpers and add automatic parallelization options

This commit is contained in:
Antoine Viallon 2022-10-07 22:52:27 +02:00
parent e05ab538c3
commit 3167a6b678
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
2 changed files with 11 additions and 9 deletions

View file

@ -5,12 +5,12 @@ let
desktopCfg = config.aviallon.desktop; desktopCfg = config.aviallon.desktop;
generalCfg = config.aviallon.general; generalCfg = config.aviallon.general;
_optimizeAttrs = level: _optimizeAttrs = { lto ? false , ... }@attrs:
traceValSeq ((myLib.optimizations.makeOptimizationFlags { traceValSeq ((myLib.optimizations.makeOptimizationFlags ({
inherit level; inherit lto;
cpuArch = generalCfg.cpuArch; cpuArch = generalCfg.cpuArch;
extraCFlags = cfg.extraCompileFlags; extraCFlags = cfg.extraCompileFlags;
}) // { } // attrs)) // {
preConfigure = '' preConfigure = ''
cmakeFlagsArray+=( cmakeFlagsArray+=(
"-DCMAKE_CXX_FLAGS=$CXXFLAGS" "-DCMAKE_CXX_FLAGS=$CXXFLAGS"
@ -22,11 +22,11 @@ let
}); });
optimizedStdenv = pkgs.addAttrsToDerivation _optimizeAttrs pkgs.fastStdenv; optimizedStdenv = pkgs.addAttrsToDerivation _optimizeAttrs pkgs.fastStdenv;
optimizePkg = {level ? "normal" }: pkg: optimizePkg = {level ? "normal", parallelize ? null, ... }@attrs: pkg:
( (
if (hasAttr "stdenv" pkg.override.__functionArgs) then if (hasAttr "stdenv" pkg.override.__functionArgs) then
trace "Optimized ${getName pkg} with stdenv" pkg.override { trace "Optimized ${getName pkg} with stdenv at level ${level} (parallelize: ${toString parallelize})" pkg.override {
stdenv = pkgs.addAttrsToDerivation (_optimizeAttrs level) pkgs.fastStdenv; stdenv = pkgs.addAttrsToDerivation (_optimizeAttrs (attrs // {inherit level parallelize; })) pkgs.fastStdenv;
} }
else else
warn "Can't optimize ${getName pkg}" pkg warn "Can't optimize ${getName pkg}" pkg
@ -52,7 +52,9 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
nixpkgs.overlays = mkBefore [ nixpkgs.overlays = mkBefore [
(self: super: { (self: super: {
htop = optimizePkg {} super.htop; opensshOptimized = optimizePkg { level = "very-unsafe"; lto = true; } super.openssh;
#libxslt = optimizePkg { level = "unsafe"; parallelize = generalCfg.cores; lto = true; } super.libxslt;
htop = optimizePkg {parallelize = generalCfg.cores; lto = true; } super.htop;
nano = optimizePkg {level = "unsafe";} super.nano; nano = optimizePkg {level = "unsafe";} super.nano;
virtmanager = optimizePkg {} super.virtmanager; virtmanager = optimizePkg {} super.virtmanager;
libsForQt5 = super.libsForQt5.overrideScope' (mself: msuper: { libsForQt5 = super.libsForQt5.overrideScope' (mself: msuper: {

View file

@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, myLib, ... }:
with lib; with lib;
let let
cfg = config.aviallon.programs; cfg = config.aviallon.programs;