{ 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; 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 addConfig = additionalConfig: pkg: pkg.override (oldconfig: { structuredExtraConfig = pkg.structuredExtraConfig // additionalConfig; }); in { linux_me = 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; } prev.linux_6_13; # 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; crypton-connection = pkgs-unoptimized.haskellPackages.crypton-connection; crypton-x509 = pkgs-unoptimized.haskellPackages.crypton-x509; crypton-x509-store = pkgs-unoptimized.haskellPackages.crypton-x509-store; crypton-x509-system = pkgs-unoptimized.haskellPackages.crypton-x509-system; crypton-x509-validation = pkgs-unoptimized.haskellPackages.crypton-x509-validation; hspec-wai = pkgs-unoptimized.haskellPackages.hspec-wai; http-client-tls = pkgs-unoptimized.haskellPackages.http-client-tls; http2 = pkgs-unoptimized.haskellPackages.http2; pandoc = pkgs-unoptimized.haskellPackages.pandoc; pandoc-cli = pkgs-unoptimized.haskellPackages.pandoc-cli; pandoc-lua-engine = pkgs-unoptimized.haskellPackages.pandoc-lua-engine; pandoc-server = pkgs-unoptimized.haskellPackages.pandoc-server; servant-server = pkgs-unoptimized.haskellPackages.servant-server; tls = pkgs-unoptimized.haskellPackages.tls; wai-app-static = pkgs-unoptimized.haskellPackages.wai-app-static; wai-extra = pkgs-unoptimized.haskellPackages.wai-extra; warp = pkgs-unoptimized.haskellPackages.warp; } ); }) (final: prev: { gsl = pkgs-unoptimized.gsl; redis = pkgs-unoptimized.redis; valkey = pkgs-unoptimized.valkey; }) ]; boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_me; }) (lib.mkIf (config.me.buildingIso) { boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_6_13; boot.supportedFilesystems.zfs = true; }) ]; }