New structure:
- home/base/ - Always loaded (shell, cli-tools, secrets)
- home/coding/ - Profile-independent dev tooling (editor, lsp, git, agents)
- home/profiles/ - Freely combinable profiles (gaming, media)
- home/desktop/ - Desktop-only (wm, apps, theme)
- home/server/ - Minimal server stub
Migration sources:
- home/features/cli/ → home/base/{shell,cli-tools,secrets}
- home/features/desktop/hyprland,wayland,rofi → home/desktop/wm/
- home/features/desktop/obsidian,office,webapps,crypto → home/desktop/apps/
- home/features/desktop/fonts,theme,wallpapers → home/desktop/theme/
- gaming.nix split → home/profiles/gaming/{steam,gamescope}
- media.nix split → home/profiles/media/{obs,ffmpeg,yt-dlp,kdenlive,handbrake}
Option namespaces updated:
- features.cli.* → base.shell.* / base.cliTools.* / base.secrets
- features.desktop.* → desktop.wm.* / desktop.apps.* / desktop.theme.*
- features.desktop.gaming → profiles.gaming.*
- features.desktop.media → profiles.media.*
Verified: nix flake check passes (warnings only)
60 lines
1.5 KiB
Nix
60 lines
1.5 KiB
Nix
# Television — fuzzy finder with custom channels for tldr, git-diff, and git-log.
|
|
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.base.cliTools.television;
|
|
in {
|
|
options.base.cliTools.television.enable = mkEnableOption "enable television";
|
|
|
|
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}";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|