{ config, pkgs, ... }: let catppuccin-fuzzel = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "fuzzel"; rev = "0af0e26901b60ada4b20522df739f032797b07c3"; sha256 = "sha256-XpItMGsYq4XvLT+7OJ9YRILfd/9RG1GMuO6J4hSGepg="; }; in { home.packages = with pkgs; [ swaybg swaylock fuzzel xdg-desktop-portal brightnessctl qt6Packages.qt6ct libsForQt5.qt5ct catppuccin-qt5ct ]; home.file = { ".config/niri/scripts" = { source = ./scripts; recursive = true; force = true; }; ".config/fuzzel/colors.ini" = { text = builtins.readFile ( "${catppuccin-fuzzel}/themes/catppuccin-${config.catppuccin.flavor}/${config.catppuccin.accent}.ini" ); force = true; }; ".config/fuzzel/fuzzel.ini" = { text = '' include = /home/sckova/.config/fuzzel/colors.ini font = "Noto Sans:size=12" terminal = "kitty" icons-enabled = yes icon-theme = "Colloid-Dark" layer = "overlay" ''; force = true; }; ".config/qt5ct" = { source = ./qt/qt5ct; recursive = true; force = true; }; ".config/qt6ct" = { source = ./qt/qt6ct; recursive = true; force = true; }; }; gtk = { enable = true; iconTheme = { name = "Colloid-Dark"; package = pkgs.colloid-icon-theme; }; # cursor theme handled in home/hosts/host.nix and in config.kdl gtk3.extraConfig = { gtk-application-prefer-dark-theme = true; }; gtk4.extraConfig = { gtk-application-prefer-dark-theme = true; }; }; qt = { enable = true; # the following will be possible in NixOS 26.05 # https://github.com/nix-community/home-manager/commit/f9d45d664ed06a11861d0ba29e34f390c07bf62e # until this flake is updated, it will use the configs as implemented above # qt5ctSettings = { # Appearance = { # style = "Breeze"; # icon_theme = config.gtk.iconTheme.name; # standar_dialogs = "kde"; # }; # Fonts = { # fixed = "\"NotoSansM Nerd Font Mono,12\""; # general = "\"Noto Sans,12\""; # }; # }; # qt6ctSettings = { # Appearance = { # style = "Breeze"; # icon_theme = config.gtk.iconTheme.name; # standar_dialogs = "kde"; # }; # Fonts = { # fixed = "\"NotoSansM Nerd Font Mono,12\""; # general = "\"Noto Sans,12\""; # }; # }; }; # Cursor / icon env vars for GTK and Qt apps xsession = { enable = true; # only needed for session variable injection windowManager.command = "niri"; # launches niri directly }; # https://github.com/sodiboo/niri-flake/blob/main/docs.md programs.niri.settings = { screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; hotkey-overlay.skip-at-startup = true; prefer-no-csd = true; spawn-at-startup = [ { command = [ "swaybg" "-i" "/home/sckova/.local/share/dailywallpaper.jpg" ]; } ]; overview = { backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; workspace-shadow.enable = false; }; input = { focus-follows-mouse = { enable = true; max-scroll-amount = "0%"; }; keyboard = { numlock = false; repeat-delay = 600; repeat-rate = 25; }; mouse = { enable = true; accel-profile = "adaptive"; natural-scroll = true; }; touchpad = { enable = true; accel-profile = "adaptive"; natural-scroll = true; tap = false; drag = false; }; }; outputs = { "eDP-1" = { scale = 1.75; }; "HDMI-A-1" = { scale = 2; }; }; cursor = { hide-when-typing = true; hide-after-inactive-ms = 2000; size = config.gtk.cursorTheme.size; theme = config.gtk.cursorTheme.name; }; layout = { gaps = 4; background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; default-column-width = { proportion = 0.5; }; preset-column-widths = [ { proportion = 1.0 / 3.0; } { proportion = 1.0 / 2.0; } { proportion = 2.0 / 3.0; } ]; border = { enable = true; width = 1; active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; }; focus-ring = { enable = false; width = 1; active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; }; shadow = { enable = true; spread = 5; offset.x = 0; offset.y = 5; softness = 30; color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; }; }; window-rules = [ { matches = [ { app-id = "firefox$"; title = "^Picture-in-Picture$"; } ]; open-floating = true; default-floating-position = { x = 32; y = 32; relative-to = "bottom-left"; }; } { geometry-corner-radius = { top-left = 16.0; top-right = 16.0; bottom-left = 16.0; bottom-right = 16.0; }; clip-to-geometry = true; } { matches = [ { app-id = "openmw"; title = "OpenMW"; } ]; open-maximized = true; focus-ring.enable = false; border.enable = false; shadow.enable = false; } ]; binds = { "Mod+Shift+Slash".action.show-hotkey-overlay = { }; "Mod+T" = { action.spawn = [ "kitty" ]; hotkey-overlay.title = "Open a Terminal: kitty"; }; "Mod+Space" = { action.spawn = [ "sh" "-c" "noctalia-shell ipc call launcher toggle" ]; hotkey-overlay.title = "Run an Application: Noctalia app launcher"; }; "Super+Alt+L" = { action.spawn = [ "swaylock" ]; hotkey-overlay.title = "Lock the Screen: swaylock"; }; "Super+Alt+S" = { action.spawn = [ "sh" "-c" "pkill orca || exec orca" ]; allow-when-locked = true; hotkey-overlay.title = "Orca screen reader"; }; "XF86AudioRaiseVolume" = { action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" ]; allow-when-locked = true; }; "XF86AudioLowerVolume" = { action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-" ]; allow-when-locked = true; }; "Shift+XF86AudioRaiseVolume" = { action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.01+" ]; allow-when-locked = true; }; "Shift+XF86AudioLowerVolume" = { action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.01-" ]; allow-when-locked = true; }; "XF86AudioMute" = { action.spawn = [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" ]; allow-when-locked = true; }; "XF86AudioMicMute" = { action.spawn = [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle" ]; allow-when-locked = true; }; "XF86MonBrightnessUp" = { action.spawn = [ "/home/sckova/.config/niri/scripts/brightness.sh" "1" ]; allow-when-locked = true; }; "XF86MonBrightnessDown" = { action.spawn = [ "/home/sckova/.config/niri/scripts/brightness.sh" "-1" ]; allow-when-locked = true; }; "Mod+O" = { action.toggle-overview = { }; repeat = false; }; "Mod+Q" = { action.close-window = { }; repeat = false; }; "Mod+Left".action.focus-column-left = { }; "Mod+Down".action.focus-window-down = { }; "Mod+Up".action.focus-window-up = { }; "Mod+Right".action.focus-column-right = { }; "Mod+H".action.focus-column-left = { }; "Mod+J".action.focus-window-down = { }; "Mod+K".action.focus-window-up = { }; "Mod+L".action.focus-column-right = { }; "Mod+Ctrl+Left".action.move-column-left = { }; "Mod+Ctrl+Down".action.move-window-down = { }; "Mod+Ctrl+Up".action.move-window-up = { }; "Mod+Ctrl+Right".action.move-column-right = { }; "Mod+Ctrl+H".action.move-column-left = { }; "Mod+Ctrl+J".action.move-window-down = { }; "Mod+Ctrl+K".action.move-window-up = { }; "Mod+Ctrl+L".action.move-column-right = { }; "Mod+Home".action.focus-column-first = { }; "Mod+End".action.focus-column-last = { }; "Mod+Ctrl+Home".action.move-column-to-first = { }; "Mod+Ctrl+End".action.move-column-to-last = { }; "Mod+Shift+Left".action.focus-monitor-left = { }; "Mod+Shift+Down".action.focus-monitor-down = { }; "Mod+Shift+Up".action.focus-monitor-up = { }; "Mod+Shift+Right".action.focus-monitor-right = { }; "Mod+Shift+H".action.focus-monitor-left = { }; "Mod+Shift+J".action.focus-monitor-down = { }; "Mod+Shift+K".action.focus-monitor-up = { }; "Mod+Shift+L".action.focus-monitor-right = { }; "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; "Mod+Page_Down".action.focus-workspace-down = { }; "Mod+Page_Up".action.focus-workspace-up = { }; "Mod+U".action.focus-workspace-down = { }; "Mod+I".action.focus-workspace-up = { }; "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; "Mod+Shift+Page_Down".action.move-workspace-down = { }; "Mod+Shift+Page_Up".action.move-workspace-up = { }; "Mod+Shift+U".action.move-workspace-down = { }; "Mod+Shift+I".action.move-workspace-up = { }; "Mod+WheelScrollDown" = { action.focus-workspace-down = { }; cooldown-ms = 150; }; "Mod+WheelScrollUp" = { action.focus-workspace-up = { }; cooldown-ms = 150; }; "Mod+Ctrl+WheelScrollDown" = { action.move-column-to-workspace-down = { }; cooldown-ms = 150; }; "Mod+Ctrl+WheelScrollUp" = { action.move-column-to-workspace-up = { }; cooldown-ms = 150; }; "Mod+WheelScrollRight".action.focus-column-right = { }; "Mod+WheelScrollLeft".action.focus-column-left = { }; "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; "Mod+1".action.focus-workspace = 1; "Mod+2".action.focus-workspace = 2; "Mod+3".action.focus-workspace = 3; "Mod+4".action.focus-workspace = 4; "Mod+5".action.focus-workspace = 5; "Mod+6".action.focus-workspace = 6; "Mod+7".action.focus-workspace = 7; "Mod+8".action.focus-workspace = 8; "Mod+9".action.focus-workspace = 9; "Mod+Ctrl+1".action.move-column-to-workspace = 1; "Mod+Ctrl+2".action.move-column-to-workspace = 2; "Mod+Ctrl+3".action.move-column-to-workspace = 3; "Mod+Ctrl+4".action.move-column-to-workspace = 4; "Mod+Ctrl+5".action.move-column-to-workspace = 5; "Mod+Ctrl+6".action.move-column-to-workspace = 6; "Mod+Ctrl+7".action.move-column-to-workspace = 7; "Mod+Ctrl+8".action.move-column-to-workspace = 8; "Mod+Ctrl+9".action.move-column-to-workspace = 9; "Mod+BracketLeft".action.consume-or-expel-window-left = { }; "Mod+BracketRight".action.consume-or-expel-window-right = { }; "Mod+Comma".action.consume-window-into-column = { }; "Mod+Period".action.expel-window-from-column = { }; "Mod+R".action.switch-preset-column-width = { }; "Mod+Shift+R".action.switch-preset-window-height = { }; "Mod+Ctrl+R".action.reset-window-height = { }; "Mod+F".action.maximize-column = { }; "Mod+Shift+F".action.fullscreen-window = { }; "Mod+Ctrl+F".action.expand-column-to-available-width = { }; "Mod+C".action.center-column = { }; "Mod+Ctrl+C".action.center-visible-columns = { }; "Mod+Minus".action.set-column-width = "-10%"; "Mod+Equal".action.set-column-width = "+10%"; "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; "Mod+V".action.toggle-window-floating = { }; "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = { }; "Mod+W".action.toggle-column-tabbed-display = { }; "Print".action.screenshot = { }; "Ctrl+Print".action.screenshot-screen = { }; "Alt+Print".action.screenshot-window = { }; "Mod+Escape" = { action.toggle-keyboard-shortcuts-inhibit = { }; allow-inhibiting = false; }; "Mod+Shift+E".action.quit = { }; "Ctrl+Alt+Delete".action.quit = { }; "Mod+Shift+P".action.power-off-monitors = { }; }; }; }