205 lines
6.7 KiB
Nix
205 lines
6.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}:
|
|
|
|
{
|
|
options = {
|
|
desktop = {
|
|
hyprland = {
|
|
enable = lib.mkEnableOption "enable hyprland";
|
|
monitors = lib.mkOption {
|
|
default = [
|
|
",preferred,auto,1"
|
|
];
|
|
description = ''declare monitors'';
|
|
};
|
|
workspaces = {
|
|
workspaces = lib.mkOption {
|
|
default = (
|
|
builtins.concatLists (
|
|
builtins.genList (
|
|
i:
|
|
let
|
|
ws = i + 1;
|
|
in
|
|
[
|
|
"${toString i},persistent:true"
|
|
]
|
|
) config.desktop.hyprland.workspaces.amount
|
|
)
|
|
);
|
|
description = ''declare workspace'';
|
|
};
|
|
amount = lib.mkOption {
|
|
default = 9;
|
|
description = ''declare workspace amount'';
|
|
};
|
|
};
|
|
numlock = lib.mkEnableOption "numlock by default";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.desktop.hyprland.enable {
|
|
xdg.portal = {
|
|
enable = true;
|
|
configPackages = [
|
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
|
];
|
|
extraPortals = [
|
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
|
pkgs.xdg-desktop-portal-xapp
|
|
pkgs.xdg-desktop-portal-gtk
|
|
|
|
];
|
|
config.common = {
|
|
"org.freedesktop.portal.OpenURI" = [
|
|
"*"
|
|
"hyprland"
|
|
];
|
|
};
|
|
};
|
|
programs = {
|
|
hyprlock = {
|
|
enable = true;
|
|
};
|
|
};
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
systemd.enable = false;
|
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
portalPackage =
|
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
|
settings = {
|
|
monitor = config.desktop.hyprland.monitors;
|
|
workspace = config.desktop.hyprland.workspaces.workspaces;
|
|
exec-once = [
|
|
#"hyprctl plugin load "
|
|
(lib.mkIf (config.desktop.walker.enable) "elephant")
|
|
(lib.mkIf (config.desktop.waybar.enable) "waybar")
|
|
(lib.mkIf (config.desktop.noctalia.enable) "noctalia-shell")
|
|
(lib.mkIf (config.desktop.noctalia.enable) "noctalia-shell ipc call wallpaper random")
|
|
(lib.mkIf (config.desktop.wallpaper.enable) "waypaper --restore --random")
|
|
(lib.mkIf (config.gaming.steam.enable) "adwaita-steam-gtk -u; steam -silent")
|
|
(lib.mkIf (config.internet.mail.providers.protonmail.enable) "protonmail-bridge -n")
|
|
];
|
|
"$mod" = "SUPER";
|
|
"$shiftmod" = "SUPER_SHIFT";
|
|
"$controlmod" = "SUPER_CTRL";
|
|
bind = [
|
|
|
|
(lib.mkIf (config.desktop.walker.enable) "$mod, D, exec, walker")
|
|
(lib.mkIf (config.desktop.rofi.enable) "$mod, D, exec, rofi -show drun")
|
|
(lib.mkIf (config.terminal.kitty.enable) "$mod, return, exec, kitty")
|
|
(lib.mkIf (config.desktop.grimblast.enable) ", print, exec, GRIMBLAST_EDITOR=gradia grimblast edit area")
|
|
(lib.mkIf (config.desktop.rofi.enable) (
|
|
lib.mkIf (config.misc.bitwarden.enable) "$mod, B, exec, rbw unlocked || kitty --class kitty-floating -e rbw unlock; rofi-rbw; sleep 30; rbw lock"
|
|
))
|
|
(lib.mkIf (config.desktop.walker.enable) (
|
|
lib.mkIf (config.misc.bitwarden.enable) "$mod, B, exec, rbw unlocked || kitty --class kitty-floating -e rbw unlock; selected=$(rbw list | walker -d); wl-copy $(rbw get \"$selected\"); sleep 30; rbw lock"
|
|
))
|
|
"$mod, F, fullscreen, 1"
|
|
"$shiftmod, F, fullscreen, 0"
|
|
"$shiftmod, Q, killactive,"
|
|
"$mod, S, togglespecialworkspace, magic"
|
|
"$mod, O, exec, zen"
|
|
"$shiftmod, S, movetoworkspace, special:magic"
|
|
"$controlmod, right, workspace, m+1"
|
|
"$controlmod, left, workspace, m-1"
|
|
"$mod, mouse_down, workspace, m-1"
|
|
"$mod, mouse_up, workspace, m+1"
|
|
"$mod, left, movefocus, l"
|
|
"$mod, right, movefocus, r"
|
|
"$mod, up, movefocus, u"
|
|
"$mod, down, movefocus, d"
|
|
"$mod, J, exec, playerctl previous"
|
|
"$mod, K, exec, playerctl play-pause"
|
|
"$mod, L, exec, playerctl next"
|
|
"$mod, G, togglefloating,"
|
|
# "$mod, H, hyprexpo:expo, toggle"
|
|
"$mod, F1, exec, hyprlock"
|
|
"$shiftmod, E, exec, codium"
|
|
"$controlmod, up, exec, light -A 10"
|
|
"$controlmod, down, exec, light -U 10"
|
|
"$controlmod, Q, exec, hyprctl kill"
|
|
|
|
]
|
|
++ (builtins.concatLists (
|
|
builtins.genList (
|
|
i:
|
|
let
|
|
ws = i + 1;
|
|
in
|
|
[
|
|
"$mod, code:1${toString i}, workspace, ${toString ws}"
|
|
"$shiftmod, code:1${toString i}, movetoworkspacesilent, ${toString ws}"
|
|
]
|
|
) config.desktop.hyprland.workspaces.amount
|
|
));
|
|
bindm = [
|
|
"$mod, mouse:272, movewindow"
|
|
"$mod, mouse:273, resizewindow"
|
|
];
|
|
bindel = [
|
|
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
];
|
|
input = {
|
|
kb_layout = "de";
|
|
numlock_by_default = config.desktop.hyprland.numlock;
|
|
follow_mouse = 2;
|
|
mouse_refocus = false;
|
|
accel_profile = "flat";
|
|
sensitivity = 0.2;
|
|
touchpad = {
|
|
natural_scroll = "no";
|
|
disable_while_typing = true;
|
|
};
|
|
};
|
|
cursor = {
|
|
inactive_timeout = 0;
|
|
no_warps = true;
|
|
};
|
|
decoration = {
|
|
rounding = 20;
|
|
blur = {
|
|
enabled = true;
|
|
size = 3;
|
|
passes = 1;
|
|
};
|
|
shadow = {
|
|
range = 4;
|
|
render_power = 3;
|
|
color = "rgba(1a1a1aee)";
|
|
};
|
|
};
|
|
plugin = {
|
|
hyprexpo = {
|
|
columns = 2;
|
|
gap_size = 20;
|
|
bg_col = "rgb(e1e1e2)";
|
|
workspace_method = "first 1";
|
|
enable_gesture = true;
|
|
gesture_distance = 300;
|
|
gesture_positive = true;
|
|
gesture_negative = true;
|
|
};
|
|
hyprtrails = {
|
|
color = "rgba(1a1a1aee)";
|
|
};
|
|
};
|
|
};
|
|
plugins = [
|
|
inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprtrails
|
|
# inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprexpo
|
|
|
|
];
|
|
};
|
|
home.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
};
|
|
}
|