{ pkgs, lib, ... }: with lib; with builtins; let presets = { nerdFontSymbols = pkgs.fetchurl { url = "https://starship.rs/presets/toml/nerd-font-symbols.toml"; hash = "sha256-JKX+DKY4IPQwNj3znkhMUReNqbKBxdJyBZW+WCdKwuU="; }; }; # -------------------------------- F U N C T I O N S -------------------------------- /* Gonna be honest, I have no idea how this works, although it seems to work Stolen from https://gist.github.com/pdalpra/daf339f59288201a6c8ba7dc84e9060e */ # Takes a list of attrSets and merges them mergeAllAttrSets = attrsSets: foldl' recursiveUpdate {} attrsSets; # Reads a TOML file and parses it readTomlPreset = file: (fromTOML (readFile file)); in { programs.starship = { enable = true; settings = mergeAllAttrSets [ (readTomlPreset presets.nerdFontSymbols) { nix_shell = { disabled = false; heuristic = true; }; os = { disabled = false; }; directory = { disabled = false; truncation_length = 6; truncation_symbol = ".../"; }; } ]; }; # The catppuccin module only works for home-manager, so this # sets up starship with home-manager using the system config home-manager.users.toast = {osConfig, ...}: { programs.starship = { enable = true; catppuccin.enable = true; settings = osConfig.programs.starship.settings; }; }; }