nixos/apps/fastfetch.nix
ediblerope 09d00909cb Switch to fish shell, ghostty terminal, and simplified prompt
- 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>
2026-04-08 13:22:21 +01:00

114 lines
2.6 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ 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
'';
}