# 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)