move ntsync to the correct option; make extra mpv stuff a config option; add some gaming helper scripts + default env vars

This commit is contained in:
2025-10-13 17:59:46 +01:00
parent d5d9396b6d
commit f66ef91e85
4 changed files with 108 additions and 59 deletions

View File

@@ -21,21 +21,17 @@
networking.hostName = "tuxedo"; # Define your hostname. networking.hostName = "tuxedo"; # Define your hostname.
# fairly sure this isnt needed anymore
# boot.extraModprobeConfig = ''
# options iwlwifi 11n_disable=8 power_save=0
# options iwlmvm power_scheme=1
# '';
# TODO remove ntsync if this becomes stable
# options iwlmvm power_scheme=1 https://wireless.docs.kernel.org/en/latest/en/users/drivers/iwlwifi.html#features # options iwlmvm power_scheme=1 https://wireless.docs.kernel.org/en/latest/en/users/drivers/iwlwifi.html#features
# options iwlwifi 11n_disable=4 https://wiki.gentoo.org/wiki/Iwlwifi#Network_crashes_under_heavy_load # options iwlwifi 11n_disable=4 https://wiki.gentoo.org/wiki/Iwlwifi#Network_crashes_under_heavy_load
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
ntsync
options iwlmvm power_scheme=1 options iwlmvm power_scheme=1
options iwlwifi 11n_disable=4 options iwlwifi 11n_disable=8 power_save=0
''; '';
boot.kernelModules = [
"ntsync"
];
services.hardware.openrgb.enable = true; services.hardware.openrgb.enable = true;
fileSystems."/mnt/HDD2" = { fileSystems."/mnt/HDD2" = {

View File

@@ -11,6 +11,7 @@
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; terminal.flakeUpdateLocation = "/home/worble/Projects/nixos";
helix.fullInstall = true; helix.fullInstall = true;
mpv.high-quality = true;
home.username = "worble"; home.username = "worble";
home.homeDirectory = "/home/worble"; home.homeDirectory = "/home/worble";
@@ -47,15 +48,6 @@
headsetcontrol headsetcontrol
]; ];
home.file = {
# shaders for mpv
".config/mpv/shaders".source = pkgs.fetchzip {
url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip";
sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM=";
stripRoot = false;
};
};
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs = { programs = {
firefox = { firefox = {
@@ -74,24 +66,8 @@
mpv = { mpv = {
config = { config = {
profile = "gpu-hq";
vo = "gpu-next";
gpu-api = "auto";
gpu-context = "auto";
hwdec = "auto";
screenshot-directory = "/mnt/HDD2/Pictures/"; screenshot-directory = "/mnt/HDD2/Pictures/";
glsl-shaders = "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl";
}; };
extraInput = ''
# Optimized shaders for higher-end GPU:
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
'';
}; };
mangohud = { mangohud = {

View File

@@ -1,6 +1,26 @@
{ pkgs, lib, ... }: { pkgs, lib, config, ... }:
with lib;
{ {
options.mpv = {
high-quality = mkOption {
type = types.bool;
default = false;
};
};
config = {
home.file = {
".config/mpv/shaders" = {
enable = config.mpv.high-quality;
source = pkgs.fetchzip {
url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip";
sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM=";
stripRoot = false;
};
};
};
programs = { programs = {
mpv = { mpv = {
enable = true; enable = true;
@@ -14,17 +34,39 @@
mpv = pkgs.mpv-unwrapped; mpv = pkgs.mpv-unwrapped;
} }
); );
config = { config = mkMerge [{
screenshot-directory = lib.mkDefault "~/Pictures/"; screenshot-directory = lib.mkDefault "~/Pictures/";
screenshot-template = lib.mkDefault "%F/%F_snapshot_%P"; screenshot-template = lib.mkDefault "%F/%F_snapshot_%P";
sub-ass-use-video-data = lib.mkDefault "aspect-ratio"; sub-ass-use-video-data = lib.mkDefault "aspect-ratio";
}; }
(mkIf config.mpv.high-quality
{
profile = lib.mkDefault "gpu-hq";
vo = lib.mkDefault "gpu-next";
gpu-api = lib.mkDefault "auto";
gpu-context = lib.mkDefault "auto";
hwdec = lib.mkDefault "auto";
glsl-shaders = lib.mkDefault "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl";
})];
scriptOpts = { scriptOpts = {
uosc = { uosc = {
time_precision = 3; time_precision = lib.mkDefault 3;
}; };
}; };
extraInput =
if config.mpv.high-quality then ''
# Optimized shaders for higher-end GPU:
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
'' else "";
};
}; };
}; };
} }

View File

@@ -1,11 +1,14 @@
{ pkgs, inputs, ... }: { pkgs, inputs, ... }:
let
pkgs_unstable = inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}";
in
{ {
home.packages = with pkgs;[ home.packages = with pkgs;[
# Wine / Proton # Wine / Proton
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".wineWowPackages.stagingFull pkgs_unstable.wineWowPackages.stagingFull
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".winetricks pkgs_unstable.winetricks
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".umu-launcher pkgs_unstable.umu-launcher
# I'm not sure this actually accomplishes anything, even with PROTON_MEDIA_USE_GST=1 # I'm not sure this actually accomplishes anything, even with PROTON_MEDIA_USE_GST=1
# (umu-launcher.override { # (umu-launcher.override {
@@ -36,8 +39,40 @@
# Cheat engine # Cheat engine
scanmem scanmem
# gamescope wrapper
(pkgs.writeShellApplication {
name = "gscope";
runtimeInputs = [ pkgs.gamescope ];
text = "gamescope -H 1080 -- \"$@\"";
})
# proton with ja_JP
(pkgs.writeShellApplication {
name = "umu-ja";
runtimeInputs = [ pkgs_unstable.umu-launcher ];
text = "LANG=ja_JP.utf8 umu-run \"$@\"";
})
# wine with ja_JP
(pkgs.writeShellApplication {
name = "wine-ja";
runtimeInputs = [ pkgs_unstable.wineWowPackages.stagingFull ];
text = "LANG=ja_JP.utf8 wine \"$@\"";
})
]; ];
# https://github.com/GloriousEggroll/proton-ge-custom?tab=readme-ov-file#modification
# There aren't yet documented in the README:
# PROTON_MEDIA_USE_GST=1 will tell proton to use the winegstreamer backend instead of the default winedmo backend (the winedmo backend was introduced in Proton 10 and is the current preferred video playback method). This can be useful for games with videos that may have worked in Proton 9 but regressed in Proton 10.
# PROTON_GST_VIDEO_ORIENTATION=<orientation> can be any of the following: vertical-flip, horizontal-flip, rotate-180, automatic. This is useful if some games have videos that are upside down or otherwise not oriented correctly.
# https://simpler-website.pages.dev/html/2021/1/wine-environment-variables/#wineesync
home.sessionVariables = {
WINEPREFIX = "~/Games/wine/default";
PROTONPATH = "GE-Proton";
PROTON_ENABLE_WAYLAND = "0"; # One day...
};
# programs.lutris = { # programs.lutris = {
# enable = true; # enable = true;
# extraPackages = with pkgs; [ mangohud winetricks gamescope gamemode umu-launcher ]; # extraPackages = with pkgs; [ mangohud winetricks gamescope gamemode umu-launcher ];