diff --git a/frame12/linked-dotfiles/niri/config.kdl b/frame12/linked-dotfiles/niri/config.kdl index e0dbaeb..9d230a0 100644 --- a/frame12/linked-dotfiles/niri/config.kdl +++ b/frame12/linked-dotfiles/niri/config.kdl @@ -363,8 +363,8 @@ binds { Mod+R { switch-preset-column-width; } Mod+Shift+R { reset-window-height; } // Fullscreen - consistent with sway/hyprland - Mod+F { fullscreen-window; } - Mod+Shift+F { maximize-column; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } // Floating toggle Mod+Space { toggle-window-floating; } diff --git a/frame12/modules/home-manager/home.nix b/frame12/modules/home-manager/home.nix index 3b950c6..9c00623 100644 --- a/frame12/modules/home-manager/home.nix +++ b/frame12/modules/home-manager/home.nix @@ -17,15 +17,10 @@ let in { imports = [ - ../../../shared/modules/apps/firefox/firefox.nix - ../../../shared/modules/apps/ghostty.nix - ../../../shared/modules/apps/helix.nix + ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix - ../../../shared/modules/home-manager/json2nix.nix - ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix - ./programs.nix ]; home.username = userName; @@ -33,19 +28,9 @@ in programs.home-manager.enable = true; home.stateVersion = "25.05"; # Please read the comment before changing. - firefoxApp.enable = true; - ghosttyApp.enable = true; - helixApp.enable = true; - stylePreview.enable = true; - json2nix.enable = true; + sharedPrograms.enable = true; fonts.fontconfig.enable = true; - # enable OpenCode here to generate Stylix theming (using unstable package) - programs.opencode = { - enable = true; - package = unstable.opencode; - }; - # Stylix auto-theming - applies to all programs..enable apps stylix = { autoEnable = true; diff --git a/frame12/modules/home-manager/programs.nix b/frame12/modules/home-manager/programs.nix deleted file mode 100644 index a12f00d..0000000 --- a/frame12/modules/home-manager/programs.nix +++ /dev/null @@ -1,41 +0,0 @@ -# Stylix-themed program configurations -# All programs here are managed via programs..enable for Stylix auto-theming -{ config, pkgs, lib, ... }: - -{ - programs = { - # - # Terminals - # - # Ghostty config is in shared/modules/apps/ghostty.nix (enable with ghosttyApp.enable = true) - - foot = { - enable = true; - # Stylix handles colors and fonts - settings = { - main = { - pad = "4x4"; - }; - }; - }; - - # - # CLI Tools - # - bat.enable = true; - - fzf = { - enable = true; - enableZshIntegration = true; - }; - - btop.enable = true; - - mpv.enable = true; - - # - # Launcher - # - wofi.enable = true; - }; -} diff --git a/jaci/linked-dotfiles/niri/config.kdl b/jaci/linked-dotfiles/niri/config.kdl index c4fe6c8..b91bd49 100644 --- a/jaci/linked-dotfiles/niri/config.kdl +++ b/jaci/linked-dotfiles/niri/config.kdl @@ -317,8 +317,8 @@ binds { Mod+R { switch-preset-column-width; } Mod+Shift+R { reset-window-height; } // Fullscreen - Mod+F { fullscreen-window; } - Mod+Shift+F { maximize-column; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } // Floating toggle Mod+Space { toggle-window-floating; } diff --git a/jaci/modules/home-manager/home.nix b/jaci/modules/home-manager/home.nix index b3f045f..79f5d42 100644 --- a/jaci/modules/home-manager/home.nix +++ b/jaci/modules/home-manager/home.nix @@ -14,15 +14,10 @@ let in { imports = [ - ../../../shared/modules/apps/firefox/firefox.nix - ../../../shared/modules/apps/ghostty.nix - ../../../shared/modules/apps/helix.nix + ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix - ../../../shared/modules/home-manager/json2nix.nix - ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix - ./programs.nix ]; home.username = userName; @@ -30,11 +25,7 @@ in programs.home-manager.enable = true; home.stateVersion = "23.11"; # Please read the comment before changing. - firefoxApp.enable = true; - ghosttyApp.enable = true; - helixApp.enable = true; - stylePreview.enable = true; - json2nix.enable = true; + sharedPrograms.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 deleted file mode 100644 index a12f00d..0000000 --- a/jaci/modules/home-manager/programs.nix +++ /dev/null @@ -1,41 +0,0 @@ -# Stylix-themed program configurations -# All programs here are managed via programs..enable for Stylix auto-theming -{ config, pkgs, lib, ... }: - -{ - programs = { - # - # Terminals - # - # Ghostty config is in shared/modules/apps/ghostty.nix (enable with ghosttyApp.enable = true) - - foot = { - enable = true; - # Stylix handles colors and fonts - settings = { - main = { - pad = "4x4"; - }; - }; - }; - - # - # CLI Tools - # - bat.enable = true; - - fzf = { - enable = true; - enableZshIntegration = true; - }; - - btop.enable = true; - - mpv.enable = true; - - # - # Launcher - # - wofi.enable = true; - }; -} diff --git a/nate-work/linked-dotfiles/niri/config.kdl b/nate-work/linked-dotfiles/niri/config.kdl index 6c92bbc..ce9c76b 100644 --- a/nate-work/linked-dotfiles/niri/config.kdl +++ b/nate-work/linked-dotfiles/niri/config.kdl @@ -402,8 +402,8 @@ binds { Mod+R { switch-preset-column-width; } Mod+Shift+R { reset-window-height; } // Fullscreen - consistent with sway/hyprland - Mod+F { fullscreen-window; } - Mod+Shift+F { maximize-column; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } // Floating toggle Mod+Space { toggle-window-floating; } diff --git a/nate-work/modules/home-manager/home.nix b/nate-work/modules/home-manager/home.nix index 8bdf458..b314481 100644 --- a/nate-work/modules/home-manager/home.nix +++ b/nate-work/modules/home-manager/home.nix @@ -17,14 +17,9 @@ let in { imports = [ - ../../../shared/modules/apps/firefox/firefox.nix - ../../../shared/modules/apps/ghostty.nix - ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix - ../../../shared/modules/home-manager/json2nix.nix - ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix ../vpn-proxy/vpn-proxy.nix ]; @@ -47,20 +42,9 @@ in }; # Enable shared modules - firefoxApp.enable = true; - ghosttyApp.enable = true; - helixApp.enable = true; sharedPrograms.enable = true; - stylePreview.enable = true; - json2nix.enable = true; fonts.fontconfig.enable = true; - # OpenCode with Stylix theming (using unstable package) - programs.opencode = { - enable = true; - package = unstable.opencode; - }; - # Enable VPN proxy script vpnProxy.enable = true; @@ -144,6 +128,7 @@ in neofetch unzip nmap + file # # Photo / Video @@ -166,7 +151,6 @@ in # Other # chromium - keepassxc obs-studio gnome-disk-utility hugo diff --git a/nate/linked-dotfiles/niri/config.kdl b/nate/linked-dotfiles/niri/config.kdl index aaa8212..3d97b86 100644 --- a/nate/linked-dotfiles/niri/config.kdl +++ b/nate/linked-dotfiles/niri/config.kdl @@ -358,8 +358,8 @@ binds { Mod+R { switch-preset-column-width; } Mod+Shift+R { reset-window-height; } // Fullscreen - consistent with sway/hyprland - Mod+F { fullscreen-window; } - Mod+Shift+F { maximize-column; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } // Floating toggle Mod+Space { toggle-window-floating; } diff --git a/nate/modules/home-manager/home.nix b/nate/modules/home-manager/home.nix index e4258fc..3fa0c35 100644 --- a/nate/modules/home-manager/home.nix +++ b/nate/modules/home-manager/home.nix @@ -7,14 +7,9 @@ in { imports = [ - ../../../shared/modules/apps/firefox/firefox.nix - ../../../shared/modules/apps/ghostty.nix - ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix - ../../../shared/modules/home-manager/json2nix.nix - ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix ]; @@ -28,20 +23,9 @@ stylix.autoEnable = true; # Enable shared modules - firefoxApp.enable = true; - ghosttyApp.enable = true; - helixApp.enable = true; sharedPrograms.enable = true; - stylePreview.enable = true; - json2nix.enable = true; fonts.fontconfig.enable = true; - # OpenCode with Stylix theming (using unstable package) - programs.opencode = { - enable = true; - package = unstable.opencode; - }; - # Git autosync for star-command services.git-autosync = { enable = true; diff --git a/shared/dotfiles/keepassxc/keepassxc.ini b/shared/dotfiles/keepassxc/keepassxc.ini deleted file mode 100644 index 7973d0c..0000000 --- a/shared/dotfiles/keepassxc/keepassxc.ini +++ /dev/null @@ -1,21 +0,0 @@ -[General] -ConfigVersion=2 - -[Browser] -CustomProxyLocation= -Enabled=true - -[GUI] -ApplicationTheme=dark -TrayIconAppearance=monochrome-light - -[KeeShare] -Active="\n" -Own="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\n" -QuietSuccess=true - -[PasswordGenerator] -AdditionalChars= -ExcludedChars= -Length=25 -SpecialChars=false diff --git a/shared/modules/apps/helix.nix b/shared/modules/apps/helix.nix index ce29c67..3258251 100644 --- a/shared/modules/apps/helix.nix +++ b/shared/modules/apps/helix.nix @@ -161,7 +161,7 @@ in # Selection j = "join_selections"; - J = "yank" + J = "yank_joined"; C-s = "split_selection_on_newline"; C-minus = "merge_selections"; C-_ = "merge_consecutive_selections"; diff --git a/shared/modules/home-manager/programs.nix b/shared/modules/home-manager/programs.nix index dbaadf0..a52515f 100644 --- a/shared/modules/home-manager/programs.nix +++ b/shared/modules/home-manager/programs.nix @@ -1,31 +1,87 @@ -{config, lib, ...}: +{ + inputs, + config, + lib, + ... +}: let cfg = config.sharedPrograms; + unstable = import inputs.nixpkgs-unstable { + system = "x86_64-linux"; + config.allowUnfree = true; + }; in { - options.sharedPrograms = { - enable = lib.mkEnableOption "enable all basic programs with Stylix auto-theming"; + imports = [ + ../apps/firefox/firefox.nix + ../apps/ghostty.nix + ../apps/helix.nix + ./json2nix.nix + ./style-preview.nix + ]; + options.sharedPrograms = { + enable = lib.mkEnableOption "enable all shared programs with Stylix auto-theming"; + + # CLI tools bat.enable = lib.mkEnableOption "enable bat (cat replacement)"; fzf.enable = lib.mkEnableOption "enable fzf (fuzzy finder)"; btop.enable = lib.mkEnableOption "enable btop (system monitor)"; mpv.enable = lib.mkEnableOption "enable mpv (media player)"; wofi.enable = lib.mkEnableOption "enable wofi (application launcher)"; - foot.enable = lib.mkEnableOption "enable foot (terminal emulator)"; + keepassxc.enable = lib.mkEnableOption "enable keepassxc (password manager)"; + opencode.enable = lib.mkEnableOption "enable opencode (AI coding assistant)"; + + # Apps (pass-through to underlying modules) + firefox.enable = lib.mkEnableOption "enable firefox (web browser)"; + + ghostty = { + enable = lib.mkEnableOption "enable ghostty (terminal emulator)"; + fontFamily = lib.mkOption { + type = lib.types.str; + default = "Maple Mono NF"; + description = "Font family for Ghostty"; + }; + enableLigatures = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable font ligatures in Ghostty"; + }; + }; + + helix = { + enable = lib.mkEnableOption "enable helix (text editor)"; + themeOverrides = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + default = { }; + description = "Override minimal theme scopes for helix"; + }; + }; + + stylePreview.enable = lib.mkEnableOption "enable style preview (Stylix color viewer)"; + json2nix.enable = lib.mkEnableOption "enable json2nix (JSON to Nix converter)"; }; config = lib.mkMerge [ - # When sharedPrograms.enable is true, enable all programs + # When sharedPrograms.enable is true, enable all programs by default (lib.mkIf cfg.enable { - sharedPrograms.bat.enable = lib.mkDefault true; - sharedPrograms.fzf.enable = lib.mkDefault true; - sharedPrograms.btop.enable = lib.mkDefault true; - sharedPrograms.mpv.enable = lib.mkDefault true; - sharedPrograms.wofi.enable = lib.mkDefault true; - sharedPrograms.foot.enable = lib.mkDefault true; + sharedPrograms = { + bat.enable = lib.mkDefault true; + fzf.enable = lib.mkDefault true; + btop.enable = lib.mkDefault true; + mpv.enable = lib.mkDefault true; + wofi.enable = lib.mkDefault true; + keepassxc.enable = lib.mkDefault true; + opencode.enable = lib.mkDefault true; + firefox.enable = lib.mkDefault true; + ghostty.enable = lib.mkDefault true; + helix.enable = lib.mkDefault true; + stylePreview.enable = lib.mkDefault true; + json2nix.enable = lib.mkDefault true; + }; }) - # Individual program configurations + # CLI tools (lib.mkIf cfg.bat.enable { programs.bat.enable = true; }) @@ -49,15 +105,69 @@ in programs.wofi.enable = true; }) - (lib.mkIf cfg.foot.enable { - programs.foot = { + (lib.mkIf cfg.keepassxc.enable { + programs.keepassxc = { enable = true; + autostart = false; settings = { - main = { - pad = "4x4"; + Browser = { + Enabled = true; + UpdateBinaryPath = false; + }; + + PasswordGenerator = { + Length = 25; + SpecialChars = false; + }; + + GUI = { + AdvancedSettings = true; + ApplicationTheme = "dark"; + CompactMode = true; + HidePasswords = true; + }; + + Security = { + ClearClipboardTimeout = 20; + LockDatabaseIdleSeconds = 21600; }; }; }; }) + + (lib.mkIf cfg.opencode.enable { + programs.opencode = { + enable = true; + package = unstable.opencode; + }; + }) + + # Apps — wire to underlying module options + (lib.mkIf cfg.firefox.enable { + firefoxApp.enable = true; + }) + + (lib.mkIf cfg.ghostty.enable { + ghosttyApp = { + enable = true; + fontFamily = cfg.ghostty.fontFamily; + enableLigatures = cfg.ghostty.enableLigatures; + }; + }) + + (lib.mkIf cfg.helix.enable { + helixApp = { + enable = true; + themeOverrides = cfg.helix.themeOverrides; + }; + }) + + (lib.mkIf cfg.stylePreview.enable { + stylePreview.enable = true; + }) + + (lib.mkIf cfg.json2nix.enable { + json2nix.enable = true; + }) ]; }