From d1bb9658ce40918032a1efcb72982cc24ccdbf6b Mon Sep 17 00:00:00 2001 From: Nate Anderson Date: Tue, 10 Feb 2026 22:10:24 -0700 Subject: [PATCH] Add fixes for waybar, update AGENTS, various tweaks, remove helix defn from programs, use shared helix.nix --- AGENTS.md | 57 ++-- frame12/default.nix | 8 + frame12/modules/home-manager/home.nix | 2 + frame12/modules/home-manager/programs.nix | 356 ---------------------- jaci/default.nix | 8 + jaci/dotfiles/foot/foot.ini | 46 --- jaci/dotfiles/helix/config.toml | 169 ---------- jaci/dotfiles/helix/languages.toml | 4 - jaci/dotfiles/kanshi/config | 3 - jaci/dotfiles/waybar/config | 88 ------ jaci/dotfiles/waybar/style.css | 100 ------ jaci/modules/home-manager/home.nix | 2 + jaci/modules/home-manager/programs.nix | 216 ------------- jaci/nixos/hardware-configuration.nix | 11 +- nate-work/default.nix | 8 + nate/default.nix | 8 + shared/modules/home-manager/waybar.nix | 7 +- 17 files changed, 86 insertions(+), 1007 deletions(-) delete mode 100644 jaci/dotfiles/foot/foot.ini delete mode 100644 jaci/dotfiles/helix/config.toml delete mode 100644 jaci/dotfiles/helix/languages.toml delete mode 100644 jaci/dotfiles/kanshi/config delete mode 100644 jaci/dotfiles/waybar/config delete mode 100644 jaci/dotfiles/waybar/style.css diff --git a/AGENTS.md b/AGENTS.md index 989b513..e7c2377 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,34 +1,51 @@ -# AGENTS.md - NixOS Configuration Repository +# AGENTS.md - NixOS Flake Configuration -## Build/Test Commands -```bash -# Validate configuration syntax -nix flake check +## Before Starting Work -# Dry-run build for specific host (test without building) -nix build .#nixosConfigurations..config.system.build.toplevel --dry-run +Run `hostname` to identify current machine. Hostname = flake config name (e.g., `frame12` → `.#frame12`). -# Test configuration without switching -sudo nixos-rebuild test --flake . +## Repository Structure -# Apply configuration changes -sudo nixos-rebuild switch --flake .# +``` +flake.nix # Defines all nixosConfigurations +/ # Per-host configs (frame12, nate, jaci, scrappy, nate-work, luci) + default.nix # Host entry point, sets deskCfg or serverConfig + desktop-configuration.nix # Desktop systems only + modules/ # Host-specific modules (niri, home-manager, user) + nixos/hardware-configuration.nix # Auto-generated, do not edit +shared/ # Reusable modules imported by hosts + modules/ # apps/, home-manager/, services/, system/, user/ + server-configuration.nix # Server base (luci uses this) ``` -## Code Style Guidelines +**Host types:** +- **Desktop** (frame12, nate, jaci, nate-work, scrappy): Use `deskCfg` options, Home Manager, Stylix theming +- **Server** (luci): Uses `serverConfig` options, minimal packages -**Language**: Nix expression language +## Build/Test Commands -**Formatting**: Use 2-4 space indentation (varies by file), no tabs except in some user modules +```bash +nix flake check # Validate syntax +nix build .#nixosConfigurations..config.system.build.toplevel --dry-run +# Must be done by user, agent lacks admin privileges. +sudo nixos-rebuild test --flake .# # Test without switching +sudo nixos-rebuild switch --flake .# # Apply changes +``` -**Imports**: Always import required modules at top: `{ config, lib, pkgs, ... }:` or with additional args like `inputs, outputs, system, timeZone` +## Key Patterns -**Naming**: Use camelCase for options (`userName`, `hostName`, `isDesktopUser`), kebab-case for hostnames, underscores for module names (`main_user`) +**Configuration options:** Desktops set `deskCfg = { userName, hostName, de }`, servers set `serverConfig = { userName, hostName, hostId, ... }` -**Module Pattern**: Define options with `lib.mkOption`, use `lib.mkIf` for conditional config, use `lib.mkMerge` for combining attribute sets +**Module structure:** Options in `options.`, config in `config = lib.mkIf cfg.enable { ... }` -**Error Handling**: Rely on Nix's built-in evaluation errors; use `lib.mkEnableOption` for optional features +**Home Manager:** User config in `/modules/home-manager/home.nix`, packages in `home.packages` -**Types**: Specify types in options: `lib.types.str`, `lib.types.bool`, provide defaults and descriptions for all options +**Shared imports:** `../shared/modules/` for reusable modules -**Comments**: Minimal comments; prefer self-documenting option descriptions; hardware files auto-generated with warnings at top +## Code Style + +- Nix expression language, 2-4 space indent +- camelCase options (`userName`), kebab-case hostnames, underscores for modules (`main_user`) +- `lib.mkOption` with types (`lib.types.str`, `lib.types.bool`), `lib.mkEnableOption` for toggles +- `lib.mkIf` for conditionals, `lib.mkMerge` for combining sets +- Minimal comments; use self-documenting option descriptions diff --git a/frame12/default.nix b/frame12/default.nix index 6f25df0..35fbc17 100644 --- a/frame12/default.nix +++ b/frame12/default.nix @@ -61,6 +61,14 @@ }; }; + # Icon theme for tray applets (nm-applet, etc.) + iconTheme = { + enable = true; + package = pkgs.papirus-icon-theme; + light = "Papirus-Light"; + dark = "Papirus-Dark"; + }; + # Keep custom Framework plymouth theme targets.plymouth.enable = false; }; diff --git a/frame12/modules/home-manager/home.nix b/frame12/modules/home-manager/home.nix index 436d3a4..0374ffa 100644 --- a/frame12/modules/home-manager/home.nix +++ b/frame12/modules/home-manager/home.nix @@ -8,6 +8,7 @@ { imports = [ ../../../shared/modules/apps/firefox/firefox.nix + ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/git-autosync.nix ../niri/niri_home.nix ./programs.nix @@ -19,6 +20,7 @@ home.stateVersion = "25.05"; # Please read the comment before changing. firefoxApp.enable = true; + helixApp.enable = true; fonts.fontconfig.enable = true; # Stylix auto-theming - applies to all programs..enable apps diff --git a/frame12/modules/home-manager/programs.nix b/frame12/modules/home-manager/programs.nix index dba5239..2f24b84 100644 --- a/frame12/modules/home-manager/programs.nix +++ b/frame12/modules/home-manager/programs.nix @@ -40,362 +40,6 @@ }; }; - # - # Editor - # - helix = { - enable = true; - # Stylix sets the theme, but we override syntax tokens for minimal highlighting - # Philosophy: Only keywords, strings, comments, numbers get color - rest is plain text - themes.stylix = { - # Inherit Stylix's base theme (UI, palette, etc.) - inherits = "stylix"; - - # Minimal syntax highlighting - only 4 categories get color - # Comments - stand out - "comment" = { fg = "yellow"; modifiers = ["italic"]; }; - - # Keywords - highlighted and italic - "keyword" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.control" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.directive" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.function" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.operator" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.return" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.storage" = { fg = "magenta"; modifiers = ["italic"]; }; - - # Strings - highlighted - "string" = "green"; - "string.regexp" = "red"; - "string.special" = "green"; - - # Numbers/constants - highlighted - "constant.numeric" = "red"; - "constant.builtin" = "red"; - "constant.character.escape" = "red"; - - # Functions remain plain text - "function" = "text"; - "function.builtin" = "text"; - "function.method" = "text"; - "function.macro" = "text"; - - # Variables remain plain text - "variable" = "text"; - "variable.builtin" = "text"; - "variable.parameter" = "text"; - "variable.other.member" = "text"; - - # Types get subtle highlight - "type" = { fg = "cyan"; modifiers = ["italic"]; }; - "type.builtin" = "cyan"; - - # Top-level definitions get accent - "function.definition" = { fg = "text"; modifiers = ["bold"]; }; - "type.definition" = { fg = "text"; modifiers = ["bold"]; }; - - # Everything else plain - "constructor" = "text"; - "attribute" = "text"; - "label" = "text"; - "namespace" = "text"; - "tag" = "text"; - - # Punctuation slightly dimmed - "punctuation" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.bracket" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.delimiter" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.special" = { fg = "text"; modifiers = ["dim"]; }; - "operator" = { fg = "text"; modifiers = ["dim"]; }; - - # Markup - "markup.heading" = { fg = "cyan"; modifiers = ["bold"]; }; - "markup.list" = "magenta"; - "markup.bold" = { modifiers = ["bold"]; }; - "markup.italic" = { modifiers = ["italic"]; }; - "markup.strikethrough" = { modifiers = ["crossed_out"]; }; - "markup.link.url" = { fg = "blue"; modifiers = ["underlined"]; }; - "markup.link.text" = "magenta"; - "markup.quote" = "green"; - "markup.raw" = "green"; - }; - - settings = { - - keys.normal = { - # Navigation (Colemak-DH) - n = "move_char_left"; - i = "move_visual_line_down"; - e = "move_visual_line_up"; - o = "move_char_right"; - "S-tab" = "jump_backward"; - I = [ "page_cursor_half_down" "align_view_center" ]; - E = [ "page_cursor_half_up" "align_view_center" ]; - - # Modes - h = "insert_mode"; - H = "insert_at_line_start"; - l = "open_below"; - L = "open_above"; - - # Search - k = "search_next"; - K = "search_prev"; - - # Selection - C-s = "split_selection_on_newline"; - C-minus = "merge_selections"; - C-_ = "merge_consecutive_selections"; - "C-;" = "flip_selections"; - "C-:" = "ensure_selections_forward"; - "C-," = "remove_primary_selection"; - C-c = "change_selection_noyank"; - C-d = "delete_selection_noyank"; - "C-(" = "rotate_selection_contents_backward"; - "C-)" = "rotate_selection_contents_forward"; - C-x = "shrink_to_line_bounds"; - C-J = "join_selections_space"; - C-K = "remove_selections"; - C-o = "expand_selection"; - C-i = "shrink_selection"; - C-p = "select_prev_sibling"; - C-n = "select_next_sibling"; - - # Misc - "C-/" = "toggle_comments"; - "@" = ":append-output git config get user.email"; - - space = { - B = ":sh git log -n 5 --format='format:%%h (%%an: %%ar) %%s' --no-patch -L%{cursor_line},+1:%{buffer_name}"; - x = ":write-buffer-close"; - X = ":write-quit-all"; - o = ":config-open"; - h = "hover"; - k = "select_references_to_symbol_under_cursor"; - }; - - g = { - "/" = "goto_next_buffer"; - h = "goto_previous_buffer"; - n = [ "collapse_selection" "extend_to_line_start" ]; - o = [ "collapse_selection" "extend_to_line_end" ]; - e = "move_line_up"; - i = "move_line_down"; - l = "goto_last_line"; - p = "no_op"; - k = "no_op"; - j = "no_op"; - }; - - m.m = [ "select_mode" "match_brackets" "normal_mode" ]; - - "C-w" = { - h = "hsplit"; - C-h = "hsplit"; - n = "jump_view_left"; - C-n = "jump_view_left"; - i = "jump_view_down"; - I = "swap_view_down"; - C-i = "jump_view_down"; - e = "jump_view_up"; - E = "swap_view_up"; - C-e = "jump_view_up"; - o = "jump_view_right"; - O = "swap_view_right"; - C-o = "jump_view_right"; - # Remove old - s = "no_op"; - C-s = "no_op"; - H = "no_op"; - j = "no_op"; - J = "no_op"; - C-j = "no_op"; - k = "no_op"; - K = "no_op"; - C-k = "no_op"; - l = "no_op"; - L = "no_op"; - C-l = "no_op"; - }; - }; - - keys.select = { - n = "extend_char_left"; - i = "extend_line_down"; - e = "extend_line_up"; - o = "extend_char_right"; - I = [ "page_cursor_half_down" "align_view_center" ]; - E = [ "page_cursor_half_up" "align_view_center" ]; - - g = { - "/" = "goto_next_buffer"; - h = "goto_previous_buffer"; - n = "goto_line_start"; - o = "goto_line_end"; - e = "move_line_up"; - i = "move_line_down"; - l = "goto_last_line"; - p = "no_op"; - k = "no_op"; - j = "no_op"; - }; - }; - - editor = { - auto-format = true; - auto-save = true; - bufferline = "always"; - color-modes = true; - completion-timeout = 5; - cursorcolumn = true; - cursorline = true; - indent-heuristic = "tree-sitter"; - line-number = "relative"; - rulers = [ 120 ]; - text-width = 120; - end-of-line-diagnostics = "hint"; - - cursor-shape = { - insert = "bar"; - normal = "block"; - select = "underline"; - }; - - file-picker.hidden = false; - - indent-guides.render = true; - - inline-diagnostics = { - cursor-line = "warning"; - other-lines = "disable"; - prefix-len = 5; - max-diagnostics = 1; - max-wrap = 30; - }; - - lsp = { - display-messages = true; - display-inlay-hints = true; - }; - - soft-wrap = { - enable = true; - max-wrap = 30; - }; - - statusline = { - left = [ "mode" "file-modification-indicator" "spinner" "version-control" ]; - center = [ "file-name" ]; - right = [ "diagnostics" "selections" "register" "position" "file-encoding" ]; - mode.normal = "Normal"; - mode.insert = "Insert"; - mode.select = "Select"; - }; - - whitespace.render = { - space = "all"; - tab = "all"; - tabpad = "all"; - newline = "none"; - nbsp = "none"; - }; - - whitespace.characters = { - space = " "; - tab = "⇀"; - tabpad = " "; - }; - }; - }; - - languages = { - language = [ - { - name = "go"; - debugger = { - name = "go"; - transport = "tcp"; - command = "dlv"; - args = [ "connect" ]; - port-arg = "127.0.0.1:2345"; - templates = [{ - name = "connect"; - request = "launch"; - completion = []; - args = {}; - }]; - }; - } - { - name = "markdown"; - language-servers = [ "marksman" ]; - } - { - name = "dart"; - formatter = { command = "dart"; args = [ "format" "-l" "120" ]; }; - language-servers = [ "dart" ]; - } - { - name = "nix"; - language-servers = [ "nil" ]; - } - { - name = "zig"; - language-servers = [ "zls" ]; - debugger = { - name = "codelldb-dap"; - transport = "tcp"; - command = "codelldb"; - args = []; - port-arg = "--port {}"; - templates = [ - { - name = "launch"; - request = "launch"; - completion = [{ name = "binary"; completion = "filename"; }]; - args = { console = "internalConsole"; program = "{0}"; }; - } - { - name = "attach"; - request = "attach"; - completion = [ "pid" ]; - args = { console = "internalConsole"; pid = "{0}"; }; - } - { - name = "gdbserver attach"; - request = "attach"; - completion = [ - { name = "lldb connect url"; default = "connect://localhost:3333"; } - { name = "file"; completion = "filename"; } - "pid" - ]; - args = { - console = "internalConsole"; - attachCommands = [ - "platform select remote-gdb-server" - "platform connect {0}" - "file {1}" - "attach {2}" - ]; - }; - } - ]; - }; - } - { - name = "cyano"; - scope = "source.cyo"; - file-types = [ "cyo" ]; - language-servers = [ "ltex-ls" ]; - } - ]; - - language-server.ltex-ls = { - command = "ltex-ls"; - }; - }; - }; - # # CLI Tools # diff --git a/jaci/default.nix b/jaci/default.nix index fc74704..46c784e 100644 --- a/jaci/default.nix +++ b/jaci/default.nix @@ -62,6 +62,14 @@ }; }; + # Icon theme for tray applets (nm-applet, etc.) + iconTheme = { + enable = true; + package = pkgs.reversal-icon-theme; + light = "Reversal"; + dark = "Reversal"; + }; + # Disable plymouth styling (use default) targets.plymouth.enable = false; }; diff --git a/jaci/dotfiles/foot/foot.ini b/jaci/dotfiles/foot/foot.ini deleted file mode 100644 index cbff81e..0000000 --- a/jaci/dotfiles/foot/foot.ini +++ /dev/null @@ -1,46 +0,0 @@ -[main] -font=Hurmit Nerd Font Mono:size=12 -notify=yes - -selection-target=clipboard - -[colors] -# Catpuccin Machiatto theme -foreground=cad3f5 # Text -background=24273a # Base -regular0=494d64 # Surface 1 -regular1=ed8796 # red -regular2=a6da95 # green -regular3=eed49f # yellow -regular4=8aadf4 # blue -regular5=f5bde6 # pink -regular6=8bd5ca # teal -regular7=b8c0e0 # Subtext 1 -bright0=5b6078 # Surface 2 -bright1=ed8796 # red -bright2=a6da95 # green -bright3=eed49f # yellow -bright4=8aadf4 # blue -bright5=f5bde6 # pink -bright6=8bd5ca # teal -bright7=a5adcb # Subtext 0foreground=cdd6f4 # Text - -# [colors] -# Catpuccin Mocha theme colors -# background=1e1e2e # Base -# regular0=45475a # Surface 1 -# regular1=f38ba8 # red -# regular2=a6e3a1 # green -# regular3=f9e2af # yellow -# regular4=89b4fa # blue -# regular5=f5c2e7 # pink -# regular6=94e2d5 # teal -# regular7=bac2de # Subtext 1 -# bright0=585b70 # Surface 2 -# bright1=f38ba8 # red -# bright2=a6e3a1 # green -# bright3=f9e2af # yellow -# bright4=89b4fa # blue -# bright5=f5c2e7 # pink -# bright6=94e2d5 # teal -# bright7=a6adc8 # Subtext 0 diff --git a/jaci/dotfiles/helix/config.toml b/jaci/dotfiles/helix/config.toml deleted file mode 100644 index a831afd..0000000 --- a/jaci/dotfiles/helix/config.toml +++ /dev/null @@ -1,169 +0,0 @@ -# Theme -theme = "catppuccin_macchiato" - -[keys.normal] - -# Navigation -n = "move_char_left" # Maps the 'a' key to the move_char_left command -i = "move_visual_line_down" -e = "move_visual_line_up" -o = "move_char_right" - -I = "page_down" -E = "page_up" - -# Modes -h = "insert_mode" -H = "insert_at_line_start" -l = "open_below" -L = "open_above" - -# Search -k = "search_next" -K = "search_prev" - -# Selection -C-s = "split_selection_on_newline" -C-minus = "merge_selections" -C-_ = "merge_consecutive_selections" -"C-;" = "flip_selections" -"C-:" = "ensure_selections_forward" -"C-," = "remove_primary_selection" -C-c = "change_selection_noyank" -C-d = "delete_selection_noyank" -"C-(" = "rotate_selection_contents_backward" -"C-)" = "rotate_selection_contents_forward" -C-x = "shrink_to_line_bounds" -C-J = "join_selections_space" -C-K = "remove_selections" -C-o = "expand_selection" -C-i = "shrink_selection" -C-p = "select_prev_sibling" -C-n = "select_next_sibling" - -# Misc -"C-/" = "toggle_comments" - -[keys.normal."C-space"] -x = ":wbc!" -s = ":w!" # save file -o = ":config-open" - -[keys.normal.g] -"/" = "goto_next_buffer" -h = "goto_previous_buffer" -n = ["collapse_selection", "extend_to_line_start"] -o = ["collapse_selection", "extend_to_line_end"] -e = "move_line_up" -i = "move_line_down" -l = "goto_last_line" - -p = "no_op" -k = "no_op" -j = "no_op" - -[keys.normal.m] -m = ["select_mode", "match_brackets", "normal_mode"] - -[keys.select] -n = "extend_char_left" -i = "extend_line_down" -e = "extend_line_up" -o = "extend_char_right" - -[keys.select.g] -"/" = "goto_next_buffer" -h = "goto_previous_buffer" -n = "goto_line_start" -o = "goto_line_end" -e = "move_line_up" -i = "move_line_down" -l = "goto_last_line" - -p = "no_op" -k = "no_op" -j = "no_op" - -# Window mode -[keys.normal."C-w"] -h = "hsplit" -C-h = "hsplit" -n = "jump_view_left" -C-n = "jump_view_left" -i = "jump_view_down" -I = "swap_view_down" -C-i = "jump_view_down" -e = "jump_view_up" -E = "swap_view_up" -C-e = "jump_view_up" -o = "jump_view_right" -O = "swap_view_right" -C-o = "jump_view_right" - -# Remove old -s = "no_op" -C-s = "no_op" -H = "no_op" -j = "no_op" -J = "no_op" -C-j = "no_op" -k = "no_op" -K = "no_op" -C-k = "no_op" -l = "no_op" -L = "no_op" -C-l = "no_op" - -[keys.normal."space"] -h = "hover" -k = "select_references_to_symbol_under_cursor" - -[editor] -bufferline = "always" -auto-save = true -line-number = "relative" -cursorline = true -cursorcolumn = true -color-modes = true -text-width = 120 -auto-format = true - -[editor.statusline] -left = ["mode", "spinner", "version-control"] -center = ["file-name"] -mode.normal = "Normal" -mode.insert = "Insert" -mode.select = "Select" - -[editor.indent-guides] -render = true - -[editor.lsp] -display-messages = true -display-inlay-hints = false - -[editor.cursor-shape] -insert = "bar" -normal = "block" -select = "underline" - -[editor.file-picker] -hidden = false - -[editor.whitespace.render] -space = "all" -tab = "all" -tabpad = "all" -newline = "none" -nbsp = "none" - -[editor.whitespace.characters] -space = "·" -tab = "⇀" -tabpad = " " - - -#w = "move_line_up" # Maps the 'w' key move_line_up -#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line -#g = { a = "code_action" } # Maps `ga` to show possible code actions -#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode diff --git a/jaci/dotfiles/helix/languages.toml b/jaci/dotfiles/helix/languages.toml deleted file mode 100644 index 36f844b..0000000 --- a/jaci/dotfiles/helix/languages.toml +++ /dev/null @@ -1,4 +0,0 @@ -# Change dart format to 120 lines -[[language]] -name = "dart" -formatter = {command = "dart", args = ["format", "-l", "120"]} diff --git a/jaci/dotfiles/kanshi/config b/jaci/dotfiles/kanshi/config deleted file mode 100644 index 6b30e01..0000000 --- a/jaci/dotfiles/kanshi/config +++ /dev/null @@ -1,3 +0,0 @@ -profile { - output DP-2 position 0,0 mode 1920x1080@165.003006Hz -} diff --git a/jaci/dotfiles/waybar/config b/jaci/dotfiles/waybar/config deleted file mode 100644 index 433441f..0000000 --- a/jaci/dotfiles/waybar/config +++ /dev/null @@ -1,88 +0,0 @@ -{ - "modules-left": [ - "custom/launcher", - "wlr/taskbar" - ], - "modules-center": [ - "clock", - ], - "modules-right": [ - "tray", - "pulseaudio", - "custom/spotify", - "network", - "memory", - "cpu", - "custom/power", - ], - // Modules - "wlr/taskbar": { - "format": "{icon} {name}", - "on-click": "minimize-raise", - }, - "idle_inhibitor": { - "format": "{icon} ", - "format-icons":{ - "activated": "", - "deactivated": "" - } - }, - "clock": { - "interval": 10, - "format-alt": " {:%e %b %Y}", // Icon: calendar-alt - "format": "󰥔 {:%I:%M %p}", - }, - "cpu": { - "interval": 5, - "format": " {usage}%", - "states": { - "warning": 70, - "critical": 90, - }, - "on-click": "foot -e 'htop'", - }, - "memory": { - "interval": 5, - "format": " {}%", // Icon: memory - "on-click": "foot -e 'htop'", - "states": { - "warning": 70, - "critical": 90 - } - }, - "pulseaudio": { - "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon}", - "format-bluetooth": "{volume}% {icon}  {format_source}", - "format-bluetooth-muted": " {icon}  {format_source}", - "format-muted": "婢 {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "וֹ", - "headset": "  ", - "phone": "", - "portable": "", - "car": "", - "default": [""] - }, - "on-click": "pavucontrol", - "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%", - "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -2%", - }, - "tray": { - "icon-size": 18, - "spacing":10, - }, - "custom/spotify": { - "format": " ", - "on-click": "spot", - "tooltip": false - }, - "custom/launcher": { - "format": "  ", - "on-click": "nwg-drawer", - "tooltip": false - }, -} diff --git a/jaci/dotfiles/waybar/style.css b/jaci/dotfiles/waybar/style.css deleted file mode 100644 index 328573f..0000000 --- a/jaci/dotfiles/waybar/style.css +++ /dev/null @@ -1,100 +0,0 @@ -@define-color celadon #b0f2b4; -@define-color celeste #baf2e9; -@define-color thistle #dfc2f2; -@define-color english_violet #51344d; -@define-color indian_red #c97064; -@define-color black_olive #1f271b; -@define-color egg_shell #f8f1dd; - -* { - border: none; - border-radius: 0; - margin: 0; - padding: 0; - color: @egg_shell; - font-family: "GohuFont 14 Nerd Font"; - font-size: 16px; - font-weight: normal; -} - -/* The whole bar */ -#waybar { - background: transparent; - background-color: transparent; -} - -#taskbar { - background: transparent; - color: @egg_shell; -} - -#taskbar button { - padding-left: 3px; - padding-right: 3px; - margin-left: 3px; - margin-right: 3px; - color: transparent; - border-bottom: 2px solid; -} - -#taskbar button.active { - color: @celeste; -} - -.modules-left, -.modules-right, -.modules-center { - margin: 8px 8px 1px 8px; - background: transparent; - color: @egg_shell; - background-color: @english_violet; - border-radius: 25px; - padding: 0px 10px 0px 10px; -} - -/* Every modules */ -#clock, -#cpu, -#custom-spotify, -#memory, -#network, -#pulseaudio, -#taskbar { - padding: 0.5rem 0.6rem; - margin: 1px 0px; -} - -/* ----------------------------------------------------------------------------- - * Modules styles - * -------------------------------------------------------------------------- */ - -#clock { - min-width: 140px; -} - -#cpu.warning, -#cpu.critical, -#memory.warning, -#memory.critical, -#network.disconnected { - color: @indian_red; -} - -#pulseaudio { - padding-top: 6px; -} - -#pulseaudio.muted { - color: @celeste; -} - -#custom-spotify { - color: @celadon; -} - -#custom-power { - margin-left: 15px; - margin-right: 15px; - font-size: 15px; - color: @indian_red; -} \ No newline at end of file diff --git a/jaci/modules/home-manager/home.nix b/jaci/modules/home-manager/home.nix index 50e2b3d..fa9425c 100644 --- a/jaci/modules/home-manager/home.nix +++ b/jaci/modules/home-manager/home.nix @@ -7,6 +7,7 @@ { imports = [ ../../../shared/modules/apps/firefox/firefox.nix + ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/git-autosync.nix ../niri/niri_home.nix ./programs.nix @@ -18,6 +19,7 @@ home.stateVersion = "23.11"; # Please read the comment before changing. firefoxApp.enable = true; + helixApp.enable = true; fonts.fontconfig.enable = true; # Stylix auto-theming - applies to all programs..enable apps diff --git a/jaci/modules/home-manager/programs.nix b/jaci/modules/home-manager/programs.nix index 381a16e..2f24b84 100644 --- a/jaci/modules/home-manager/programs.nix +++ b/jaci/modules/home-manager/programs.nix @@ -40,222 +40,6 @@ }; }; - # - # Editor - # - helix = { - enable = true; - # Stylix sets the theme, but we override syntax tokens for minimal highlighting - # Philosophy: Only keywords, strings, comments, numbers get color - rest is plain text - themes.stylix = { - # Inherit Stylix's base theme (UI, palette, etc.) - inherits = "stylix"; - - # Minimal syntax highlighting - only 4 categories get color - # Comments - stand out - "comment" = { fg = "yellow"; modifiers = ["italic"]; }; - - # Keywords - highlighted and italic - "keyword" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.control" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.directive" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.function" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.operator" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.return" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.storage" = { fg = "magenta"; modifiers = ["italic"]; }; - - # Strings - highlighted - "string" = "green"; - "string.regexp" = "red"; - "string.special" = "green"; - - # Numbers/constants - highlighted - "constant.numeric" = "red"; - "constant.builtin" = "red"; - "constant.character.escape" = "red"; - - # Functions remain plain text - "function" = "text"; - "function.builtin" = "text"; - "function.method" = "text"; - "function.macro" = "text"; - - # Variables remain plain text - "variable" = "text"; - "variable.builtin" = "text"; - "variable.parameter" = "text"; - "variable.other.member" = "text"; - - # Types get subtle highlight - "type" = { fg = "cyan"; modifiers = ["italic"]; }; - "type.builtin" = "cyan"; - - # Top-level definitions get accent - "function.definition" = { fg = "text"; modifiers = ["bold"]; }; - "type.definition" = { fg = "text"; modifiers = ["bold"]; }; - - # Everything else plain - "constructor" = "text"; - "attribute" = "text"; - "label" = "text"; - "namespace" = "text"; - "tag" = "text"; - - # Punctuation slightly dimmed - "punctuation" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.bracket" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.delimiter" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.special" = { fg = "text"; modifiers = ["dim"]; }; - "operator" = { fg = "text"; modifiers = ["dim"]; }; - - # Markup - "markup.heading" = { fg = "cyan"; modifiers = ["bold"]; }; - "markup.list" = "magenta"; - "markup.bold" = { modifiers = ["bold"]; }; - "markup.italic" = { modifiers = ["italic"]; }; - "markup.strikethrough" = { modifiers = ["crossed_out"]; }; - "markup.link.url" = { fg = "blue"; modifiers = ["underlined"]; }; - "markup.link.text" = "magenta"; - "markup.quote" = "green"; - "markup.raw" = "green"; - }; - - settings = { - # Standard QWERTY keybindings - keys.normal = { - # Navigation - "S-tab" = "jump_backward"; - "C-d" = [ "page_cursor_half_down" "align_view_center" ]; - "C-u" = [ "page_cursor_half_up" "align_view_center" ]; - - # Selection - C-s = "split_selection_on_newline"; - C-minus = "merge_selections"; - C-_ = "merge_consecutive_selections"; - "C-;" = "flip_selections"; - "C-:" = "ensure_selections_forward"; - "C-," = "remove_primary_selection"; - - # Misc - "C-/" = "toggle_comments"; - "@" = ":append-output git config get user.email"; - - space = { - B = ":sh git log -n 5 --format='format:%%h (%%an: %%ar) %%s' --no-patch -L%{cursor_line},+1:%{buffer_name}"; - x = ":write-buffer-close"; - X = ":write-quit-all"; - o = ":config-open"; - h = "hover"; - k = "select_references_to_symbol_under_cursor"; - }; - - g = { - "/" = "goto_next_buffer"; - "\\" = "goto_previous_buffer"; - }; - - m.m = [ "select_mode" "match_brackets" "normal_mode" ]; - }; - - keys.select = { - "C-d" = [ "page_cursor_half_down" "align_view_center" ]; - "C-u" = [ "page_cursor_half_up" "align_view_center" ]; - - g = { - "/" = "goto_next_buffer"; - "\\" = "goto_previous_buffer"; - }; - }; - - editor = { - auto-format = true; - auto-save = true; - bufferline = "always"; - color-modes = true; - completion-timeout = 5; - cursorcolumn = true; - cursorline = true; - indent-heuristic = "tree-sitter"; - line-number = "relative"; - rulers = [ 120 ]; - text-width = 120; - end-of-line-diagnostics = "hint"; - - cursor-shape = { - insert = "bar"; - normal = "block"; - select = "underline"; - }; - - file-picker.hidden = false; - - indent-guides.render = true; - - inline-diagnostics = { - cursor-line = "warning"; - other-lines = "disable"; - prefix-len = 5; - max-diagnostics = 1; - max-wrap = 30; - }; - - lsp = { - display-messages = true; - display-inlay-hints = true; - }; - - soft-wrap = { - enable = true; - max-wrap = 30; - }; - - statusline = { - left = [ "mode" "file-modification-indicator" "spinner" "version-control" ]; - center = [ "file-name" ]; - right = [ "diagnostics" "selections" "register" "position" "file-encoding" ]; - mode.normal = "Normal"; - mode.insert = "Insert"; - mode.select = "Select"; - }; - - whitespace.render = { - space = "all"; - tab = "all"; - tabpad = "all"; - newline = "none"; - nbsp = "none"; - }; - - whitespace.characters = { - space = " "; - tab = "⇀"; - tabpad = " "; - }; - }; - }; - - languages = { - language = [ - { - name = "markdown"; - language-servers = [ "marksman" ]; - } - { - name = "nix"; - language-servers = [ "nil" ]; - } - { - name = "python"; - language-servers = [ "pylsp" ]; - } - ]; - - language-server.ltex-ls = { - command = "ltex-ls"; - }; - }; - }; - # # CLI Tools # diff --git a/jaci/nixos/hardware-configuration.nix b/jaci/nixos/hardware-configuration.nix index 10f1537..8d7c180 100644 --- a/jaci/nixos/hardware-configuration.nix +++ b/jaci/nixos/hardware-configuration.nix @@ -17,19 +17,22 @@ boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - # TODO: Update these UUIDs after running nixos-generate-config on actual hardware fileSystems."/" = - { device = "/dev/disk/by-label/NIXROOT"; + { device = "/dev/disk/by-uuid/9e7135ed-b924-455b-9fdf-3c9b324fea52"; fsType = "ext4"; }; + boot.initrd.luks.devices."luks-3e44caf1-e83f-452e-80c9-fdd75d35b237".device = "/dev/disk/by-uuid/3e44caf1-e83f-452e-80c9-fdd75d35b237"; + fileSystems."/boot" = - { device = "/dev/disk/by-label/NIXBOOT"; + { device = "/dev/disk/by-uuid/8350-826A"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; - swapDevices = [ ]; + swapDevices = + [ { device = "/dev/disk/by-uuid/aa923d84-bc16-40d9-a100-113bb31c761d"; } + ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/nate-work/default.nix b/nate-work/default.nix index 309cb75..28b925c 100644 --- a/nate-work/default.nix +++ b/nate-work/default.nix @@ -60,6 +60,14 @@ }; }; + # Icon theme for tray applets (nm-applet, etc.) + iconTheme = { + enable = true; + package = pkgs.papirus-icon-theme; + light = "Papirus-Light"; + dark = "Papirus-Dark"; + }; + # Let plymouth use its own theme targets.plymouth.enable = false; }; diff --git a/nate/default.nix b/nate/default.nix index 5d00f47..3ff4961 100644 --- a/nate/default.nix +++ b/nate/default.nix @@ -59,6 +59,14 @@ }; }; + # Icon theme for tray applets (nm-applet, etc.) + iconTheme = { + enable = true; + package = pkgs.papirus-icon-theme; + light = "Papirus-Light"; + dark = "Papirus-Dark"; + }; + # Let plymouth use its own theme targets.plymouth.enable = false; }; diff --git a/shared/modules/home-manager/waybar.nix b/shared/modules/home-manager/waybar.nix index 3b490e5..93690f2 100644 --- a/shared/modules/home-manager/waybar.nix +++ b/shared/modules/home-manager/waybar.nix @@ -312,7 +312,12 @@ in }; # Stylix provides @define-color variables for base16 colors - style = '' + # Use lib.mkAfter to ensure our styles override Stylix's defaults + style = lib.mkAfter '' + /* Override Stylix's solid background on waybar window */ + window#waybar { + background: transparent; + } /* Keyframes */ @keyframes blink-warning { 70% { color: @base05; }