feat: create new home/ directory structure for profile-based config
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)
This commit is contained in:
69
home/base/shell/starship.nix
Normal file
69
home/base/shell/starship.nix
Normal file
@@ -0,0 +1,69 @@
|
||||
# Starship cross-shell prompt with nix-colors theming.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.base.shell.starship;
|
||||
in {
|
||||
options.base.shell.starship.enable = mkEnableOption "enable starship prompt";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
enableNushellIntegration = true;
|
||||
settings = {
|
||||
format = "$all$character";
|
||||
palette = "universal";
|
||||
|
||||
palettes.universal = {
|
||||
background = "#${config.colorScheme.palette.base00}";
|
||||
surface = "#${config.colorScheme.palette.base01}";
|
||||
muted = "#${config.colorScheme.palette.base03}";
|
||||
text = "#${config.colorScheme.palette.base05}";
|
||||
bright = "#${config.colorScheme.palette.base07}";
|
||||
accent1 = "#${config.colorScheme.palette.base08}";
|
||||
accent2 = "#${config.colorScheme.palette.base09}";
|
||||
accent3 = "#${config.colorScheme.palette.base0A}";
|
||||
accent4 = "#${config.colorScheme.palette.base0B}";
|
||||
accent5 = "#${config.colorScheme.palette.base0C}";
|
||||
accent6 = "#${config.colorScheme.palette.base0D}";
|
||||
accent7 = "#${config.colorScheme.palette.base0E}";
|
||||
};
|
||||
|
||||
character = {
|
||||
success_symbol = "[❯](accent7)";
|
||||
error_symbol = "[❯](accent1)";
|
||||
};
|
||||
|
||||
directory = {
|
||||
style = "accent6";
|
||||
truncation_length = 3;
|
||||
truncate_to_repo = false;
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
style = "accent7";
|
||||
};
|
||||
|
||||
git_status = {
|
||||
style = "accent5";
|
||||
};
|
||||
|
||||
cmd_duration = {
|
||||
style = "accent3";
|
||||
};
|
||||
|
||||
hostname = {
|
||||
style = "accent4";
|
||||
};
|
||||
|
||||
username = {
|
||||
style_user = "accent2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user