feat: nvidia Hyprland

This commit is contained in:
DACHXY 2025-01-05 01:06:00 +08:00
parent 8e13adac78
commit 3a77d31b6d
6 changed files with 55 additions and 9 deletions

View file

@ -61,9 +61,10 @@
"nvim . (.*)": " $1",
"\\(\\d+\\) Discord (.*)": " $1",
"(.*) - YouTube — Mozilla Firefox": " $1",
"(.*)\\pdf — Mozilla Firefox": " $1",
"(.*) — Mozilla Firefox": " $1",
"(.*) - VLC media player": " $1",
"(.*) - YouTube Music — Mozilla Firefox": "󰎆 $1"
"(.*) - YouTube Music — Mozilla Firefox": "󰎆 $1",
}
},

View file

@ -35,14 +35,14 @@
"pin, class:^(vesktop)$,title:^(Discord Popout)$"
"float, class:^(steam)$,title:^(Friends List)$"
# Workspace assign
"workspace: 5, class: ^(steam)$"
# Steam
"workspace: 5 silent, class: ^(steam)$"
# Line
"workspace: 2, initialTitle: ^(LINE)$"
"float, initialTitle: ^(LINE)$"
# VLC
# VLC
"workspace: 3, initialClass: ^(vlc)"
];
@ -62,4 +62,3 @@
"ignorealpha 0.1, swaync-notification-window"
];
}

View file

@ -72,6 +72,8 @@ in
''HYPRCURSOR_SIZE, ${hyprcursor-size}''
''XCURSOR_THEME, ${cursorName}''
''XCURSOR_SIZE, ${xcursor-size}''
''XDG_CURRENT_DESKTOP, Hyprland''
''XDG_SESSION_DESKTOP, Hyprland''
];
}
// window

View file

@ -12,6 +12,19 @@
];
};
fileSystems."/mnt/windows" = {
device = "/dev/disk/by-uuid/460237D00237C429";
fsType = "ntfs-3g";
options = [
"nofail"
"uid=1000"
"gid=1000"
"dmask=077"
"fmask=077"
];
};
boot.supportedFilesystems = [ "ntfs" ];
boot.loader.systemd-boot.enable = true;
# Enable F keys in some wireless keyboard (Ex. neo65)

View file

@ -11,7 +11,7 @@
let
hyprcursor-size = "32";
xcursor-size = "24";
nvidia-mode = "rsync";
nvidia-mode = "offload";
# Get bus id with `lshw`
intel-bus-id = "PCI:0:2:0";
nvidia-bus-id = "PCI:1:0:0";

View file

@ -10,6 +10,7 @@ let
"sync"
"rsync"
];
in
{
config,
@ -20,8 +21,6 @@ in
# Nvidia offload mode
let
validString = lib.concatStringsSep ", " validModes;
offload = pkgs.writeShellScriptBin "offload" ''
#!/bin/bash
export __NV_PRIME_RENDER_OFFLOAD=1
@ -30,6 +29,23 @@ let
export __VK_LAYER_NV_optimus=NVIDIA_only
exec "$@"
'';
mk_uwsm_desktop_entry =
opts:
(pkgs.writeTextFile {
name = "${opts.name}-uwsm";
text = ''
[Desktop Entry]
Name=${opts.prettyName} (Offload UWSM)
Comment=${opts.comment}
Exec=${offload}/bin/offload ${lib.getExe config.programs.uwsm.package} start -S -F ${opts.binPath}
Type=Application
'';
destination = "/share/wayland-sessions/${opts.name}-uwsm.desktop";
derivationArgs = {
passthru.providedSessions = [ "${opts.name}-uwsm" ];
};
});
in
lib.checkListOfEnum "Nvidia Prime Mode" validModes [ nvidia-mode ] {
environment.systemPackages = [ offload ];
@ -58,7 +74,7 @@ lib.checkListOfEnum "Nvidia Prime Mode" validModes [ nvidia-mode ] {
nvidia.modesetting.enable = true;
nvidia.powerManagement.enable = true;
nvidia.powerManagement.finegrained = true;
nvidia.powerManagement.finegrained = if nvidia-mode == "sync" then false else true;
nvidia.nvidiaSettings = true;
nvidia.dynamicBoost.enable = true;
@ -106,5 +122,20 @@ lib.checkListOfEnum "Nvidia Prime Mode" validModes [ nvidia-mode ] {
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
MOZ_DISABLE_RDD_SANDBOX = 1;
OGL_DEDICATED_HW_STATE_PER_CONTEXT = "ENABLE_ROBUST";
INTEL_GPU_MIN_FREQ_ON_AC = "500";
# If multiple monitors are connected to eGPU & iGPU,
# make sure to put the iGPU first
AQ_DRM_DEVICES = "/dev/dri/card1:/dev/dri/card0";
};
# NOTE: You need set "env XDG_CURRENT_DESKTOP, Hyprland" in hyprland config
# Otherwise you got XDG_CURRENT_DESKTOP="offload:Hyprland" which may cause problems
programs.uwsm.waylandCompositors = lib.mkForce {
hyprland = {
prettyName = "Hyprland";
comment = "Hyprland compositor managed by UWSM";
binPath = "${offload}/bin/offload /run/current-system/sw/bin/Hyprland";
};
};
}