From d86a8b884e677f97f04b1c547def7494ffaff8fd Mon Sep 17 00:00:00 2001 From: Eclypsed Date: Sun, 22 Feb 2026 16:12:08 -0500 Subject: [PATCH] Additional Helix & Niri configuration. Various cleanups --- flake.lock | 18 +- modules/home/assets.nix | 12 - modules/home/default.nix | 6 +- modules/home/firefox.nix | 16 ++ modules/home/helix.nix | 320 +++++++++++++++++++++------ modules/home/kanshi.nix | 3 - modules/home/niri.nix | 83 +++++-- modules/home/noctalia.nix | 8 +- modules/home/packages.nix | 1 - modules/home/screenshot.nix | 2 +- modules/home/ssh.nix | 3 - modules/home/stylix.nix | 91 ++++---- modules/home/terminal.nix | 39 ++-- modules/home/vesktop.nix | 3 - modules/home/vicinae.nix | 7 +- modules/home/xdg.nix | 13 +- modules/home/zen-browser.nix | 2 +- modules/overlays/default.nix | 3 - modules/system/default.nix | 4 - modules/system/desktop.nix | 12 +- modules/system/services.nix | 4 + modules/{system => unused}/fonts.nix | 0 22 files changed, 445 insertions(+), 205 deletions(-) delete mode 100644 modules/home/assets.nix rename modules/{system => unused}/fonts.nix (100%) diff --git a/flake.lock b/flake.lock index 25d687a..952f14b 100644 --- a/flake.lock +++ b/flake.lock @@ -375,11 +375,11 @@ ] }, "locked": { - "lastModified": 1769132734, - "narHash": "sha256-gmU9cRplrQWqoback9PgQX7Dlsdx8JlhlVZwf0q1F7E=", + "lastModified": 1771683283, + "narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=", "owner": "nix-community", "repo": "home-manager", - "rev": "d055b309a6277343cb1033a11d7500f0a0f669fc", + "rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a", "type": "github" }, "original": { @@ -515,11 +515,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1769461804, - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", + "rev": "0182a361324364ae3f436a63005877674cf45efb", "type": "github" }, "original": { @@ -552,11 +552,11 @@ ] }, "locked": { - "lastModified": 1770002874, - "narHash": "sha256-UOjvZXyZLZv0dP9GZPjis8IRxmrIoMt8c25WGCt7+hU=", + "lastModified": 1771434371, + "narHash": "sha256-1ivy5+FBZMSojnduPnG6K8w5EFxyP61vthmLXzfGwco=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "a8d74633f6920b91edf102e33a812af8489e2c88", + "rev": "04589a4f58c7315b035633a274d1fc820d34c31a", "type": "github" }, "original": { diff --git a/modules/home/assets.nix b/modules/home/assets.nix deleted file mode 100644 index 5a4d5fe..0000000 --- a/modules/home/assets.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - config, - ... -}: -{ - home.file.".face".source = ../../assets/profile-picture.jpg; - - home.file."${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}" = { - source = ../../assets/wallpapers; - recursive = true; - }; -} diff --git a/modules/home/default.nix b/modules/home/default.nix index 7808845..4ee746c 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,9 +1,5 @@ -{ - ... -}: { imports = [ - ./assets.nix ./firefox.nix ./git.nix ./helix.nix @@ -21,6 +17,6 @@ ./xdg.nix ./yazi.nix ./zed.nix - ./zen-browser.nix + # ./zen-browser.nix ]; } diff --git a/modules/home/firefox.nix b/modules/home/firefox.nix index 6da552b..5e4cd54 100644 --- a/modules/home/firefox.nix +++ b/modules/home/firefox.nix @@ -117,6 +117,22 @@ icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@np" ]; }; + home-manager = { + name = "Home Manager"; + urls = [ + { + template = "https://home-manager-options.extranix.com"; + params = [ + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@hm" ]; + }; surugaya = { name = "Surugaya"; urls = [ diff --git a/modules/home/helix.nix b/modules/home/helix.nix index 5d3bbfe..45ea23b 100644 --- a/modules/home/helix.nix +++ b/modules/home/helix.nix @@ -26,15 +26,82 @@ in enable = true; defaultEditor = true; extraPackages = with pkgs; [ - basedpyright - ruff - isort - black - nixd - nixfmt - rust-analyzer - rustfmt + basedpyright # Python static type checker + ruff # Pyhton linter and formatter + nixd # Nix language server + nixfmt # Nix formatter + rust-analyzer # Rust language server + rustfmt # Rust formmater + clippy # Rust linter + lldb # Debugger for llvm languages + marksman # Markdown language server + markdown-oxide # Markdown PKM language server + rumdl # Markdown linter and formatter + libclang # C language family frontend for LLVM + typescript-language-server # Typescript language server + vscode-langservers-extracted # HTML/CSS/JSON/ESLint language servers extracted from vscode + emmet-language-server # Emmet support based on LSP + prettier # Formatter for HTML/CSS/JSON/ESLint languages + superhtml # HTML Language Server and Templating Language Library ]; + settings = { + editor = { + line-number = "relative"; + cursorline = true; + auto-format = true; + completion-timeout = 5; + completion-trigger-len = 1; + bufferline = "always"; + color-modes = true; + end-of-line-diagnostics = "hint"; + lsp = { + display-inlay-hints = true; + }; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + indent-guides = { + render = true; + skip-levels = 1; + }; + soft-wrap = { + enable = true; + max-indent-retain = 80; + }; + inline-diagnostics = { + cursor-line = "warning"; + }; + }; + keys = + let + arrow_keys = { + "up" = "jump_view_up"; + "down" = "jump_view_down"; + "left" = "jump_view_left"; + "right" = "jump_view_right"; + }; + in + { + normal = { + "C-y" = + ":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- yazi-picker open %{buffer_name}"; + } + // arrow_keys; + insert = { + "C-k" = "move_visual_line_up"; + "C-j" = "move_visual_line_down"; + "C-h" = "move_char_left"; + "C-l" = "move_char_right"; + } + // arrow_keys; + select = { } // arrow_keys; + }; + theme = "catppuccin_mocha"; + }; + # Check https://github.com/helix-editor/helix/blob/master/languages.toml for default language configuration + # Only explictly set options you want to override / make explicit languages = { language = [ { @@ -45,10 +112,10 @@ in ]; auto-format = true; formatter = { - command = "bash"; # We have to use bash to call both isort and black + command = "ruff"; args = [ - "-c" - "isort --profile black - | black --quiet --line-length=79 -" # Line length of 79 in accordance with PEP 8 + "format" + "-" ]; }; } @@ -62,75 +129,194 @@ in } { name = "rust"; - language-servers = [ "rust-analyzer" ]; auto-format = true; - roots = [ - "Cargo.toml" - "Cargo.lock" - ]; formatter = { command = "rustfmt"; }; } + { + name = "markdown"; + auto-format = true; + formatter = { + command = "rumdl"; + args = [ + "fmt" + "-" + ]; + }; + } + { + name = "c"; + file-types = [ + "c" + "h" + ]; # "h" is currently missing from the default config + auto-format = true; + formatter = { + command = "clang-format"; + args = [ + "--style=WebKit" + ]; + }; + } + { + name = "typescript"; + language-servers = [ + "typescript-language-server" + "vscode-eslint-language-server" + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "typescript" + ]; + }; + } + { + name = "tsx"; + language-servers = [ + "typescript-language-server" + "vscode-eslint-language-server" + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "typescript" + ]; + }; + } + { + name = "javascript"; + language-servers = [ + "typescript-language-server" + "vscode-eslint-language-server" + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "typescript" + ]; + }; + } + { + name = "jsx"; + language-servers = [ + "typescript-language-server" + "vscode-eslint-language-server" + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "typescript" + ]; + }; + } + { + name = "json"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "json" + ]; + }; + } + { + name = "jsonc"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "jsonc" + ]; + }; + } + { + name = "html"; + language-servers = [ + "vscode-html-language-server" + { + name = "superhtml"; + except-features = [ "format" ]; + } + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "html" + ]; + }; + } + { + name = "css"; + language-servers = [ + "vscode-css-language-server" + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "css" + ]; + }; + } + { + name = "scss"; + language-servers = [ + "vscode-css-language-server" + "emmet-language-server" + ]; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "scss" + ]; + }; + } ]; language-server = { - basedpyright.config.python.analysis = { - typeCheckingMode = "strict"; + basedpyright.config.python.analysis.typeCheckingMode = "strict"; + rust-analyzer.config.check.command = "clippy"; + emmet-language-server = { + command = "emmet-language-server"; + args = [ "--stdio" ]; }; - ruff = { - command = "ruff"; - args = [ "server" ]; - }; - nixd = { - command = "nixd"; - }; - rust-analyzer = { - command = "rust-analyzer"; + vscode-eslint-language-server = { config = { - inlayHints = { - bindingModeHints.enable = false; - closingBraceHints.minLines = 10; - closureReturnTypeHints.enable = "with_block"; - discriminantHints.enable = "fieldless"; - lifetimeElisionHints.enable = "skip_trivial"; - typeHints.hideClosureInitialization = false; + # Automatically fix ESLint errors + codeActionsOnSave = { + mode = "all"; + "source.fixAll.eslint" = true; + }; + quiet = false; + experimental = { + # Support for the modern ESLint configuration format + useFlatConfig = true; }; }; }; }; }; - settings = { - editor = { - bufferline = "always"; - completion-timeout = 5; - completion-trigger-len = 1; - line-number = "relative"; - cursorline = true; - color-modes = true; - cursor-shape = { - insert = "bar"; - normal = "block"; - select = "underline"; - }; - lsp = { - display-inlay-hints = true; - }; - indent-guides = { - render = true; - skip-levels = 1; - }; - soft-wrap = { - enable = true; - max-indent-retain = 80; - }; - }; - keys = { - normal = { - "C-y" = - ":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- yazi-picker open %{buffer_name}"; - }; - }; - theme = "catppuccin_mocha"; - }; }; } diff --git a/modules/home/kanshi.nix b/modules/home/kanshi.nix index 84d2bf5..d482a94 100644 --- a/modules/home/kanshi.nix +++ b/modules/home/kanshi.nix @@ -1,6 +1,3 @@ -{ - ... -}: { services.kanshi = { enable = true; diff --git a/modules/home/niri.nix b/modules/home/niri.nix index 879f669..299a548 100644 --- a/modules/home/niri.nix +++ b/modules/home/niri.nix @@ -80,6 +80,8 @@ in repeat = false; hotkey-overlay.title = "Session menu"; }; + + # Notifications "Mod+N" = { action.spawn = [ noctalia-shell @@ -91,6 +93,17 @@ in repeat = false; hotkey-overlay.title = "Show notifications"; }; + "Mod+Ctrl+N" = { + action.spawn = [ + noctalia-shell + "ipc" + "call" + "notifications" + "clear" + ]; + repeat = false; + hotkey-overlay.title = "Clear notifications"; + }; # Media keys "XF86AudioPrev" = { @@ -292,28 +305,33 @@ in hotkey-overlay.title = "Decrease window height"; }; "Mod+Z" = { - action.switch-focus-between-floating-and-tiling = { }; + action.toggle-window-floating = { }; repeat = false; hotkey-overlay.title = "Toggle floating"; }; + "Mod+T" = { + action.toggle-column-tabbed-display = { }; + repeat = false; + hotkey-overlay.title = "Toggle tabbed column"; + }; # Window and column movement - "Mod+Up" = { + "Mod+K" = { action.focus-window-or-monitor-up = { }; repeat = false; hotkey-overlay.title = "Focus window up"; }; - "Mod+Down" = { + "Mod+J" = { action.focus-window-or-monitor-down = { }; repeat = false; hotkey-overlay.title = "Focus window down"; }; - "Mod+Left" = { + "Mod+H" = { action.focus-column-or-monitor-left = { }; repeat = false; hotkey-overlay.title = "Focus window left"; }; - "Mod+Right" = { + "Mod+L" = { action.focus-column-or-monitor-right = { }; repeat = false; hotkey-overlay.title = "Focus window right"; @@ -328,44 +346,44 @@ in repeat = false; hotkey-overlay.title = "Move window right"; }; - "Mod+Shift+Up" = { + "Mod+Shift+K" = { action.move-column-to-monitor-up = { }; repeat = false; hotkey-overlay.title = "Move column up"; }; - "Mod+Shift+Down" = { + "Mod+Shift+J" = { action.move-column-to-monitor-down = { }; repeat = false; hotkey-overlay.title = "Move column down"; }; - "Mod+Shift+Left" = { + "Mod+Shift+H" = { action.move-column-left-or-to-monitor-left = { }; repeat = false; hotkey-overlay.title = "Move column left"; }; - "Mod+Shift+Right" = { + "Mod+Shift+L" = { action.move-column-right-or-to-monitor-right = { }; repeat = false; hotkey-overlay.title = "Move column right"; }; # Workspaces - "Mod+Ctrl+Up" = { + "Mod+Ctrl+K" = { action.focus-workspace-up = { }; repeat = false; hotkey-overlay.title = "Focus workspace up"; }; - "Mod+Ctrl+Down" = { + "Mod+Ctrl+J" = { action.focus-workspace-down = { }; repeat = false; hotkey-overlay.title = "Focus workspace down"; }; - "Mod+Ctrl+Shift+Up" = { + "Mod+Ctrl+Shift+K" = { action.move-column-to-workspace-up = { }; repeat = false; hotkey-overlay.title = "Move column to workspace up"; }; - "Mod+Ctrl+Shift+Down" = { + "Mod+Ctrl+Shift+J" = { action.move-column-to-workspace-down = { }; repeat = false; hotkey-overlay.title = "Move column to workspace down"; @@ -381,13 +399,32 @@ in window-rules = [ { geometry-corner-radius = { - bottom-left = 5.0; - bottom-right = 5.0; - top-left = 5.0; - top-right = 5.0; + bottom-left = 10.0; + bottom-right = 10.0; + top-left = 10.0; + top-right = 10.0; }; clip-to-geometry = true; } + # Unfortunately windows like firefox extensions set their titles after spawning preventing + # the window rules from being applied. There is a script to fix this but it is pretty hacky. + # { + # matches = [ + # { + # title = "^Extension:.*"; + # app-id = "firefox"; + # } + # ]; + # open-floating = true; + # } + { + matches = [ + { app-id = "foot"; } + { app-id = "Alacritty"; } + ]; + opacity = 0.93; + default-column-width.proportion = 0.4; + } ]; layer-rules = [ { @@ -397,7 +434,7 @@ in } ]; prefer-no-csd = true; - screenshot-path = "${config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR}/%Y%m%d-%H%M%S.png"; + screenshot-path = "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png"; hotkey-overlay = { skip-at-startup = true; }; @@ -406,13 +443,17 @@ in # { argv = [ "noctalia-shell" ]; } # ]; cursor = { - size = 16; - theme = "catppuccin-mocha-dark-cursors"; + size = config.stylix.cursor.size; + theme = config.stylix.cursor.name; hide-when-typing = true; }; gestures = { hot-corners.enable = false; }; + xwayland-satellite = { + enable = true; + path = lib.getExe pkgs.xwayland-satellite-unstable; + }; environment = { "NIXOS_OZONE_WL" = "1"; }; @@ -420,7 +461,7 @@ in # Allows notification actions and window activation from Noctalia. honor-xdg-activation-with-invalid-serial = { }; }; - # Support for external 'inclues' sounds like it is in the works. + # Support for external 'includes' sounds like it is in the works. # Will just have to wait until then for noctalia color scheme integration. }; }; diff --git a/modules/home/noctalia.nix b/modules/home/noctalia.nix index 71faad5..e05b317 100644 --- a/modules/home/noctalia.nix +++ b/modules/home/noctalia.nix @@ -14,6 +14,8 @@ settings = { general = { avatarImage = "~/.face"; + autoStartAuth = true; + allowPasswordWithFprintd = true; }; location.name = "Washington DC"; bar = { @@ -45,6 +47,10 @@ }; templates = { activeTemplates = [ + { + enabled = true; + id = "alacritty"; + } { enabled = true; id = "discord"; @@ -91,7 +97,7 @@ wallpaper = { enabled = true; overviewEnabled = true; - directory = "${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}"; + directory = "${config.xdg.userDirs.extraConfig.WALLPAPERS}"; }; colorSchemes.predefinedScheme = "Catppuccin"; }; diff --git a/modules/home/packages.nix b/modules/home/packages.nix index d62b7f3..f07c759 100644 --- a/modules/home/packages.nix +++ b/modules/home/packages.nix @@ -11,7 +11,6 @@ programs.nix-jmu-cs345.enable = true; home.packages = with pkgs; [ - zoom-us devenv htop obsidian diff --git a/modules/home/screenshot.nix b/modules/home/screenshot.nix index 4911581..b8ff8f2 100644 --- a/modules/home/screenshot.nix +++ b/modules/home/screenshot.nix @@ -15,7 +15,7 @@ # Configuration options: https://github.com/jtheoof/swappy?tab=readme-ov-file#config settings = { Default = { - save_dir = config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR; + save_dir = config.xdg.userDirs.extraConfig.SCREENSHOTS; save_filename_format = "%Y%m%d-%H%M%S.png"; show_panel = false; auto_save = false; diff --git a/modules/home/ssh.nix b/modules/home/ssh.nix index 8e6ba22..ae4d7f2 100644 --- a/modules/home/ssh.nix +++ b/modules/home/ssh.nix @@ -1,6 +1,3 @@ -{ - ... -}: { programs.ssh = { enable = true; diff --git a/modules/home/stylix.nix b/modules/home/stylix.nix index ef54334..6d3ceec 100644 --- a/modules/home/stylix.nix +++ b/modules/home/stylix.nix @@ -9,20 +9,28 @@ inputs.stylix.homeModules.stylix ]; + # Not really using stylix as it was intended because IMO it sets too many defaults for some + # programs and not enought for others, meaning I wind up setting a lot myself anyway. That + # being said it provides a nice structure for setting fonts, cursors, icons, etc. stylix = { enable = true; autoEnable = false; polarity = "dark"; base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; cursor = { - name = "Catppuccin-Mocha-Dark-Cursors"; + name = "catppuccin-mocha-dark-cursors"; package = pkgs.catppuccin-cursors.mochaDark; size = 16; }; + # For some reason setting the fonts' package option doesn't work. + # Just use home.packages instead fonts = { - monospace = { - name = "JetBrainsMono Nerd Font"; - package = pkgs.nerd-fonts.jetbrains-mono; + monospace.name = "JetBrainsMono Nerd Font"; + sansSerif.name = "Noto Sans"; + emoji.name = "Noto Color Emoji"; + sizes = { + applications = 12; + terminal = 12; }; }; icons = { @@ -31,60 +39,51 @@ light = "MoreWaita"; dark = "MoreWaita"; }; - targets = { - foot = { - enable = true; - fonts.enable = true; - colors.enable = false; - inputs.enable = false; - opacity.enable = false; - }; - }; }; + # Fonts + home.packages = with pkgs; [ + nerd-fonts.jetbrains-mono + noto-fonts + noto-fonts-cjk-sans + noto-fonts-color-emoji + ]; + gtk = { enable = true; - colorScheme = "dark"; - iconTheme.name = "MoreWaita"; + colorScheme = config.stylix.polarity; + # iconTheme is set by default by stylix.icons.enable theme = { - name = "adw-gtk3-dark"; + name = "adw-gtk3-${config.stylix.polarity}"; package = pkgs.adw-gtk3; }; }; - qt = { - enable = true; - platformTheme.name = "qtct"; - style.name = "breeze"; - qt5ctSettings = { - Appearance = { - color_scheme_path = "${config.xdg.configHome}/qt5ct/colors/noctalia.conf"; - custom_palette = true; - icon_theme = "MoreWaita"; - standard_dialogs = "xdgdesktopportal"; - style = "Breeze"; - }; - Fonts = { - fixed = "\"JetBrainsMono Nerd Font Mono,12\""; - general = "\"JetBrainsMono Nerd Font Propo,12\""; + qt = + let + qt_settings = ver: { + Appearance = { + color_scheme_path = "${config.xdg.configHome}/${ver}/colors/noctalia.conf"; + custom_palette = true; + icon_theme = config.stylix.icons.${config.stylix.polarity}; + standard_dialogs = "xdgdesktopportal"; + style = "Breeze"; + }; + Fonts = { + fixed = "\"${config.stylix.fonts.monospace.name},${toString config.stylix.fonts.sizes.applications}\""; + general = "\"${config.stylix.fonts.sansSerif.name},${toString config.stylix.fonts.sizes.applications}\""; + }; }; + in + { + enable = true; + platformTheme.name = "qtct"; + style.name = "breeze"; + qt5ctSettings = qt_settings "qt5ct"; + qt6ctSettings = qt_settings "qt6ct"; }; - qt6ctSettings = { - Appearance = { - color_scheme_path = "${config.xdg.configHome}/qt6ct/colors/noctalia.conf"; - custom_palette = true; - icon_theme = "MoreWaita"; - standard_dialogs = "xdgdesktopportal"; - style = "Breeze"; - }; - Fonts = { - fixed = "\"JetBrainsMono Nerd Font Mono,12\""; - general = "\"JetBrainsMono Nerd Font Propo,12\""; - }; - }; - }; home.sessionVariables = { - QS_ICON_THEME = "MoreWaita"; + QS_ICON_THEME = config.stylix.icons.${config.stylix.polarity}; }; } diff --git a/modules/home/terminal.nix b/modules/home/terminal.nix index bd4459d..41405d6 100644 --- a/modules/home/terminal.nix +++ b/modules/home/terminal.nix @@ -5,6 +5,21 @@ }: { programs = { + alacritty = { + enable = true; + settings = { + general = { + import = [ "${config.xdg.configHome}/alacritty/themes/noctalia.toml" ]; + }; + font = { + normal = { + family = "${config.stylix.fonts.monospace.name}"; + style = "Regular"; + }; + size = config.stylix.fonts.sizes.terminal; + }; + }; + }; direnv = { enable = true; enableZshIntegration = true; @@ -19,6 +34,8 @@ main = { term = "xterm-256color"; include = "${config.xdg.configHome}/foot/themes/noctalia"; + dpi-aware = "no"; + font = "${config.stylix.fonts.monospace.name}:size=${toString config.stylix.fonts.sizes.terminal}"; }; mouse = { hide-when-typing = "yes"; @@ -35,18 +52,18 @@ settings = { add_newline = true; format = pkgs.lib.concatStrings [ - "[ ╭─$username([@](bold 3)$hostname) $directory( $git_branch $git_status)](5)" + "[ ╭─[\\[](1)$username([@](bold 2)$hostname)[\\]:](1) $directory( $git_branch)](5)" "$line_break" "[ ╰─$character](5)" ]; username = { style_root = "white"; - format = "[$user](5)"; + format = "[$user](3)"; disabled = false; show_always = true; }; hostname = { - format = "[$hostname](bold 7)"; + format = "[$hostname](bold 4)"; disabled = false; ssh_only = false; }; @@ -57,7 +74,7 @@ }; directory = { read_only = ""; - format = "[ $path](blue)"; + format = "[ $path](5)"; read_only_style = "bold white"; truncation_length = 5; }; @@ -66,20 +83,6 @@ style = "bright-black"; format = "[$symbol $branch]($style)"; }; - git_status = { - format = "([$all_status$ahead_behind](1))"; - conflicted = "󱐋"; - ahead = "⇡\${count}"; - behind = "⇣\${count}"; - diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; - up_to_date = ""; - untracked = "?\${count}"; - stashed = "$${count}"; - modified = "!\${count}"; - staged = "+\${count}"; - renamed = "»\${count}"; - deleted = "✘\${count}"; - }; scan_timeout = 100; }; }; diff --git a/modules/home/vesktop.nix b/modules/home/vesktop.nix index 2833351..dd9d2b3 100644 --- a/modules/home/vesktop.nix +++ b/modules/home/vesktop.nix @@ -1,6 +1,3 @@ -{ - ... -}: { programs.vesktop = { enable = true; diff --git a/modules/home/vicinae.nix b/modules/home/vicinae.nix index c8c1717..3f76f7e 100644 --- a/modules/home/vicinae.nix +++ b/modules/home/vicinae.nix @@ -1,4 +1,5 @@ { + config, ... }: { @@ -18,17 +19,17 @@ font = { normal = { size = 12; - normal = "JetBrainsMono Nerd Font"; + normal = "${config.stylix.fonts.sansSerif.name}"; }; }; theme = { light = { name = "noctalia"; - icon_theme = "MoreWaita"; + icon_theme = "${config.stylix.icons.light}"; }; dark = { name = "noctalia"; - icon_theme = "MoreWaita"; + icon_theme = "${config.stylix.icons.dark}"; }; }; }; diff --git a/modules/home/xdg.nix b/modules/home/xdg.nix index da073ce..adeb581 100644 --- a/modules/home/xdg.nix +++ b/modules/home/xdg.nix @@ -18,10 +18,17 @@ enable = true; createDirectories = true; extraConfig = { - XDG_DEV_DIR = "${config.home.homeDirectory}/Dev"; - XDG_WALLPAPERS_DIR = "${config.xdg.userDirs.pictures}/Wallpapers"; - XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + DEV = "${config.home.homeDirectory}/Dev"; + WALLPAPERS = "${config.xdg.userDirs.pictures}/Wallpapers"; + SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots"; }; }; }; + + home.file.".face".source = ../../assets/profile-picture.jpg; + + home.file."${config.xdg.userDirs.extraConfig.WALLPAPERS}" = { + source = ../../assets/wallpapers; + recursive = true; + }; } diff --git a/modules/home/zen-browser.nix b/modules/home/zen-browser.nix index 252466a..5e9586e 100644 --- a/modules/home/zen-browser.nix +++ b/modules/home/zen-browser.nix @@ -8,6 +8,6 @@ ]; programs.zen-browser = { - enable = true; + enable = false; }; } diff --git a/modules/overlays/default.nix b/modules/overlays/default.nix index 73e8e6c..77e54b2 100644 --- a/modules/overlays/default.nix +++ b/modules/overlays/default.nix @@ -1,6 +1,3 @@ -{ - ... -}: { nixpkgs.overlays = [ (import ./heybrochecklog.nix) diff --git a/modules/system/default.nix b/modules/system/default.nix index 261a98e..c7078c9 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -1,13 +1,9 @@ -{ - ... -}: { imports = [ ./agenix.nix ./boot.nix ./desktop.nix ./fileSystems.nix - ./fonts.nix ./network.nix ./packages.nix ./security.nix diff --git a/modules/system/desktop.nix b/modules/system/desktop.nix index 58fa8ef..64bae22 100644 --- a/modules/system/desktop.nix +++ b/modules/system/desktop.nix @@ -1,5 +1,6 @@ { inputs, + pkgs, ... }: { @@ -8,7 +9,10 @@ ]; programs = { - niri.enable = true; + niri = { + enable = true; + package = pkgs.niri-unstable; + }; uwsm = { enable = true; waylandCompositors = { @@ -20,6 +24,12 @@ }; }; + environment.systemPackages = [ pkgs.xwayland-satellite-unstable ]; + + nixpkgs.overlays = [ + inputs.niri.overlays.niri + ]; + services.displayManager = { gdm = { enable = true; diff --git a/modules/system/services.nix b/modules/system/services.nix index 3ec4705..a75981a 100644 --- a/modules/system/services.nix +++ b/modules/system/services.nix @@ -81,6 +81,10 @@ # Enable thermald (only necessary for Intel CPUs) thermald.enable = true; + + fwupd.enable = true; + + fprintd.enable = true; }; powerManagement = { diff --git a/modules/system/fonts.nix b/modules/unused/fonts.nix similarity index 100% rename from modules/system/fonts.nix rename to modules/unused/fonts.nix