feat: environment variables for wayland & nvidia

This commit is contained in:
Ryan Yin
2025-08-20 12:35:14 +08:00
parent 2b914efbb1
commit 21090c93e8
11 changed files with 60 additions and 78 deletions
+17
View File
@@ -6,8 +6,25 @@
{ {
imports = [ imports = [
./anyrun.nix ./anyrun.nix
./nvidia.nix
]; ];
# wayland related
home.sessionVariables = {
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
"MOZ_ENABLE_WAYLAND" = "1"; # for firefox to run on wayland
"MOZ_WEBRENDER" = "1";
# enable native Wayland support for most Electron apps
"ELECTRON_OZONE_PLATFORM_HINT" = "auto";
# misc
"_JAVA_AWT_WM_NONREPARENTING" = "1";
"QT_WAYLAND_DISABLE_WINDOWDECORATION" = "1";
"QT_QPA_PLATFORM" = "wayland";
"SDL_VIDEODRIVER" = "wayland";
"GDK_BACKEND" = "wayland";
"XDG_SESSION_TYPE" = "wayland";
};
home.packages = with pkgs; [ home.packages = with pkgs; [
swaybg # the wallpaper swaybg # the wallpaper
wl-clipboard # copying and pasting wl-clipboard # copying and pasting
+26
View File
@@ -0,0 +1,26 @@
{
config,
lib,
...
}:
with lib;
let
cfg = config.modules.desktop.nvidia;
in
{
options.modules.desktop.nvidia = {
enable = mkEnableOption "whether nvidia GPU is used";
};
config = mkIf (cfg.enable && cfg.enable) {
home.sessionVariables = {
# for hyprland with nvidia gpu" = " ref https://wiki.hyprland.org/Nvidia/
"LIBVA_DRIVER_NAME" = "nvidia";
"__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
# VA-API hardware video acceleration
"NVD_BACKEND" = "direct";
"GBM_BACKEND" = "nvidia-drm";
};
};
}
+7 -14
View File
@@ -9,10 +9,6 @@ let
cfg = config.modules.desktop.hyprland; cfg = config.modules.desktop.hyprland;
in in
{ {
imports = [
./options
];
options.modules.desktop.hyprland = { options.modules.desktop.hyprland = {
enable = mkEnableOption "hyprland compositor"; enable = mkEnableOption "hyprland compositor";
settings = lib.mkOption { settings = lib.mkOption {
@@ -38,14 +34,11 @@ in
}; };
}; };
config = mkIf cfg.enable ( config = mkIf cfg.enable (mkMerge ([
mkMerge ( {
[ wayland.windowManager.hyprland.settings = cfg.settings;
{ }
wayland.windowManager.hyprland.settings = cfg.settings; (import ./hyprland.nix args)
} (import ./xdg.nix args)
] ]));
++ (import ./values args)
)
);
} }
@@ -36,16 +36,7 @@ in
"${configPath}/windowrules.conf" "${configPath}/windowrules.conf"
]; ];
env = [ env = [
"NIXOS_OZONE_WL,1" # for any ozone-based browser & electron apps to run on wayland
"MOZ_ENABLE_WAYLAND,1" # for firefox to run on wayland
"MOZ_WEBRENDER,1"
# misc
"_JAVA_AWT_WM_NONREPARENTING,1"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"QT_QPA_PLATFORM,wayland"
"SDL_VIDEODRIVER,wayland"
"GDK_BACKEND,wayland"
"XDG_SESSION_TYPE,wayland"
]; ];
}; };
# gammastep/wallpaper-switcher need this to be enabled. # gammastep/wallpaper-switcher need this to be enabled.
@@ -1,4 +0,0 @@
{ mylib, ... }:
{
imports = mylib.scanPaths ./.;
}
@@ -1,28 +0,0 @@
{
config,
lib,
...
}:
with lib;
let
cfg = config.modules.desktop.hyprland;
in
{
options.modules.desktop.hyprland = {
nvidia = mkEnableOption "whether nvidia GPU is used";
};
config = mkIf (cfg.enable && cfg.nvidia) {
wayland.windowManager.hyprland.settings.env = [
# for hyprland with nvidia gpu, ref https://wiki.hyprland.org/Nvidia/
"LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
# enable native Wayland support for most Electron apps
"ELECTRON_OZONE_PLATFORM_HINT,auto"
# VA-API hardware video acceleration
"NVD_BACKEND,direct"
"GBM_BACKEND,nvidia-drm"
];
};
}
@@ -1 +0,0 @@
{ mylib, ... }@args: map (path: import path args) (mylib.scanPaths ./.)
-9
View File
@@ -209,15 +209,6 @@ in
(leaf "center-focused-column" "never") (leaf "center-focused-column" "never")
]) ])
# You can override environment variables for processes spawned by niri.
(plain "environment" [
# Set a variable like this:
(leaf "QT_QPA_PLATFORM" "wayland")
# Remove a variable by using null as the value:
# (leaf "DISPLAY" null)
])
(plain "cursor" [ (plain "cursor" [
# Change the theme and size of the cursor as well as set the # Change the theme and size of the cursor as well as set the
# `XCURSOR_THEME` and `XCURSOR_SIZE` env variables. # `XCURSOR_THEME` and `XCURSOR_SIZE` env variables.
+4 -6
View File
@@ -6,12 +6,10 @@ in
programs.ssh.matchBlocks."github.com".identityFile = programs.ssh.matchBlocks."github.com".identityFile =
"${config.home.homeDirectory}/.ssh/${hostName}"; "${config.home.homeDirectory}/.ssh/${hostName}";
modules.desktop.hyprland = { modules.desktop.nvidia.enable = false;
nvidia = false; modules.desktop.hyprland.settings.source = [
settings.source = [ "${config.home.homeDirectory}/nix-config/hosts/12kingdoms-shoukei/hypr-hardware.conf"
"${config.home.homeDirectory}/nix-config/hosts/12kingdoms-shoukei/hypr-hardware.conf" ];
];
};
modules.desktop.niri = { modules.desktop.niri = {
settings = settings =
+5 -6
View File
@@ -2,12 +2,11 @@
{ {
programs.ssh.matchBlocks."github.com".identityFile = "${config.home.homeDirectory}/.ssh/idols-ai"; programs.ssh.matchBlocks."github.com".identityFile = "${config.home.homeDirectory}/.ssh/idols-ai";
modules.desktop.hyprland = { modules.desktop.nvidia.enable = true;
nvidia = true;
settings.source = [ modules.desktop.hyprland.settings.source = [
"${config.home.homeDirectory}/nix-config/hosts/idols-ai/hypr-hardware.conf" "${config.home.homeDirectory}/nix-config/hosts/idols-ai/hypr-hardware.conf"
]; ];
};
modules.desktop.niri = { modules.desktop.niri = {
settings = settings =