304 lines
10 KiB
Nix
304 lines
10 KiB
Nix
{ config, lib, pkgs, ... }: {
|
|
imports = [
|
|
../default.nix
|
|
../accounts/default.nix
|
|
../swaylock/default.nix
|
|
../waybar/default.nix
|
|
../rofi/default.nix
|
|
../swaync/default.nix
|
|
../emacs/default.nix
|
|
../nyxt/default.nix
|
|
../firefox/default.nix
|
|
../obs/default.nix
|
|
];
|
|
services = {
|
|
gpg-agent.pinentryFlavor = "gnome3";
|
|
avizo.enable = true;
|
|
syncthing.enable = true;
|
|
udiskie = {
|
|
enable = true;
|
|
notify = true;
|
|
automount = true;
|
|
tray = "never";
|
|
};
|
|
};
|
|
programs.foot = {
|
|
enable = true;
|
|
settings = {
|
|
main = {
|
|
pad = "10x10";
|
|
locked-title = false;
|
|
notify-focus-inhibit = true;
|
|
selection-target = "both";
|
|
};
|
|
bell = {
|
|
urgent = true;
|
|
notify = true;
|
|
};
|
|
mouse = { hide-when-typing = "yes"; };
|
|
};
|
|
};
|
|
gtk = {
|
|
enable = true;
|
|
cursorTheme = {
|
|
package = pkgs.catppuccin-cursors.mochaDark;
|
|
name = "Catppuccin-Mocha-Dark-Cursors";
|
|
size = 24;
|
|
};
|
|
iconTheme = {
|
|
package = pkgs.papirus-icon-theme;
|
|
name = "Papirus-Dark";
|
|
};
|
|
theme = {
|
|
package = pkgs.catppuccin-gtk.override {
|
|
accents = [ "lavender" ];
|
|
size = "standard";
|
|
variant = "mocha";
|
|
};
|
|
name = "Catppuccin-Mocha-Standard-Lavender-Dark";
|
|
};
|
|
};
|
|
xdg.configFile = {
|
|
"hypr/extra.conf" = lib.mkDefault { text = ""; };
|
|
"hypr/hyprpaper.conf".text = ''
|
|
preload = ${config.stylix.image}
|
|
wallpaper = ,${config.stylix.image}
|
|
'';
|
|
};
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
systemd.enable = true;
|
|
settings = {
|
|
monitor = [ ",preferred,auto,auto" ];
|
|
env = with config; [
|
|
"XDG_CURRENT_DESKTOP=Hyprland"
|
|
"XDG_SESSION_TYPE=wayland"
|
|
"XDG_SESSION_DESKTOP=Hyprland"
|
|
"GDK_BACKEND=wayland,x11"
|
|
"GTK_THEME,${gtk.theme.name}"
|
|
"XCURSOR_THEME,${gtk.cursorTheme.name}"
|
|
"XCURSOR_SIZE,${toString gtk.cursorTheme.size}"
|
|
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
|
"QT_QPA_PLATFORM,wayland"
|
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
|
"MOZ_ENABLE_WAYLAND,1"
|
|
"GRIM_DEFAULT_DIR=${xdg.userDirs.pictures}/Grim"
|
|
];
|
|
exec-once = with config; [
|
|
"hyprctl setcursor ${gtk.theme.name} ${toString gtk.cursorTheme.size}"
|
|
"git -C $HOME/.emacs pull --ff-only; emacs --fg-daemon"
|
|
"swaync"
|
|
"${pkgs.hyprpaper}/bin/hyprpaper"
|
|
"${pkgs.dex}/bin/dex --autostart"
|
|
];
|
|
gestures.workspace_swipe = true;
|
|
input = {
|
|
kb_layout = "gb";
|
|
kb_options = "ctrl:nocaps";
|
|
follow_mouse = 1;
|
|
touchpad.natural_scroll = "yes";
|
|
};
|
|
master = {
|
|
allow_small_split = true;
|
|
special_scale_factor = 0.95;
|
|
mfact = 0.5;
|
|
new_is_master = false;
|
|
new_on_top = false;
|
|
no_gaps_when_only = 0;
|
|
orientation = "left";
|
|
inherit_fullscreen = false;
|
|
smart_resizing = false;
|
|
drop_at_cursor = true;
|
|
};
|
|
general = {
|
|
"col.active_border" = "rgb(b4befe)";
|
|
"col.inactive_border" = "rgb(313244)";
|
|
gaps_in = 5;
|
|
gaps_out = 10;
|
|
border_size = 1;
|
|
cursor_inactive_timeout = 5;
|
|
layout = "master";
|
|
};
|
|
decoration = {
|
|
rounding = 10;
|
|
"col.shadow" = "rgba(0d0e1c99)";
|
|
drop_shadow = "yes";
|
|
shadow_ignore_window = true;
|
|
shadow_range = 4;
|
|
shadow_render_power = 3;
|
|
blur = {
|
|
enabled = true;
|
|
size = 5;
|
|
passes = 3;
|
|
new_optimizations = true;
|
|
brightness = 1.0;
|
|
noise = 2.0e-2;
|
|
};
|
|
};
|
|
animations = {
|
|
enabled = true;
|
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
|
animation = [
|
|
"windows, 1, 7, myBezier"
|
|
"windowsOut, 1, 7, default, popin 80%"
|
|
"border, 1, 10, default"
|
|
"borderangle, 1, 8, default"
|
|
"fade, 1, 7, default"
|
|
"workspaces, 1, 6, default"
|
|
];
|
|
};
|
|
misc = {
|
|
disable_splash_rendering = true;
|
|
disable_autoreload = true;
|
|
mouse_move_enables_dpms = true;
|
|
key_press_enables_dpms = true;
|
|
};
|
|
xwayland.force_zero_scaling = true;
|
|
layerrule = let
|
|
blur = x: "blur, ^(${x})$";
|
|
ignorealpha = x: "ignorealpha 0.3, ^(${x})$";
|
|
layers = [
|
|
"waybar"
|
|
"system-menu"
|
|
"rofi"
|
|
"gtk-layer-shell"
|
|
"notifications"
|
|
"swaync-.*"
|
|
];
|
|
in (lib.lists.forEach layers blur)
|
|
++ (lib.lists.forEach layers ignorealpha);
|
|
windowrule = [
|
|
# Float + move system windows
|
|
"float,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"center,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"pin,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"dimaround,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"stayfocused,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"float,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)"
|
|
"size 800 600,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)"
|
|
"move onscreen 100%-820 60,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)"
|
|
|
|
# LibreOffice
|
|
"nomaximizerequest, (libreoffice|soffice)(.*)"
|
|
"nofullscreenrequest, (libreoffice|soffice)(.*)"
|
|
|
|
# Remmina / NoMachine
|
|
"nofullscreenrequest,(org.remmina.Remmina|Nxplayer.bin)"
|
|
"nomaximizerequest,(org.remmina.Remmina|Nxplayer.bin)"
|
|
];
|
|
windowrulev2 = [
|
|
# Firefox PIP
|
|
"float,title:(Picture-in-Picture|Library),class:(firefox)"
|
|
"size 750 400,title:(Picture-in-Picture),class:(firefox)"
|
|
"size 800 800,title:(Library),class:(firefox)"
|
|
"move onscreen 100%-775 100%-425,title:(Picture-in-Picture),class:(firefox)"
|
|
"center,title:(Library),class:(firefox)"
|
|
"pin,title:(Picture-in-Picture),class:(firefox)"
|
|
|
|
# LibreOffice
|
|
"float,title:(Open),class:(libreoffice|soffice)(.*))"
|
|
|
|
# Steam
|
|
"float,title:(Friends List),class:(steam)"
|
|
"float,title:(Steam Settings),class:(steam)"
|
|
|
|
# Remmina / NoMachine
|
|
"float,title:(Remmina Remote Desktop Client|Remmina Preferences),class:(org.remmina.Remmina)"
|
|
"size 800 600,title:(Remmina Remote Desktop Client|Remmina Preferences),class:(org.remmina.Remmina)"
|
|
"move onscreen 100%-820 60,title:(Remmina Remote Desktop Client|Remmina Preferences),class:(org.remmina.Remmina)"
|
|
];
|
|
bind = let
|
|
workspace = w: [
|
|
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
|
|
"SUPER, ${toString w}, workspace, ${toString w}"
|
|
"SUPER SHIFT, ${toString w}, movetoworkspace, ${toString w}"
|
|
];
|
|
in with lib.lists;
|
|
flatten (forEach (range 1 9) workspace) ++ [
|
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
"SUPER, F1, exec, ${pkgs.swaylock-effects}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse"
|
|
"SUPER, Q, killactive,"
|
|
"SUPER SHIFT, Q, exec, rofi -replace -show power-menu"
|
|
"SUPER, V, togglefloating"
|
|
"SUPER, M, fullscreen, 0"
|
|
"SUPER SHIFT, M, fullscreen, 1"
|
|
"SUPER, tab, exec, rofi -replace -show window"
|
|
"SUPER, P, exec, pkill rofi || rofi-pass"
|
|
"SUPER SHIFT, P, exec, pkill rofi || rofi-pass --last-used"
|
|
"SUPER ALT, P, exec, pkill rofi || rofi-pass --insert"
|
|
"SUPER, Z, exec, swaync-client -t -sw"
|
|
"SUPER SHIFT, Z, exec, swaync-client -d -sw"
|
|
|
|
# Common program shortcuts
|
|
"SUPER, Space, exec, rofi -replace -show combi"
|
|
"SUPER, Return, exec, foot"
|
|
"SUPER SHIFT, Return, exec, emacsclient -c"
|
|
"SUPER, S, exec, foot -e btm --group --battery"
|
|
"SUPER, W, exec, nyxt --no-socket --with-file bookmarks=${
|
|
../nyxt/bookmarks.lisp
|
|
}"
|
|
"SUPER, F, exec, thunar $HOME"
|
|
|
|
# Misc useful binds
|
|
'',Print,exec,${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)"''
|
|
",XF86Calculator,exec,rofi -replace -show calc"
|
|
|
|
# Movement binds
|
|
"SUPER, H, movefocus, l"
|
|
"SUPER, L, movefocus, r"
|
|
"SUPER, K, movefocus, u"
|
|
"SUPER, J, movefocus, d"
|
|
"SUPER SHIFT, H, movewindow, l"
|
|
"SUPER SHIFT, L, movewindow, r"
|
|
"SUPER SHIFT, K, movewindow, u"
|
|
"SUPER SHIFT, J, movewindow, d"
|
|
|
|
# Special workspaces
|
|
"SUPER, comma, workspace, r-1"
|
|
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
|
"SUPER, period, workspace, r+1"
|
|
"SUPER SHIFT, period, movetoworkspace, r+1"
|
|
"SUPER, N, workspace, empty"
|
|
"SUPER SHIFT, N, movetoworkspace, empty"
|
|
"SUPER, minus, togglespecialworkspace"
|
|
"SUPER SHIFT, minus, movetoworkspace, special"
|
|
"SUPER, bracketright, focusmonitor, +1"
|
|
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
|
"SUPER, bracketleft, focusmonitor, -1"
|
|
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
|
"SUPER, O, focusurgentorlast"
|
|
];
|
|
bindl = [
|
|
# Sound
|
|
",XF86AudioMute,exec,${pkgs.avizo}/bin/volumectl %"
|
|
",XF86AudioMicMute,exec,${pkgs.avizo}/bin/volumectl -m %"
|
|
|
|
# Playback
|
|
",XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
|
",XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
|
",XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous"
|
|
",XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next"
|
|
];
|
|
bindle = [
|
|
# Sound
|
|
",XF86AudioRaiseVolume,exec,${pkgs.avizo}/bin/volumectl -u + 5"
|
|
",XF86AudioLowerVolume,exec,${pkgs.avizo}/bin/volumectl -u - 5"
|
|
|
|
# Brightness
|
|
",XF86MonBrightnessUp,exec,${pkgs.avizo}/bin/lightctl + 5"
|
|
",XF86MonBrightnessDown,exec,${pkgs.avizo}/bin/lightctl - 5"
|
|
];
|
|
bindm = [
|
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
"SUPER, mouse:272, movewindow"
|
|
"SUPER, mouse:273, resizewindow"
|
|
];
|
|
};
|
|
extraConfig = ''
|
|
exec-once = systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME
|
|
exec-once = systemctl --user restart "xdg-desktop-portal*"
|
|
'';
|
|
};
|
|
}
|