From bfd637707cf26129d7af35d3e30fc96cf3bd744b Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Mon, 10 Mar 2025 10:15:45 +0100 Subject: [PATCH 01/12] [Desktop/Developer] add nix language server (nil), and nixfmt --- desktop/developer.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/desktop/developer.nix b/desktop/developer.nix index e82ac2b..9ed5329 100644 --- a/desktop/developer.nix +++ b/desktop/developer.nix @@ -53,6 +53,9 @@ in { gopls # Go ccls # C/C++ lua-language-server # Lua + nil # Nix + + nixfmt-rfc-style (hiPrio clinfo) # hiPrio to override HIP's clinfo binutils From 9c2853288f9393a94be1c8bea35dfb31f472b68d Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Wed, 12 Mar 2025 09:55:19 +0100 Subject: [PATCH 02/12] [Boot] Remove outdated backports and try to make patches work again --- boot.nix | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/boot.nix b/boot.nix index 5ecf91e..fe61058 100644 --- a/boot.nix +++ b/boot.nix @@ -25,15 +25,15 @@ let enableRTGroupSched = { name = "enable-rt-group-sched"; patch = null; - extraConfig = '' - RT_GROUP_SCHED y - ''; + extraConfigStructuredConfig = with lib.kernel; { + RT_GROUP_SCHED = yes; + }; }; enableEnergyModel = { name = "enable-energy-model"; - patch = null; extraConfig = '' - ENERGY_MODEL y - ''; + patch = null; extraStructuredConfig = with lib.kernel; { + ENERGY_MODEL = yes; + }; }; removeKernelDRM = { name = "remove-kernel-drm"; @@ -41,24 +41,7 @@ let }; - amdClusterId = { - name = "cluster-id-amd"; - patch = pkgs.fetchpatch { - url = "https://lkml.org/lkml/diff/2023/4/10/479/1"; - hash = "sha256-bpe+iWYQldlGiIlWr4XPbIBPQBetEjfRKZ0Te2I14dk="; - }; - extraConfig = '' - SCHED_CLUSTER y - ''; - }; backports = { - zenLLCIdle = { - name = "zen-llc-idle"; - patch = pkgs.fetchpatch { - url = "https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/patch/?id=c5214e13ad60bd0022bab45cbac2c9db6bc1e0d4"; - hash = "sha256-3uDieD7XOaMM5yqOSvyLNsr2OqBxXESB5sM2gnGYoWk="; - }; - }; }; optimizeForCPUArch = arch: let @@ -150,7 +133,6 @@ in { patches = { amdClusterId.enable = mkEnableOption "Energy Model"; - zenLLCIdle.enable = mkEnableOption "Zen LLC Idle patch"; }; efi = mkOption rec { @@ -316,16 +298,25 @@ in { else baseKernel ; + moddedKernel = myLib.optimizations.addAttrs noDRMKernel moddedKernelAttrs; + + #patchedKernel = + # if (length config.boot.kernelPatches > 0) then + # moddedKernel.override (old: { + # structuredExtraConfig = mergeAttrs [ (old.structuredExtraConfig or {}) config.boot.kernelPatches.extraStructuredConfig ]; + # }) + # else + # moddedKernel + # ; + in mkOverride 2 (pkgs.linuxPackagesFor moddedKernel); kernelPatches = [] ++ optional cfg.x32abi.enable customKernelPatches.enableX32ABI ++ optional cfg.rtGroupSched.enable customKernelPatches.enableRTGroupSched ++ optional cfg.energyModel.enable customKernelPatches.enableEnergyModel - ++ optional (cfg.patches.amdClusterId.enable && kernelVersionOlder "6.4") customKernelPatches.amdClusterId - ++ optional (cfg.patches.zenLLCIdle.enable && kernelVersionOlder "6.5") customKernelPatches.backports.zenLLCIdle ++ optional (isXanmod cfg.kernel.package && config.aviallon.optimizations.enable) (customKernelPatches.optimizeForCPUArch config.aviallon.general.cpu.arch) ++ optional config.aviallon.optimizations.enable customKernelPatches.zstd ; From c2eef29a53a773f208c6eaa2119c934552799d6d Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Mon, 17 Mar 2025 16:22:35 +0100 Subject: [PATCH 03/12] [Desktop/Multimedia] disable jamesdsp --- desktop/multimedia.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/multimedia.nix b/desktop/multimedia.nix index 8408936..bfce41f 100644 --- a/desktop/multimedia.nix +++ b/desktop/multimedia.nix @@ -32,7 +32,7 @@ in { yt-dlp jellyfin-media-player - jamesdsp # Audio post-processing + #jamesdsp # Audio post-processing ]; nixpkgs.overlays = [(final: prev: { From 1dcf6ec9b36590cf447aac1e5c3ec9476c63dc25 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Mon, 17 Mar 2025 21:59:05 +0100 Subject: [PATCH 04/12] [Desktop/Games] use gamescope from config --- desktop/games.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/desktop/games.nix b/desktop/games.nix index 22eb0f8..c1a5382 100644 --- a/desktop/games.nix +++ b/desktop/games.nix @@ -101,9 +101,12 @@ in { }; programs.steam.package = pkgs.steam.override { - extraPkgs = pkgs: [ - pkgs.gamescope - ]; + #extraPkgs = pkgs: [ + # config.programs.gamescope.package + #]; + #extraLibraries = pkgs: [ + # config.programs.gamescope.package.override { enableExecutable = false; enableWsi = true; } + #]; }; aviallon.programs.allowUnfreeList = [ From ed142942dbae47f1d58b67e94d4fd1c86d24fdce Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 25 Mar 2025 23:36:22 +0100 Subject: [PATCH 05/12] [Desktop/Games] make HDR work in Steam --- desktop/games.nix | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/desktop/games.nix b/desktop/games.nix index c1a5382..4b6131b 100644 --- a/desktop/games.nix +++ b/desktop/games.nix @@ -71,12 +71,13 @@ in { enable = true; }; security.wrappers = { - my-gamemoderun = { - source = "${pkgs.gamemode}/bin/gamemoderun"; + gamemoded = { + source = "${pkgs.gamemode}/bin/gamemoded"; owner = "root"; - group = "gamers"; - capabilities = "cap_sys_nice=eip"; - permissions = "u+rx,g+x,o="; + group = "root"; + #group = "gamers"; + capabilities = "cap_sys_nice+pie"; + #permissions = "u+rx,g+x,o="; }; }; @@ -100,10 +101,13 @@ in { MESA_GLSL_CACHE_DIR = "${XDG_CACHE_HOME}/mesa"; }; + hardware.graphics.extraPackages = [ pkgs.gamescope-wsi ]; + hardware.graphics.extraPackages32 = [ pkgs.pkgsi686Linux.gamescope-wsi ]; + programs.steam.package = pkgs.steam.override { - #extraPkgs = pkgs: [ - # config.programs.gamescope.package - #]; + extraPkgs = pkgs: [ + config.programs.gamescope.package + ]; #extraLibraries = pkgs: [ # config.programs.gamescope.package.override { enableExecutable = false; enableWsi = true; } #]; From 413a4a93f1775318b6fc0e163c511114f5bcc204 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 25 Mar 2025 23:36:54 +0100 Subject: [PATCH 06/12] [Hardware/AMD] only enable Zenpower for Zen[1-3] with kernel 6.13 and earlier --- hardware/amd/cpu.nix | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/hardware/amd/cpu.nix b/hardware/amd/cpu.nix index 0dc264b..c6a97a0 100644 --- a/hardware/amd/cpu.nix +++ b/hardware/amd/cpu.nix @@ -2,7 +2,7 @@ with lib; let generalCfg = config.aviallon.general; - cpuIsZen = ! isNull (builtins.match "znver[0-9]" generalCfg.cpu.arch); + enableZenpower = (! isNull (builtins.match "znver[1-3]" generalCfg.cpu.arch)) && (versionOlder kernelVersion "6.13"); kernelVersion = getVersion config.boot.kernelPackages.kernel; in { config = mkIf (generalCfg.cpu.vendor == "amd") { @@ -27,20 +27,18 @@ in { "amd_pstate.shared_memory" = 1; }; - aviallon.boot.patches = mkIf config.aviallon.optimizations.enable { - amdClusterId.enable = mkIf cpuIsZen true; - }; + aviallon.boot.patches = mkIf config.aviallon.optimizations.enable {}; boot.extraModulePackages = with config.boot.kernelPackages; [] - ++ optional cpuIsZen (info "enable zenpower for Ryzen CPU" zenpower) + ++ optional enableZenpower (info "enable zenpower for Ryzen [1-3] CPU" zenpower) ; boot.kernelModules = [] - ++ optional cpuIsZen "zenpower" + ++ optional enableZenpower "zenpower" ; boot.blacklistedKernelModules = [] - ++ optional cpuIsZen "k10-temp" # Superseded by zenpower + ++ optional enableZenpower "k10-temp" # Superseded by zenpower ; }; } From 0fea61e5a194c62ffa557669b718cef0387ee5d0 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 25 Mar 2025 23:52:24 +0100 Subject: [PATCH 07/12] [Hardware/AMD/ROCm] fix infinite recursion with magma --- hardware/amd/rocm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/amd/rocm.nix b/hardware/amd/rocm.nix index 290bb6d..b98b641 100644 --- a/hardware/amd/rocm.nix +++ b/hardware/amd/rocm.nix @@ -90,7 +90,7 @@ in { blender = final.blender-hip; blender-cpu = prev.blender; - magma = final.magma-hip; + magma = prev.magma-hip; magma-cpu = prev.magma; #autoDetectGPU = autoDetectGPU final; From bd7ae5346e841341468a964b94d7616eea18d04e Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Wed, 26 Mar 2025 00:00:15 +0100 Subject: [PATCH 08/12] [Hardware/AMD/ROCm] remove old hacks --- hardware/amd/rocm.nix | 37 +------------------------------------ 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/hardware/amd/rocm.nix b/hardware/amd/rocm.nix index b98b641..1908603 100644 --- a/hardware/amd/rocm.nix +++ b/hardware/amd/rocm.nix @@ -87,43 +87,8 @@ in { nixpkgs.overlays = mkBefore [(final: prev: { # Overlay Blender to use the HIP build if we have a compatible AMD GPU - blender = final.blender-hip; + blender = prev.blender-hip; blender-cpu = prev.blender; - - magma = prev.magma-hip; - magma-cpu = prev.magma; - - #autoDetectGPU = autoDetectGPU final; - - rocmPackages = prev.rocmPackages // rec { - rocmlir = prev.rocmPackages.rocmlir.overrideAttrs (finalAttrs: previousAttrs: { - patches = [ - (prev.fetchpatch { - name = "fix-mlir-Conversion-RocMLIRPasses.h.inc-not-found.patch"; - url = "https://patch-diff.githubusercontent.com/raw/ROCm/rocMLIR/pull/1640.patch"; - hash = "sha256-przg1AQZTiVbVd/4wA+KlGXu/RISO5n11FBkmUFKRSA="; - }) - ]; - }); - - rocblas = prev.hello; - - rocmlir-rock = rocmlir.override { - buildRockCompiler = true; - }; - - miopen = prev.rocmPackages.miopen.override { rocmlir = rocmlir-rock; }; - - migraphx = prev.rocmPackages.migraphx.override { rocmlir = rocmlir-rock; }; - - tensile = prev.rocmPackages.tensile.overrideAttrs (old: { - # TODO: remove this workaround once https://github.com/NixOS/nixpkgs/pull/323869 - # does not cause issues anymore, or at least replace it with a better orkaround - setupHook = writeText "setup-hook" '' - export TENSILE_ROCM_ASSEMBLER_PATH="${stdenv.cc.cc}/bin/clang++"; - ''; - }); - }; })]; }; } From e8b457bc1c12b560740bb8cb664b657966ccd18b Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Wed, 26 Mar 2025 00:09:43 +0100 Subject: [PATCH 09/12] [Hardware/AMD/ROCm] override rocmPackages.clr with custom supported architectures --- hardware/amd/rocm.nix | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/hardware/amd/rocm.nix b/hardware/amd/rocm.nix index 1908603..11a78f7 100644 --- a/hardware/amd/rocm.nix +++ b/hardware/amd/rocm.nix @@ -47,6 +47,26 @@ in { example = "gfx902"; type = types.string; }; + gpuTargets = mkOption { + description = "Override supported GPU ISAs in some ROCm packages."; + default = [ "803" + "900" + "906:xnack-" + "908:xnack-" + "90a:xnack+" "90a:xnack-" + "940" + "941" + "942" + "1010" + "1012" + "1030" + "1031" + "1100" + "1101" + "1102" ]; + example = [ "900" "1031" ]; + type = with types; nullOr (listOf string); + }; }; config = mkIf (cfg.enable && localCfg.enable) { @@ -86,9 +106,15 @@ in { nixpkgs.config.rocmSupport = true; nixpkgs.overlays = mkBefore [(final: prev: { - # Overlay Blender to use the HIP build if we have a compatible AMD GPU - blender = prev.blender-hip; - blender-cpu = prev.blender; - })]; + rocmPackages = prev.rocmPackages // { + clr = prev.rocmPackages.clr.overrideAttrs (oldAttrs: { + passthru = oldAttrs.passthru // { + # We cannot use this for each ROCm library, as each defines their own supported targets + # See: https://github.com/ROCm/ROCm/blob/77cbac4abab13046ee93d8b5bf410684caf91145/README.md#library-target-matrix + gpuTargets = lib.forEach localCfg.gpuTargets (target: "gfx${target}"); + }; + }); + }; + })]; }; } From 124f0a34c7b4f45a46dab49c60e9e9a9ff9cd849 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Wed, 26 Mar 2025 00:22:18 +0100 Subject: [PATCH 10/12] [Hardware/AMD/ROCm] add rocblas override --- hardware/amd/rocm.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hardware/amd/rocm.nix b/hardware/amd/rocm.nix index 11a78f7..710b896 100644 --- a/hardware/amd/rocm.nix +++ b/hardware/amd/rocm.nix @@ -114,6 +114,10 @@ in { gpuTargets = lib.forEach localCfg.gpuTargets (target: "gfx${target}"); }; }); + + rocblas = prev.rocmPackages.rocblas.override { + gpuTargets = lib.forEach localCfg.gpuTargets (target: "gfx${target}"); + }; }; })]; }; From 8f5ac9487e19afa7a94dd51eed8af42c5edd0fa5 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Wed, 26 Mar 2025 19:31:35 +0100 Subject: [PATCH 11/12] [Hardware/AMD/ROCm] overlay rocm 6 on rocm 5 --- hardware/amd/rocm.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hardware/amd/rocm.nix b/hardware/amd/rocm.nix index 710b896..1bbde77 100644 --- a/hardware/amd/rocm.nix +++ b/hardware/amd/rocm.nix @@ -74,7 +74,7 @@ in { [ rocmPackages.rocm-smi #rocmPackages.meta.rocm-ml-libraries - rocmPackages.meta.rocm-hip-runtime + #rocmPackages.meta.rocm-hip-runtime #pkgs.autoDetectGPU ] ++ optionals devCfg.enable [ @@ -106,6 +106,7 @@ in { nixpkgs.config.rocmSupport = true; nixpkgs.overlays = mkBefore [(final: prev: { + rocmPackages_5 = final.rocmPackages; rocmPackages = prev.rocmPackages // { clr = prev.rocmPackages.clr.overrideAttrs (oldAttrs: { passthru = oldAttrs.passthru // { From d38185f99457718228e7f59f987ad85ef7b778a0 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 15 Apr 2025 20:23:56 +0200 Subject: [PATCH 12/12] [Desktop/Games] remove gamemoded custom wrapper, as it caused a NASTY bug locking me out of my system --- desktop/games.nix | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/desktop/games.nix b/desktop/games.nix index 4b6131b..4c799e5 100644 --- a/desktop/games.nix +++ b/desktop/games.nix @@ -70,16 +70,6 @@ in { }; enable = true; }; - security.wrappers = { - gamemoded = { - source = "${pkgs.gamemode}/bin/gamemoded"; - owner = "root"; - group = "root"; - #group = "gamers"; - capabilities = "cap_sys_nice+pie"; - #permissions = "u+rx,g+x,o="; - }; - }; users.groups.gamers = { };