Files
nixos-config/docs/plans/2026-04-27-missing-packages.md

8.7 KiB

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:

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:

{ 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:

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:

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:

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

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)