From 21e85fc77b0f5e5303c3708aaa51b8abd208a35e Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sun, 25 Jan 2026 16:19:09 +0100 Subject: [PATCH] feat: improve GPU support for modules --- users/modules/cli/btop.nix | 20 +++++++++++++++----- users/modules/cli/scripts/mp42webm.nix | 2 +- users/modules/default.nix | 9 ++++++++- users/modules/desktop/caelestia.nix | 4 +++- users/modules/media/mpv.nix | 2 +- users/phundrak/host/marpa.nix | 1 + 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/users/modules/cli/btop.nix b/users/modules/cli/btop.nix index a64b156..04f0eed 100644 --- a/users/modules/cli/btop.nix +++ b/users/modules/cli/btop.nix @@ -1,10 +1,20 @@ -{pkgs, ...}: { +{ + pkgs, + config, + ... +}: let + inherit (config.home) gpuType; +in { programs.btop = { enable = true; - package = pkgs.btop.override { - rocmSupport = true; - cudaSupport = true; - }; + package = + if gpuType != null + then + pkgs.btop.override { + rocmSupport = gpuType == "amd"; + cudaSupport = gpuType == "nvidia"; + } + else pkgs.btop; settings = { color_theme = "${pkgs.btop}/share/btop/themes/nord.theme"; cpu_bottom = false; diff --git a/users/modules/cli/scripts/mp42webm.nix b/users/modules/cli/scripts/mp42webm.nix index 6a88463..22dbe19 100644 --- a/users/modules/cli/scripts/mp42webm.nix +++ b/users/modules/cli/scripts/mp42webm.nix @@ -1,3 +1,3 @@ {pkgs, ...}: pkgs.writeShellScriptBin "mp42webm" '' - ${pkgs.ffmpeg}/bin/ffmpeg -i "$1" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "$1".webm'' + ${pkgs.ffmpeg}/bin/ffmpeg -i "$1" -c:v libvpx -crf 10 -b:v 1M -c:a -hwaccel=auto libvorbis "$1".webm'' diff --git a/users/modules/default.nix b/users/modules/default.nix index 69b7e78..dc15f1f 100644 --- a/users/modules/default.nix +++ b/users/modules/default.nix @@ -17,7 +17,14 @@ in { ./shell ]; - options.home.fullDesktop = mkEnableOption "Enable most modules"; + options.home = { + fullDesktop = mkEnableOption "Enable most modules"; + gpuType = mkOption { + type = types.nullOr (types.enum ["nvidia" "amd" "intel"]); + default = null; + example = "amd"; + }; + }; config.home = { cli.fullDesktop = mkDefault cfg.fullDesktop; desktop.fullDesktop = mkDefault cfg.fullDesktop; diff --git a/users/modules/desktop/caelestia.nix b/users/modules/desktop/caelestia.nix index e276e8d..9450694 100644 --- a/users/modules/desktop/caelestia.nix +++ b/users/modules/desktop/caelestia.nix @@ -59,7 +59,9 @@ in { }; tray.compact = true; }; - services.gpuType = "amd"; + services = mkIf (config.home.gpuType != null) { + inherit (config.home) gpuType; + }; session.commands = { logout = ["uwsm" "stop"]; shutdown = ["systemctl" "poweroff"]; diff --git a/users/modules/media/mpv.nix b/users/modules/media/mpv.nix index bbc4a1c..0222b4c 100644 --- a/users/modules/media/mpv.nix +++ b/users/modules/media/mpv.nix @@ -15,7 +15,7 @@ in { force-seekable = true; # force streams to be seekable slang = "jpn,jp,eng,en,fra,fr"; alang = "eng,en,fra,fr"; - gpu-api = "vulkan"; + gpu-api = "auto"; osc = true; profile = "gpu-hq"; # geometry = "50%x50%"; diff --git a/users/phundrak/host/marpa.nix b/users/phundrak/host/marpa.nix index ea9197c..307b0ce 100644 --- a/users/phundrak/host/marpa.nix +++ b/users/phundrak/host/marpa.nix @@ -1,6 +1,7 @@ {config, ...}: { imports = [../home.nix]; home = { + gpuType = "amd"; cli.nh.flake = "${config.home.homeDirectory}/.dotfiles"; dev.ai = { enable = true;