diff --git a/desktop.nix b/desktop.nix index 70df13c..ad4c02f 100644 --- a/desktop.nix +++ b/desktop.nix @@ -6,7 +6,6 @@ let filterConfig = pkgs.callPackage ./packages/pipewire-noise-filter.cfg.nix { noiseFilterStrength = cfg.audio.noise-filter.strength; }; - mkTmpDir = dirpath: cleanup: "D ${dirpath} 777 root root ${cleanup}"; in { options.aviallon.desktop = { enable = mkOption { @@ -54,8 +53,7 @@ in { }; imports = [ - ./desktop/plasma.nix - ./desktop/developer.nix + ./desktop ]; config = mkIf cfg.enable { @@ -207,24 +205,6 @@ in { }; - programs.steam.enable = !generalCfg.minimal; - hardware.steam-hardware.enable = !generalCfg.minimal; - programs.steam.remotePlay.openFirewall = true; - environment.variables = { - "__GL_SHADER_DISK_CACHE" = "true"; - "__GL_SHADER_DISK_CACHE_SIZE" = "${toString (50 * 1000)}"; - "__GL_SHADER_DISK_CACHE_SKIP_CLEANUP" = "1"; # Avoid 128mb limit of shader cache - "__GL_SHADER_DISK_CACHE_PATH" = cfg.graphics.shaderCache.path + "/nvidia" ; - "MESA_SHADER_CACHE_MAX_SIZE" = "50G"; # Put large-enough value. Default is only 1G - "MESA_SHADER_CACHE_DIR" = cfg.graphics.shaderCache.path + "/mesa"; - "MESA_GLSL_CACHE_DIR" = cfg.graphics.shaderCache.path + "/mesa"; - }; - - systemd.tmpfiles.rules = [ - (mkTmpDir (cfg.graphics.shaderCache.path + "/nvidia") cfg.graphics.shaderCache.cleanupInterval) - (mkTmpDir (cfg.graphics.shaderCache.path + "/mesa") cfg.graphics.shaderCache.cleanupInterval) - ]; - aviallon.programs.allowUnfreeList = [ "spotify" "spotify-unwrapped" diff --git a/desktop/default.nix b/desktop/default.nix new file mode 100644 index 0000000..22b4464 --- /dev/null +++ b/desktop/default.nix @@ -0,0 +1,10 @@ +{ config, pkgs, lib, ... }: +with lib; +{ + imports = [ + ./developer.nix + ./multimedia.nix + ./plasma.nix + ./games.nix + ]; +} diff --git a/desktop/games.nix b/desktop/games.nix new file mode 100644 index 0000000..d1afcbc --- /dev/null +++ b/desktop/games.nix @@ -0,0 +1,58 @@ +{ config, pkgs, lib, ... }: +with lib; +let + cfg = config.aviallon.desktop; + generalCfg = config.aviallon.general; + mkTmpDir = dirpath: cleanup: "D ${dirpath} 777 root root ${cleanup}"; +in { + + options = { + aviallon.desktop.gaming = { + enable = mkEnableOption "gaming features"; + }; + }; + + config = mkIf cfg.gaming.enable { + assertions = [ + { assertion = cfg.gaming.enable -> cfg.enable; message = "Gaming features requires desktop to be enabled"; } + ]; + + environment.systemPackages = with pkgs; [ + #gamescope + mangohud + ]; + + programs.gamemode = { + settings = { + general = { + renice = 15; + softrealtime = "auto"; + }; + gpu = { + apply_gpu_optimisations = "accept-responsibility"; + amd_performance_level = "high"; + nv_powermizer_mode = 1; + }; + }; + enable = true; + }; + + programs.steam.enable = !generalCfg.minimal; + hardware.steam-hardware.enable = !generalCfg.minimal; + programs.steam.remotePlay.openFirewall = true; + environment.variables = { + "__GL_SHADER_DISK_CACHE" = "true"; + "__GL_SHADER_DISK_CACHE_SIZE" = "${toString (50 * 1000)}"; + "__GL_SHADER_DISK_CACHE_SKIP_CLEANUP" = "1"; # Avoid 128mb limit of shader cache + "__GL_SHADER_DISK_CACHE_PATH" = cfg.graphics.shaderCache.path + "/nvidia" ; + "MESA_SHADER_CACHE_MAX_SIZE" = "50G"; # Put large-enough value. Default is only 1G + "MESA_SHADER_CACHE_DIR" = cfg.graphics.shaderCache.path + "/mesa"; + "MESA_GLSL_CACHE_DIR" = cfg.graphics.shaderCache.path + "/mesa"; + }; + + systemd.tmpfiles.rules = [ + (mkTmpDir (cfg.graphics.shaderCache.path + "/nvidia") cfg.graphics.shaderCache.cleanupInterval) + (mkTmpDir (cfg.graphics.shaderCache.path + "/mesa") cfg.graphics.shaderCache.cleanupInterval) + ]; + }; +} diff --git a/desktop/multimedia.nix b/desktop/multimedia.nix new file mode 100644 index 0000000..90a1307 --- /dev/null +++ b/desktop/multimedia.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ... }: +with lib; +let + cfg = config.aviallon.desktop; +in { + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + ffmpeg-full + krita + obs-studio + scribus + yt-dlp + ]; + }; +}