{ config, lib, pkgs, pkgs-unoptimized, ... }: { imports = [ ]; config = lib.mkMerge [ { } (lib.mkIf (!config.me.buildingIso) { nix.settings.system-features = lib.mkForce [ "gccarch-znver4" "gccarch-skylake" # "gccarch-alderlake" missing WAITPKG "gccarch-x86-64-v3" "gccarch-x86-64-v4" "benchmark" "big-parallel" "kvm" "nixos-test" ]; # Keep ALL dependencies so we can rebuild offline. This DRASTICALLY increase disk usage, but disk space is cheap. # system.includeBuildDependencies = true; # This also should enable building offline? TODO: test. # nix.extraOptions = '' # keep-outputs = true # keep-derivations = true # ''; nixpkgs.hostPlatform = { gcc.arch = "znver4"; gcc.tune = "znver4"; system = "x86_64-linux"; }; nixpkgs.overlays = [ ( final: prev: let optimizeWithFlags = pkg: flags: pkg.overrideAttrs (old: { NIX_CFLAGS_COMPILE = [ (old.NIX_CFLAGS_COMPILE or "") ] ++ flags; }); addConfig = additionalConfig: pkg: pkg.override (oldconfig: { structuredExtraConfig = pkg.structuredExtraConfig // additionalConfig; }); in { linux_znver4 = addConfig { # Full preemption PREEMPT = lib.mkOverride 60 lib.kernel.yes; PREEMPT_VOLUNTARY = lib.mkOverride 60 lib.kernel.no; # Google's BBRv3 TCP congestion Control TCP_CONG_BBR = lib.kernel.yes; DEFAULT_BBR = lib.kernel.yes; # Preemptive Full Tickless Kernel at 300Hz HZ = lib.kernel.freeform "300"; HZ_300 = lib.kernel.yes; HZ_1000 = lib.kernel.no; } ( optimizeWithFlags prev.linux_6_13 [ "-march=znver4" "-mtune=znver4" ] ); # gsl = prev.gsl.overrideAttrs (old: { # # gsl tests fails when optimizations are enabled. # # > FAIL: cholesky_invert unscaled hilbert ( 4, 4)[0,2]: 2.55795384873636067e-13 0 # # > (2.55795384873636067e-13 observed vs 0 expected) [28259614] # doCheck = false; # }); } ) (final: prev: { haskellPackages = prev.haskellPackages.extend ( final': prev': { crypton = pkgs-unoptimized.haskellPackages.crypton; } ); }) # (final: prev: { # haskell = prev.haskell // { # packageOverrides = final.lib.composeExtensions prev.haskell.packageOverrides ( # final': prev': { # crypton = pkgs-unoptimized.haskellPackages.crypton; # } # ); # }; # }) (final: prev: { redis = pkgs-unoptimized.redis; gsl = pkgs-unoptimized.gsl; }) ]; boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_znver4; }) (lib.mkIf (config.me.buildingIso) { boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_6_13; boot.supportedFilesystems.zfs = true; }) ]; }