- Replace bash with fish as default shell (all hosts) - Replace kgx with ghostty (desktop hosts), update Super+T keybinding - Custom two-line fish prompt: NixOS icon, username, path, hostname, ❯ - Nix-shell awareness, red ❯ on error - Simplify fastfetch: user@host, OS, kernel, shell, terminal, uptime, memory - Ghostty config: FiraCode Nerd Font, catppuccin-mocha, no titlebar Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
114 lines
2.6 KiB
Nix
114 lines
2.6 KiB
Nix
{ config, pkgs, lib, ... }:
|
||
{
|
||
# Install fastfetch
|
||
environment.systemPackages = with pkgs; [
|
||
fastfetch
|
||
];
|
||
|
||
# Install Nerd Fonts for icon support
|
||
fonts.packages = with pkgs; [
|
||
nerd-fonts.fira-code
|
||
nerd-fonts.jetbrains-mono
|
||
nerd-fonts.meslo-lg
|
||
];
|
||
|
||
# Simple fastfetch config — shown on terminal start
|
||
# Run `fastfetch` manually for full system info
|
||
environment.etc."fastfetch/config.jsonc".text = ''
|
||
{
|
||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||
"logo": {
|
||
"source": "none"
|
||
},
|
||
"display": {
|
||
"separator": " ",
|
||
"color": {
|
||
"keys": "blue",
|
||
"title": "cyan"
|
||
},
|
||
"key": {
|
||
"type": "icon"
|
||
}
|
||
},
|
||
"modules": [
|
||
{
|
||
"type": "title",
|
||
"format": "{user-name}@{host-name}"
|
||
},
|
||
"separator",
|
||
"os",
|
||
"kernel",
|
||
"shell",
|
||
"terminal",
|
||
"uptime",
|
||
"memory"
|
||
]
|
||
}
|
||
'';
|
||
|
||
# Fish prompt and terminal startup
|
||
programs.fish.interactiveShellInit = ''
|
||
# Run fastfetch on terminal start
|
||
fastfetch --config /etc/fastfetch/config.jsonc
|
||
|
||
# Custom prompt
|
||
function fish_prompt
|
||
set -l last_status $status
|
||
|
||
# Nix-shell indicator
|
||
if set -q IN_NIX_SHELL
|
||
set_color yellow
|
||
printf '[nix-shell] '
|
||
set_color normal
|
||
end
|
||
|
||
# Line 1: username ~ hostname
|
||
set_color green
|
||
printf ' '
|
||
set_color yellow
|
||
printf '%s' $USER
|
||
set_color normal
|
||
printf ' '
|
||
|
||
# Path with colored segments
|
||
set -l gitdir (command git rev-parse --show-toplevel 2>/dev/null)
|
||
set -l realhome (string escape --style=regex -- $HOME)
|
||
set -l path (string replace -r "^$realhome" '~' $PWD)
|
||
set -l parts (string split '/' $path)
|
||
set -l colors green cyan blue
|
||
|
||
for i in (seq (count $parts))
|
||
set -l part $parts[$i]
|
||
if test -n "$part"
|
||
if test $i -gt 1
|
||
set_color brblack
|
||
printf '/'
|
||
end
|
||
set -l cidx (math '(' $i - 1 ')' '%' 3 + 1)
|
||
set_color $colors[$cidx]
|
||
printf '%s' $part
|
||
end
|
||
end
|
||
|
||
# Hostname
|
||
set_color brblack
|
||
printf ' '
|
||
set_color magenta
|
||
printf '%s' (hostname)
|
||
set_color normal
|
||
printf '\n'
|
||
|
||
# Line 2: ❯
|
||
if test $last_status -ne 0
|
||
set_color red
|
||
else
|
||
set_color magenta
|
||
end
|
||
printf '❯ '
|
||
set_color normal
|
||
end
|
||
|
||
# Disable the default right prompt
|
||
function fish_right_prompt; end
|
||
'';
|
||
}
|