nixos/settings/shell.nix
ediblerope 0e11464390 shell: add desktop-environment module to fastfetch
Shows GNOME version on Gaming/Macbook; module self-skips on headless
hosts.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 13:22:42 +01:00

138 lines
3.3 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.fira-mono
nerd-fonts.jetbrains-mono
nerd-fonts.meslo-lg
];
# Simple fastfetch config — run `fastfetch` manually for 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",
"de",
"shell",
"terminal",
"uptime",
"memory"
]
}
'';
# Fish shell settings and custom powerline prompt
programs.fish.interactiveShellInit = ''
# Disable default greeting
set -g fish_greeting
# Custom powerline prompt
function fish_prompt
set -l last_status $status
# Nix-shell indicator
if set -q IN_NIX_SHELL
set_color -o yellow
printf "[nix-shell] "
set_color normal
end
# --- Line 1: powerline segments ---
# Left round cap + NixOS icon
set_color 394b70
printf ""
set_color 7dcfff -b 394b70
printf " "
# Arrow transition: nix -> hostname
set_color 394b70 -b e0af68
printf ""
set_color 000000 -b e0af68
printf " %s " (hostname)
# Path segments - each folder gets its own color
set -l realhome (string escape --style=regex -- $HOME)
set -l rawpath (string replace -r "^$realhome" "~" $PWD)
set -l parts (string split "/" $rawpath)
set -l path_colors 41a6b5 9ece6a 7aa2f7
set -l prev_bg e0af68
set -l seg_count 0
for part in $parts
if test -n "$part"
set seg_count (math $seg_count + 1)
set -l cidx (math "(" $seg_count - 1 ")" "%" 3 + 1)
set -l seg_bg $path_colors[$cidx]
# Arrow from previous segment
set_color $prev_bg -b $seg_bg
printf ""
set_color 1a1b26 -b $seg_bg
printf " %s " $part
set prev_bg $seg_bg
end
end
# Git branch (if in a repo)
set -l branch (command git branch --show-current 2>/dev/null)
if test -n "$branch"
set_color $prev_bg -b bb9af7
printf ""
set_color 1a1b26 -b bb9af7
printf " %s " $branch
set prev_bg bb9af7
end
# Final arrow to terminal bg
set_color $prev_bg -b normal
printf ""
set_color normal
printf "\n"
# --- Line 2: prompt character ---
if test $last_status -ne 0
set_color red
else
set_color magenta
end
printf " "
set_color normal
end
function fish_right_prompt; end
# Regenerate wallpaper color theme
function wallpaper
matugen image ~/.local/share/backgrounds/wallpaper.png --source-color-index 0 -m dark
echo "Wallpaper colors updated! Shell theme reloaded."
end
'';
}