260 lines
8.7 KiB
Markdown
260 lines
8.7 KiB
Markdown
# 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)
|