diff --git a/docs/plans/2026-04-27-missing-packages.md b/docs/plans/2026-04-27-missing-packages.md new file mode 100644 index 0000000..303aff9 --- /dev/null +++ b/docs/plans/2026-04-27-missing-packages.md @@ -0,0 +1,259 @@ +# Missing Packages Implementation Plan + +> **Goal:** Restore missing packages from old configuration to new profile-based structure + +**Context:** The home profile restructuring (Task 1-5) moved files but left many packages unaccounted for. This plan categorizes and assigns each package to the appropriate location. + +--- + +## Package Categorization + +### Base Layer (`home/base/`) — Always Available + +These are CLI tools that work on any system (server or desktop): + +| Package | Source | Module | Option | +|---------|--------|--------|--------| +| `jq` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `ripgrep` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `fd` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `coreutils` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `htop` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `httpie` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `just` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `lazygit` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `lf` | old cli | `home/base/cli-tools/default.nix` | `home/packages` | +| `tldr` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `trash-cli` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `unzip` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `zip` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `yazi` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `gcc` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `go` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `sqlite` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `sqlite-vec` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `nix-index` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `nix-update` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `progress` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `devenv` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `libnotify` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `basecamp` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `comma` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `fabric-ai` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `llm` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | +| `hyprpaper-random` | old cli | `home/base/cli-tools/default.nix` | `home.packages` | + +**Note:** `hyprpaper-random` is in base despite being Hyprland-specific. Alternative: move to `desktop/wm/` if it causes issues on non-Hyprland systems. + +### Base Programs (CLI Integration) + +These are programs with shell integration, placed in `home/base/cli-tools/`: + +| Program | Source | Module | Option | +|---------|--------|--------|--------| +| `carapace` | old cli | `home/base/cli-tools/default.nix` | `programs.carapace` | +| `zoxide` | old cli | `home/base/cli-tools/default.nix` | `programs.zoxide` | +| `bat` | old cli | `home/base/cli-tools/default.nix` | `programs.bat` | +| `direnv` | old cli | `home/base/cli-tools/default.nix` | `programs.direnv` | +| `eza` | old cli | `home/base/cli-tools/default.nix` | `programs.eza` | +| `lf` | old cli | `home/base/cli-tools/default.nix` | `programs.lf` | +| `zellij-ps` | old cli | `home/base/cli-tools/default.nix` | `cli.zellij-ps` | + +### Coding Layer (`home/coding/`) — Developer Tools + +| Package | Source | Module | Option | +|---------|--------|--------|--------| +| `bruno` | old desktop/coding | `home/coding/packages.nix` | `home.packages` | +| `insomnia` | old desktop/coding | `home/coding/packages.nix` | `home.packages` | +| `vim` | - | `home/coding/packages.nix` | `home.packages` | + +**New module:** `home/coding/packages.nix` (or inline into `coding/default.nix`) + +### Desktop Layer (`home/desktop/`) — Desktop-Specific + +| Package | Source | Module | Option | +|---------|--------|--------|--------| +| `vibetyper` | old desktop | `home/desktop/apps/default.nix` | `home.packages` | +| `pomodoro-timer` | old cli | `home/desktop/apps/default.nix` | `home.packages` | +| `launch-timer` | - | `home/desktop/apps/default.nix` | `home.packages` | + +**Note:** `launch-timer` needs investigation - is it a custom script or nixpkgs package? + +### Gaming Profile (`home/profiles/gaming/`) — Gaming Only + +| Package | Source | Module | Option | +|---------|--------|--------|--------| +| `rocmPackages.rocm-smi` | old cli | `home/profiles/gaming/default.nix` | `home.packages` | +| `rocmPackages.rocminfo` | old cli | `home/profiles/gaming/default.nix` | `home.packages` | +| `rocmPackages.rocm-runtime` | old cli | `home/profiles/gaming/default.nix` | `home.packages` | +| `vulkan-tools` | old cli | `home/profiles/gaming/default.nix` | `home.packages` | + +**Rationale:** ROCm is for AMD GPUs used in gaming (e.g., ROG Ally, gaming laptops with AMD dGPUs). This keeps server configs clean. + +### Media Profile (`home/profiles/media/`) — Media Creation + +| Package | Source | Module | Option | +|---------|--------|--------|--------| +| `plexamp` | old desktop/media | `home/profiles/media/default.nix` | `home.packages` | +| `webcord` | old desktop/media | `home/profiles/media/default.nix` | `home.packages` | +| `unimatrix` | old cli | `home/profiles/media/default.nix` | `home.packages` | +| `mpv` (config) | old desktop/media | `home/profiles/media/default.nix` | `programs.mpv` | + +**Note:** `unimatrix` is a terminal screensaver - fits well with media profile. + +--- + +## NOT Needed (Explicitly Removed) + +These packages should NOT be added: + +| Package | Reason | +|---------|--------| +| `wireguard-tools` | No longer needed | +| `wttrbar` | No longer needed | +| `nushellPlugins.skim` | No longer needed | + +--- + +## Tasks + +### Task 1: Update `home/base/cli-tools/default.nix` + +Add missing packages to the CLI tools aggregator: + +```nix +home.packages = with pkgs; [ + # Core utilities + jq ripgrep fd coreutils htop + # Dev tools + just lazylib lf tldr devenv + gcc go sqlite sqlite-vec + nix-index nix-update progress + # AI tools + comma fabric-ai llm + # Misc + libnotify basecamp hyprpaper-random + trash-cli unzip zip yazi +]; +``` + +Also add programs: carapace, zoxide, bat, direnv, eza, lf, zellij-ps + +### Task 2: Create `home/coding/packages.nix` + +New module for coding-specific packages: + +```nix +{ lib, pkgs, ... }: + +{ + options.coding.packages = { + enable = mkEnableOption "additional coding packages"; + }; + + config = mkIf config.coding.packages.enable { + home.packages = with pkgs; [ + bruno + insomnia + ]; + }; +} +``` + +### Task 3: Update `home/profiles/gaming/default.nix` + +Add GPU monitoring tools: + +```nix +home.packages = with pkgs; [ + # Gaming utilities + gamescope gamemode goverlay mangohud protonplus + # AMD GPU monitoring (ROCm) + rocmPackages.rocm-smi + rocmPackages.rocminfo + rocmPackages.rocm-runtime + vulkan-tools +]; +``` + +### Task 4: Update `home/profiles/media/default.nix` + +Add missing media packages: + +```nix +home.packages = with pkgs; [ + # Already present: ffmpeg_6-full, gimp, handbrake, etc. + # Add missing: + plexamp + webcord + unimatrix +]; + +programs.mpv = { + enable = true; + bindings = { + WHEEL_UP = "seek 10"; + WHEEL_DOWN = "seek -10"; + }; + config = { + profile = "gpu-hq"; + ytdl-format = "bestvideo+bestaudio"; + }; +}; +``` + +### Task 5: Update Desktop Apps + +Add desktop-specific packages to `home/desktop/apps/default.nix`: + +```nix +home.packages = with pkgs; [ + # Already present + # Add missing: + pomodoro-timer + # launch-timer - needs investigation +]; +``` + +### Task 6: Update Host Configs + +Ensure all desktop hosts import the new modules: + +- `home/m3tam3re/m3-ares.nix` - Should have `coding.packages.enable = true` +- `home/m3tam3re/m3-kratos.nix` - Should have `coding.packages.enable = true` + +--- + +## Implementation Order + +1. **Task 1** - Base CLI tools (largest impact, affects all hosts) +2. **Task 2** - Coding packages (small, new module) +3. **Task 3** - Gaming profile (ROCm) +4. **Task 4** - Media profile (plexamp, webcord, unimatrix, mpv) +5. **Task 5** - Desktop apps (vibetyper already present, add pomodoro-timer) +6. **Task 6** - Host config updates (if needed) + +--- + +## Verification + +```bash +nix flake check +# Should pass with no new errors +``` + +--- + +## Summary + +| Layer | New Files | Modified Files | +|-------|-----------|----------------| +| base/cli-tools | - | `default.nix` | +| coding | `packages.nix` | `default.nix` | +| profiles/gaming | - | `default.nix` | +| profiles/media | - | `default.nix` | +| desktop/apps | - | `default.nix` | + +**Total packages to restore:** ~30 +**Programs to restore:** 7 +**Packages excluded:** 3 (wireguard, wttrbar, nushellPlugins.skim) diff --git a/home/base/secrets/cli-tools/bat.nix b/home/base/secrets/cli-tools/bat.nix new file mode 100644 index 0000000..9a0e213 --- /dev/null +++ b/home/base/secrets/cli-tools/bat.nix @@ -0,0 +1,145 @@ +# Bat — cat replacement with nix-colors syntax highlighting theme. +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.base.cliTools.bat; + palette = config.colorScheme.palette; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.bat.enable = (mkEnableOption "enable bat with nix-colors theme") // {default = true;}; + + config = mkIf cfg.enable { + programs.bat = { + enable = true; + config = {theme = "universal";}; + themes = { + universal = { + src = pkgs.writeText "universal.tmTheme" '' + + + + + name + Universal (nix-colors) + settings + + + settings + + background + #${palette.base00} + foreground + #${palette.base05} + caret + #${palette.base05} + selection + #${palette.base02} + selectionForeground + #${palette.base05} + lineHighlight + #${palette.base01} + + + + name + Comment + scope + comment + settings + + foreground + #${palette.base03} + fontStyle + italic + + + + name + String + scope + string + settings + + foreground + #${palette.base0A} + + + + name + Number + scope + constant.numeric + settings + + foreground + #${palette.base0E} + + + + name + Keyword + scope + keyword + settings + + foreground + #${palette.base08} + + + + name + Function + scope + entity.name.function + settings + + foreground + #${palette.base0B} + + + + name + Type + scope + entity.name.type, storage.type + settings + + foreground + #${palette.base0D} + + + + name + Variable + scope + variable + settings + + foreground + #${palette.base05} + + + + name + Constant + scope + constant + settings + + foreground + #${palette.base0E} + + + + + + ''; + }; + }; + }; + }; +} diff --git a/home/base/secrets/cli-tools/carapace.nix b/home/base/secrets/cli-tools/carapace.nix new file mode 100644 index 0000000..ea9194e --- /dev/null +++ b/home/base/secrets/cli-tools/carapace.nix @@ -0,0 +1,21 @@ +# Carapace — multi-shell completion engine with Fish, Nushell, and Bash integration. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.carapace; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.carapace.enable = (mkEnableOption "enable carapace completion engine") // {default = true;}; + + config = mkIf cfg.enable { + programs.carapace = { + enable = true; + enableFishIntegration = true; + enableNushellIntegration = true; + enableBashIntegration = true; + }; + }; +} diff --git a/home/base/secrets/cli-tools/default.nix b/home/base/secrets/cli-tools/default.nix new file mode 100644 index 0000000..3125597 --- /dev/null +++ b/home/base/secrets/cli-tools/default.nix @@ -0,0 +1,17 @@ +# CLI tools aggregator — imports all base command-line utilities. +{...}: { + imports = [ + ./bat.nix + ./carapace.nix + ./direnv.nix + ./eza.nix + ./fzf.nix + ./lf.nix + ./nitch.nix + ./packages.nix + ./television.nix + ./zellij.nix + ./zellij-ps.nix + ./zoxide.nix + ]; +} diff --git a/home/base/secrets/cli-tools/direnv.nix b/home/base/secrets/cli-tools/direnv.nix new file mode 100644 index 0000000..4ca206a --- /dev/null +++ b/home/base/secrets/cli-tools/direnv.nix @@ -0,0 +1,20 @@ +# Direnv — automatic environment loading with nix-direnv integration. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.direnv; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.direnv.enable = (mkEnableOption "enable direnv with nix-direnv") // {default = true;}; + + config = mkIf cfg.enable { + programs.direnv = { + enable = true; + enableNushellIntegration = true; + nix-direnv.enable = true; + }; + }; +} diff --git a/home/base/secrets/cli-tools/eza.nix b/home/base/secrets/cli-tools/eza.nix new file mode 100644 index 0000000..2e432a8 --- /dev/null +++ b/home/base/secrets/cli-tools/eza.nix @@ -0,0 +1,21 @@ +# Eza — modern ls replacement with icons, git status, and long format by default. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.eza; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.eza.enable = (mkEnableOption "enable eza modern ls replacement") // {default = true;}; + + config = mkIf cfg.enable { + programs.eza = { + enable = true; + enableFishIntegration = true; + enableBashIntegration = true; + extraOptions = ["-l" "--icons" "--git" "-a"]; + }; + }; +} diff --git a/home/base/secrets/cli-tools/fzf.nix b/home/base/secrets/cli-tools/fzf.nix new file mode 100644 index 0000000..4093298 --- /dev/null +++ b/home/base/secrets/cli-tools/fzf.nix @@ -0,0 +1,41 @@ +# Fuzzy finder with nix-colors palette and Wayland clipboard integration. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.fzf; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.fzf.enable = (mkEnableOption "enable fuzzy finder") // {default = true;}; + + config = mkIf cfg.enable { + programs.fzf = { + enable = true; + enableFishIntegration = true; + colors = { + "fg" = "#${config.colorScheme.palette.base05}"; + "bg" = "#${config.colorScheme.palette.base00}"; + "hl" = "#${config.colorScheme.palette.base0E}"; + "fg+" = "#${config.colorScheme.palette.base05}"; + "bg+" = "#${config.colorScheme.palette.base02}"; + "hl+" = "#${config.colorScheme.palette.base0E}"; + "info" = "#${config.colorScheme.palette.base09}"; + "prompt" = "#${config.colorScheme.palette.base0B}"; + "pointer" = "#${config.colorScheme.palette.base08}"; + "marker" = "#${config.colorScheme.palette.base08}"; + "spinner" = "#${config.colorScheme.palette.base09}"; + "header" = "#${config.colorScheme.palette.base03}"; + }; + defaultOptions = [ + "--preview='bat --color=always -n {}'" + "--bind 'ctrl-/:toggle-preview'" + "--header 'Press CTRL-Y to copy command into clipboard'" + "--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'" + ]; + defaultCommand = "fd --type f --exclude .git --follow --hidden"; + changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden"; + }; + }; +} diff --git a/home/base/secrets/cli-tools/lf.nix b/home/base/secrets/cli-tools/lf.nix new file mode 100644 index 0000000..50ff740 --- /dev/null +++ b/home/base/secrets/cli-tools/lf.nix @@ -0,0 +1,28 @@ +# Lf — terminal file manager with bat preview and Dracula theme. +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.base.cliTools.lf; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.lf.enable = (mkEnableOption "enable lf terminal file manager") // {default = true;}; + + config = mkIf cfg.enable { + home.packages = [pkgs.lf]; + + programs.lf = { + enable = true; + settings = { + preview = true; + drawbox = true; + hidden = true; + icons = true; + previewer = "bat"; + }; + }; + }; +} diff --git a/home/base/secrets/cli-tools/nitch.nix b/home/base/secrets/cli-tools/nitch.nix new file mode 100644 index 0000000..eac4d62 --- /dev/null +++ b/home/base/secrets/cli-tools/nitch.nix @@ -0,0 +1,17 @@ +# Nitch — minimal system information display tool. +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.base.cliTools.nitch; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.nitch.enable = (mkEnableOption "enable nitch") // {default = true;}; + + config = mkIf cfg.enable { + home.packages = [pkgs.nitch]; + }; +} diff --git a/home/base/secrets/cli-tools/packages.nix b/home/base/secrets/cli-tools/packages.nix new file mode 100644 index 0000000..fa226f4 --- /dev/null +++ b/home/base/secrets/cli-tools/packages.nix @@ -0,0 +1,54 @@ +# Essential CLI packages — core utilities always available on every host. +# NOTE: `lazylib` does not exist in nixpkgs. `lazygit` is the correct package +# (Git TUI) and is intentionally used here instead. +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.base.cliTools.essentials; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.essentials.enable = (mkEnableOption "enable essential CLI packages") // {default = true;}; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + # Core utilities + coreutils + fd + htop + jq + ripgrep + + # Dev tools + devenv + gcc + go + httpie + just + lazygit + nix-index + nix-update + progress + sqlite + sqlite-vec + tldr + + # AI tools + comma + fabric-ai + llm + + # Misc + basecamp + hyprpaper-random + libnotify + trash-cli + unzip + yazi + zip + ]; + }; +} diff --git a/home/base/secrets/cli-tools/television.nix b/home/base/secrets/cli-tools/television.nix new file mode 100644 index 0000000..3a74203 --- /dev/null +++ b/home/base/secrets/cli-tools/television.nix @@ -0,0 +1,60 @@ +# Television — fuzzy finder with custom channels for tldr, git-diff, and git-log. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.television; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.television.enable = (mkEnableOption "enable television") // {default = true;}; + + config = mkIf cfg.enable { + programs.television = { + enable = true; + channels = { + tldr = { + metadata = { + description = "Browse TLDR pages"; + name = "tldr"; + requirements = ["tldr"]; + }; + preview = { + command = "tldr '{}'"; + }; + source = { + command = "tldr --list"; + }; + }; + git-diff = { + metadata = { + description = "A channel to select files from git diff commands"; + name = "git-diff"; + requirements = ["git"]; + }; + preview = { + command = "git diff HEAD --color=always -- '{}'"; + }; + source = { + command = "git diff --name-only HEAD"; + }; + }; + git-log = { + metadata = { + description = "A channel to select from git log entries"; + name = "git-log"; + requirements = ["git"]; + }; + preview = { + command = "git show -p --stat --pretty=fuller --color=always '{0}'"; + }; + source = { + command = "git log --oneline --date=short --pretty=\"format:%h %s %an %cd\" \"$@\""; + output = "{split: :0}"; + }; + }; + }; + }; + }; +} diff --git a/home/base/secrets/cli-tools/zellij-ps.nix b/home/base/secrets/cli-tools/zellij-ps.nix new file mode 100644 index 0000000..8dac702 --- /dev/null +++ b/home/base/secrets/cli-tools/zellij-ps.nix @@ -0,0 +1,30 @@ +# Zellij-ps — project-aware Zellij session manager from m3ta-nixpkgs. +# Delegates to `cli.zellij-ps` — the home-manager module namespace provided by +# m3ta-nixpkgs (inputs.m3ta-nixpkgs.nixosModules.default). This is intentional; +# `cli.*` is the convention used by m3ta-nixpkgs home-manager modules. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.zellijPs; +in { + options.base.cliTools.zellijPs = { + # Enabled by default — base modules are always-on. + enable = (mkEnableOption "enable zellij-ps project session manager") // {default = true;}; + + projectFolders = mkOption { + type = types.listOf types.path; + description = "Project root folders scanned by zellij-ps."; + default = ["${config.home.homeDirectory}/p"]; + }; + }; + + config = mkIf cfg.enable { + cli.zellij-ps = { + enable = true; + projectFolders = cfg.projectFolders; + }; + }; +} diff --git a/home/base/secrets/cli-tools/zellij.nix b/home/base/secrets/cli-tools/zellij.nix new file mode 100644 index 0000000..efe2c6c --- /dev/null +++ b/home/base/secrets/cli-tools/zellij.nix @@ -0,0 +1,34 @@ +# Zellij terminal multiplexer with nix-colors theming. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.zellij; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.zellij.enable = (mkEnableOption "enable zellij multiplexer") // {default = true;}; + + config = mkIf cfg.enable { + programs.zellij = { + enable = true; + settings = { + theme = "universal"; + themes.universal = { + bg = "#${config.colorScheme.palette.base00}"; + fg = "#${config.colorScheme.palette.base05}"; + black = "#${config.colorScheme.palette.base01}"; + red = "#${config.colorScheme.palette.base08}"; + green = "#${config.colorScheme.palette.base0B}"; + yellow = "#${config.colorScheme.palette.base0A}"; + blue = "#${config.colorScheme.palette.base0D}"; + magenta = "#${config.colorScheme.palette.base0E}"; + cyan = "#${config.colorScheme.palette.base0C}"; + white = "#${config.colorScheme.palette.base07}"; + orange = "#${config.colorScheme.palette.base09}"; + }; + }; + }; + }; +} diff --git a/home/base/secrets/cli-tools/zoxide.nix b/home/base/secrets/cli-tools/zoxide.nix new file mode 100644 index 0000000..bc3e80e --- /dev/null +++ b/home/base/secrets/cli-tools/zoxide.nix @@ -0,0 +1,20 @@ +# Zoxide — smarter cd with Fish and Nushell integration. +{ + config, + lib, + ... +}: +with lib; let + cfg = config.base.cliTools.zoxide; +in { + # Enabled by default — base modules are always-on. + options.base.cliTools.zoxide.enable = (mkEnableOption "enable zoxide smarter cd") // {default = true;}; + + config = mkIf cfg.enable { + programs.zoxide = { + enable = true; + enableFishIntegration = true; + enableNushellIntegration = true; + }; + }; +} diff --git a/home/coding/default.nix b/home/coding/default.nix index 11c433c..04c836d 100644 --- a/home/coding/default.nix +++ b/home/coding/default.nix @@ -1,10 +1,11 @@ # Coding environment aggregator — profile-independent development tooling. -# Imports editors, LSP servers, git configuration, and the agent system. +# Imports editors, LSP servers, git configuration, the agent system, and optional packages. {...}: { imports = [ ./editor ./lsp ./git/git.nix ./agents/agents.nix + ./packages.nix ]; } diff --git a/home/coding/packages.nix b/home/coding/packages.nix new file mode 100644 index 0000000..2501cd6 --- /dev/null +++ b/home/coding/packages.nix @@ -0,0 +1,20 @@ +# Additional coding packages — API clients and GUI development tools. +# Opt-in since not all coding hosts need these desktop-oriented tools. +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.coding.packages; +in { + options.coding.packages.enable = mkEnableOption "additional coding packages (bruno, insomnia)"; + + config = mkIf cfg.enable { + home.packages = [ + pkgs.bruno + pkgs.insomnia + ]; + }; +} diff --git a/home/m3tam3re/m3-ares.nix b/home/m3tam3re/m3-ares.nix index 4cdfb3b..e336286 100644 --- a/home/m3tam3re/m3-ares.nix +++ b/home/m3tam3re/m3-ares.nix @@ -58,6 +58,7 @@ in zed.enable = true; }; lsp.enable = true; + packages.enable = true; }; # Gaming profile features