# Settings for the apps you use directly: terminal, launcher, editor, browser. { config, lib, ... }: let inherit (config.lib.dot) link; in { programs.kitty = { enable = true; settings = { background_opacity = 0; font_size = 12; # JetBrains Mono isn't installed (see fonts.packages in # modules/nixos/desktop.nix), so kitty falls back to Noto Sans Mono. font_family = "JetBrainsMono Nerd Font"; bold_font = "JetBrains Mono Bold"; italic_font = "JetBrains Mono Italic"; bold_italic_font = "JetBrains Mono Bold Italic"; disable_ligatures = "never"; window_padding_width = 10; term = "xterm-256color"; # Do not restore the last window size or maximized state on startup; the # tiling window manager decides the size. Otherwise one kitty closed while # maximized makes every new one open maximized. remember_window_size = false; color0 = "#292d3e"; color1 = "#ff8288"; color2 = "#b4e88d"; color3 = "#f4d69f"; color4 = "#82aaff"; color5 = "#e9c1ff"; color6 = "#89ebff"; color7 = "#d0d0d0"; color8 = "#434758"; color9 = "#ff8b92"; color10 = "#ddffa7"; color11 = "#ffe585"; color12 = "#9cc4ff"; color13 = "#ddb0f6"; color14 = "#a3f7ff"; color15 = "#ffffff"; }; }; # Hyprland's mod + Return runs config/fuzzel/launch (linked in files.nix), # which puts the apps in config/fuzzel/favorites at the top. programs.fuzzel = { enable = true; settings = { main = { font = "NotoSansM Nerd Font Propo:size=12"; # Size fonts like GTK apps do (96 DPI) rather than by the monitors' real # DPI, which made everything bigger. dpi-aware = "no"; terminal = lib.getExe config.programs.kitty.package; # Same icon theme as Qt/KDE (theming.nix). Without it fuzzel mixes each # app's own icon, in different styles and sizes. icon-theme = config.qt.qt6ctSettings.Appearance.icon_theme; list-executables-in-path = "yes"; placeholder = "Search..."; line-height = 36; lines = 5; width = 45; horizontal-pad = 25; vertical-pad = 25; inner-pad = 10; }; # RRGGBBAA. Same near-transparent black as Waybar and the control centre, # over Hyprland's blur (the "launcher" layer rule). colors = { background = "0000001a"; text = "f2f2f2cc"; prompt = "f2f2f2cc"; input = "f2f2f2ff"; placeholder = "f2f2f2cc"; match = "f4d69fff"; selection = "0000001a"; selection-text = "f2f2f2ff"; selection-match = "f4d69fff"; counter = "f2f2f2cc"; }; # Panel 20, rows inside it 10, like the control centre. border = { width = 0; radius = 20; selection-radius = 10; }; }; }; # config/nvim/init.lua. With liveConfig it is loaded from the checkout, so an # edit applies the next time nvim starts. programs.neovim = { enable = true; withRuby = false; withPython3 = false; initLua = if config.dot.liveConfig then ''dofile("${config.dot.repoPath}/config/nvim/init.lua")'' else builtins.readFile ../../config/nvim/init.lua; }; # Firefox: the profile restored from CachyOS, kept by its existing folder and # StoreID (its Profile Groups database). Nixpkgs' Firefox runs with # MOZ_LEGACY_PROFILES, so it opens the profile marked default here. Firefox # itself comes from the system (programs.firefox in modules/nixos/apps.nix). programs.firefox = { enable = true; package = null; profiles.default-release = { path = "3b2nokq1.default-release"; storeId = "be5ac646"; # Written to user.js, which Firefox reads at startup. Setting userChrome # also turns on toolkit.legacyUserProfileCustomizations.stylesheets. settings = { # Restore the previous session. "browser.startup.page" = 3; "browser.sessionstore.resume_from_crash" = true; # Middle mouse scroll. "general.autoScroll" = true; "middlemouse.paste" = false; "general.aboutConfig.enable" = true; "sidebar.animation.enabled" = false; # "image.jxl.enabled" = true; # Browser toolbox and devtools. "devtools.chrome.enabled" = true; "devtools.debugger.remote-enabled" = true; "devtools.cache.disabled" = true; "devtools.netmonitor.persistlog" = true; "devtools.webconsole.persistlog" = true; "devtools.webconsole.timestampMessages" = true; # Hardware video decoding on NVIDIA via VA-API (libva-nvidia-driver). # Firefox blocks NVIDIA for this by default; needs NVD_BACKEND and # MOZ_DISABLE_RDD_SANDBOX from Hyprland's env (desktop.nix) as well. "media.hardware-video-decoding.force-enabled" = true; "media.ffmpeg.vaapi.enabled" = true; "widget.dmabuf.force-enabled" = true; }; userChrome = link "firefox/userChrome.css"; }; }; }