Compare commits

...

3 Commits

Author SHA1 Message Date
7e33c6464f keyboard 2024-12-30 19:29:23 +01:00
3fc6966bf5 nvidia fix 2024-12-30 19:29:09 +01:00
80be473c14 Wlogout 2024-12-30 19:28:12 +01:00
11 changed files with 86 additions and 51 deletions

View File

@ -42,8 +42,9 @@
enable = true; enable = true;
blueman.enable = false; blueman.enable = false;
}; };
nvidiaRTX.enable = false; nvidia = {
nvidiaRTX.disable = false; enable = false;
};
printing.enable = true; printing.enable = true;
login = { login = {
sddm.enable = false; sddm.enable = false;

View File

@ -45,7 +45,10 @@
enable = true; enable = true;
blueman.enable = true; blueman.enable = true;
}; };
nvidia.enable = true; nvidia = {
enable = true;
mode = "offload";
};
printing.enable = true; printing.enable = true;
login = { login = {
sddm.enable = true; sddm.enable = true;

View File

@ -3,6 +3,11 @@
pkgs-stable, pkgs-stable,
... ...
}: { }: {
# Keyboard image for keyboard switch layout
home.file = {
".local/share/icons/kogami/keyboard.svg".source = ../../../../config/icons/keyboard.svg;
};
home.packages = home.packages =
(with pkgs; [ (with pkgs; [
hypridle hypridle
@ -63,7 +68,7 @@
(writeShellScriptBin "keyboardswitch" '' (writeShellScriptBin "keyboardswitch" ''
hyprctl switchxkblayout all next hyprctl switchxkblayout all next
layMain=$(hyprctl -j devices | ${pkgs.jq}/bin/jq '.keyboards' | ${pkgs.jq}/bin/jq '.[] | select (.main == true)' | awk -F '"' '{if ($2=="active_keymap") print $4}') layMain=$(hyprctl -j devices | ${pkgs.jq}/bin/jq '.keyboards' | ${pkgs.jq}/bin/jq '.[] | select (.main == true)' | awk -F '"' '{if ($2=="active_keymap") print $4}')
${libnotify}/bin/notify-send -a "t1" -r 91190 -t 800 "$layMain" -i ~/dotfiles/config/icons/keyboard.svg ${libnotify}/bin/notify-send -a "t1" -r 91190 -t 800 "$layMain" -i ~/.local/share/icons/kogami/keyboard.svg
'') '')
(writeShellScriptBin "background-switch-random" '' (writeShellScriptBin "background-switch-random" ''

View File

@ -28,6 +28,7 @@
wlogout.enable = lib.mkDefault true; wlogout.enable = lib.mkDefault true;
}; };
# XDG Portals configuration
xdg.portal.enable = true; xdg.portal.enable = true;
xdg.portal.config = { xdg.portal.config = {
common = { common = {
@ -36,11 +37,11 @@
}; };
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-hyprland]; xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-hyprland];
# Services for the Hyprland module
services.network-manager-applet.enable = true; services.network-manager-applet.enable = true;
services.dunst.enable = true; services.dunst.enable = true;
programs.hyprlock.enable = true; # Home session variables
home.sessionVariables = { home.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -2,6 +2,7 @@
lib, lib,
config, config,
pkgs, pkgs,
userSettings,
... ...
}: { }: {
options = { options = {
@ -9,6 +10,13 @@
}; };
config = lib.mkIf config.desktop.hyprland.wlogout.enable { config = lib.mkIf config.desktop.hyprland.wlogout.enable {
home.file = {
".config/wlogout/icons/lock.png".source = ./icons/lock_white.png;
".config/wlogout/icons/logout.png".source = ./icons/logout_white.png;
".config/wlogout/icons/shutdown.png".source = ./icons/shutdown_white.png;
".config/wlogout/icons/reboot.png".source = ./icons/reboot_white.png;
};
programs.wlogout = { programs.wlogout = {
enable = true; enable = true;
layout = [ layout = [
@ -40,10 +48,13 @@
"keybind" = "r"; "keybind" = "r";
} }
]; ];
style = style = let
let
fntSize = "40"; fntSize = "40";
BtnCol = config.lib.stylix.colors.base01; BtnCol = config.lib.stylix.colors.base01;
Main-bg = config.lib.stylix.colors.base02;
Wb-act-bg = config.lib.stylix.colors.base05; # base05 is light blue color
Wb-hvr-bg = config.lib.stylix.colors.base07; # base07 is blue color
active_rad = "40"; active_rad = "40";
y_hvr = "5"; y_hvr = "5";
x_hvr = "5"; x_hvr = "5";
@ -51,16 +62,6 @@
y_mgn = "5"; y_mgn = "5";
x_mgn = "5"; x_mgn = "5";
in '' in ''
@define-color bar-bg rgba(0, 0, 0, 0);
@define-color main-bg #11111b;
@define-color main-fg #cdd6f4;
@define-color wb-act-bg #a6adc8;
@define-color wb-act-fg #313244;
@define-color wb-hvr-bg #f5c2e7;
@define-color wb-hvr-fg #313244;
* { * {
background-image: none; background-image: none;
font-size: ${fntSize}px; font-size: ${fntSize}px;
@ -72,7 +73,7 @@
button { button {
color: #${BtnCol}; color: #${BtnCol};
background-color: @main-bg; background-color: #${Main-bg};
outline-style: none; outline-style: none;
border: none; border: none;
border-width: 0px; border-width: 0px;
@ -86,12 +87,12 @@
} }
button:focus { button:focus {
background-color: @wb-act-bg; background-color: #${Wb-act-bg};
background-size: 20%; background-size: 20%;
} }
button:hover { button:hover {
background-color: @wb-hvr-bg; background-color: #${Wb-hvr-bg};
background-size: 25%; background-size: 25%;
border-radius: ${active_rad}px; border-radius: ${active_rad}px;
animation: gradient_f 20s ease-in infinite; animation: gradient_f 20s ease-in infinite;
@ -119,29 +120,29 @@
} }
#lock { #lock {
background-image: image(url("/home/${userSettings.username}/.config/wlogout/icons/lock.png"), url("${pkgs.wlogout}/share/wlogout/icons/lock.png"));
border-radius: ${button_rad}px 0px 0px 0px; border-radius: ${button_rad}px 0px 0px 0px;
margin : ${y_mgn}px 0px 0px ${x_mgn}px; margin : ${y_mgn}px 0px 0px ${x_mgn}px;
} }
#logout { #logout {
background-image: image(url("/home/${userSettings.username}/.config/wlogout/icons/logout.png"), url("${pkgs.wlogout}/share/wlogout/icons/logout.png"));
border-radius: 0px 0px 0px ${button_rad}px; border-radius: 0px 0px 0px ${button_rad}px;
margin : 0px 0px ${y_mgn}px ${x_mgn}px; margin : 0px 0px ${y_mgn}px ${x_mgn}px;
} }
#shutdown { #shutdown {
background-image: image(url("/home/${userSettings.username}/.config/wlogout/icons/shutdown.png"), url("${pkgs.wlogout}/share/wlogout/icons/shutdown.png"));
border-radius: 0px ${button_rad}px 0px 0px; border-radius: 0px ${button_rad}px 0px 0px;
margin : ${y_mgn}px ${x_mgn}px 0px 0px; margin : ${y_mgn}px ${x_mgn}px 0px 0px;
} }
#reboot { #reboot {
background-image: image(url("/home/${userSettings.username}/.config/wlogout/icons/reboot.png"), url("${pkgs.wlogout}/share/wlogout/icons/reboot.png"));
border-radius: 0px 0px ${button_rad}px 0px; border-radius: 0px 0px ${button_rad}px 0px;
margin : 0px ${x_mgn}px ${y_mgn}px 0px; margin : 0px ${x_mgn}px ${y_mgn}px 0px;
} }
''; '';
}; };
home.packages = [
pkgs.wlogout
];
}; };
} }

View File

@ -4,22 +4,23 @@
... ...
}: { }: {
options = { options = {
sys.nvidia = lib.mkOption { sys.nvidia.enable = lib.mkEnableOption "Enable NVIDIA graphics support";
type = lib.types.attrs;
default = { sys.nvidia.mode = lib.mkOption {
enable = false; type = lib.types.enum ["offload" "sync" "reverse" "disable" "none"];
disable = false; default = "none";
};
description = '' description = ''
NVIDIA graphics support. NVIDIA graphics mode.
''; '';
}; };
sys.nvidiaRTX.enable = lib.mkEnableOption "Enable NVIDIA Prime graphics support"; sys.nvidia.optimus.offload = lib.mkEnableOption "Enable NVIDIA Prime graphics support";
sys.nvidiaRTX.disable = lib.mkEnableOption "Disable NVIDIA graphics completely"; sys.nvidia.optimus.sync = lib.mkEnableOption "Enable NVIDIA Prime sync";
sys.nvidia.optimus.reverse = lib.mkEnableOption "Enable NVIDIA Prime reverse sync";
sys.nvidia.disable = lib.mkEnableOption "Disable NVIDIA graphics completely";
}; };
config = lib.mkMerge [ config = lib.mkMerge [
(lib.mkIf config.sys.nvidiaRTX.enable { (lib.mkIf config.sys.nvidia.enable {
hardware = { hardware = {
graphics.enable = true; graphics.enable = true;
}; };
@ -54,17 +55,27 @@
nvidiaSettings = true; nvidiaSettings = true;
prime.amdgpuBusId = "pci@000:04:0"; prime.amdgpuBusId = "pci@000:04:0";
prime.nvidiaBusId = "pci@000:01:0"; prime.nvidiaBusId = "pci@000:01:0";
prime.offload = {
enable = true;
enableOffloadCmd = true;
};
# Optionally, you may need to select the appropriate driver version for your specific GPU. # Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
}; };
}) })
(lib.mkIf config.sys.nvidiaRTX.disable { (lib.mkIf config.sys.nvidia.optimus.offload {
hardware.nvidia.prime.offload = {
enable = true;
enableOffloadCmd = true;
};
})
(lib.mkIf config.sys.nvidia.optimus.sync {
hardware.nvidia.prime.sync.enable = true;
})
(lib.mkIf config.sys.nvidia.optimus.reverse {
hardware.nvidia.prime = {
reverseSync.enable = true;
# Enable if using an external GPU
allowExternalGpu = false;
};
})
(lib.mkIf config.sys.nvidia.disable {
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
blacklist nouveau blacklist nouveau
options nouveau modeset=0 options nouveau modeset=0

View File

@ -42,16 +42,29 @@
enable = lib.mkDefault true; enable = lib.mkDefault true;
blueman.enable = lib.mkDefault true; blueman.enable = lib.mkDefault true;
}; };
nvidia.enable = lib.mkDefault false;
nvidiaRTX.enable = nvidia = {
if config.sys.nvidia.enable == true enable = lib.mkDefault false;
then lib.mkDefault true mode = lib.mkDefault "none";
else lib.mkDefault false; optimus = {
nvidiaRTX.disable = offload =
if config.sys.nvidia.enable == true if config.sys.nvidia.mode == "offload"
then lib.mkDefault false then true
else lib.mkDefault true; else false;
sync =
if config.sys.nvidia.mode == "sync"
then true
else false;
reverse =
if config.sys.nvidia.mode == "reverse"
then true
else false;
};
disable =
if config.sys.nvidia.mode == "disable"
then true
else false;
};
printing.enable = lib.mkDefault true; printing.enable = lib.mkDefault true;
login = { login = {