feat: add coding packages module (bruno, insomnia)
This commit is contained in:
259
docs/plans/2026-04-27-missing-packages.md
Normal file
259
docs/plans/2026-04-27-missing-packages.md
Normal file
@@ -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)
|
||||
145
home/base/secrets/cli-tools/bat.nix
Normal file
145
home/base/secrets/cli-tools/bat.nix
Normal file
@@ -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" ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Universal (nix-colors)</string>
|
||||
<key>settings</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>background</key>
|
||||
<string>#${palette.base00}</string>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base05}</string>
|
||||
<key>caret</key>
|
||||
<string>#${palette.base05}</string>
|
||||
<key>selection</key>
|
||||
<string>#${palette.base02}</string>
|
||||
<key>selectionForeground</key>
|
||||
<string>#${palette.base05}</string>
|
||||
<key>lineHighlight</key>
|
||||
<string>#${palette.base01}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Comment</string>
|
||||
<key>scope</key>
|
||||
<string>comment</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base03}</string>
|
||||
<key>fontStyle</key>
|
||||
<string>italic</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>String</string>
|
||||
<key>scope</key>
|
||||
<string>string</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base0A}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Number</string>
|
||||
<key>scope</key>
|
||||
<string>constant.numeric</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base0E}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Keyword</string>
|
||||
<key>scope</key>
|
||||
<string>keyword</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base08}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Function</string>
|
||||
<key>scope</key>
|
||||
<string>entity.name.function</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base0B}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Type</string>
|
||||
<key>scope</key>
|
||||
<string>entity.name.type, storage.type</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base0D}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Variable</string>
|
||||
<key>scope</key>
|
||||
<string>variable</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base05}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Constant</string>
|
||||
<key>scope</key>
|
||||
<string>constant</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#${palette.base0E}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
21
home/base/secrets/cli-tools/carapace.nix
Normal file
21
home/base/secrets/cli-tools/carapace.nix
Normal file
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
17
home/base/secrets/cli-tools/default.nix
Normal file
17
home/base/secrets/cli-tools/default.nix
Normal file
@@ -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
|
||||
];
|
||||
}
|
||||
20
home/base/secrets/cli-tools/direnv.nix
Normal file
20
home/base/secrets/cli-tools/direnv.nix
Normal file
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
21
home/base/secrets/cli-tools/eza.nix
Normal file
21
home/base/secrets/cli-tools/eza.nix
Normal file
@@ -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"];
|
||||
};
|
||||
};
|
||||
}
|
||||
41
home/base/secrets/cli-tools/fzf.nix
Normal file
41
home/base/secrets/cli-tools/fzf.nix
Normal file
@@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
28
home/base/secrets/cli-tools/lf.nix
Normal file
28
home/base/secrets/cli-tools/lf.nix
Normal file
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
17
home/base/secrets/cli-tools/nitch.nix
Normal file
17
home/base/secrets/cli-tools/nitch.nix
Normal file
@@ -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];
|
||||
};
|
||||
}
|
||||
54
home/base/secrets/cli-tools/packages.nix
Normal file
54
home/base/secrets/cli-tools/packages.nix
Normal file
@@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
60
home/base/secrets/cli-tools/television.nix
Normal file
60
home/base/secrets/cli-tools/television.nix
Normal file
@@ -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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
30
home/base/secrets/cli-tools/zellij-ps.nix
Normal file
30
home/base/secrets/cli-tools/zellij-ps.nix
Normal file
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
34
home/base/secrets/cli-tools/zellij.nix
Normal file
34
home/base/secrets/cli-tools/zellij.nix
Normal file
@@ -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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
20
home/base/secrets/cli-tools/zoxide.nix
Normal file
20
home/base/secrets/cli-tools/zoxide.nix
Normal file
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
|
||||
20
home/coding/packages.nix
Normal file
20
home/coding/packages.nix
Normal file
@@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -58,6 +58,7 @@ in
|
||||
zed.enable = true;
|
||||
};
|
||||
lsp.enable = true;
|
||||
packages.enable = true;
|
||||
};
|
||||
|
||||
# Gaming profile features
|
||||
|
||||
Reference in New Issue
Block a user