{ pkgs, lib, ... }: with lib; with builtins; let catppuccinFlavour = "mocha"; catppuccinStarship = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "starship"; # Latest commit is 5629d2356f62a9f2f8efad3ff37476c19969bd4f rev = "main"; hash = "sha256-nsRuxQFKbQkyEI4TXgvAjcroVdG+heKX5Pauq/4Ota0="; } + /palettes/${catppuccinFlavour}.toml; presets = { nerdFontSymbols = pkgs.fetchurl { url = "https://starship.rs/presets/toml/nerd-font-symbols.toml"; hash = "sha256-BVe5JMSIa3CoY2Wf9pvcF1EUtDVCWCLhW3IyKuwfHug="; }; }; # -------------------------------- 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) (readTomlPreset catppuccinStarship) { nix_shell = { disabled = false; heuristic = true; }; os = { disabled = false; }; directory = { disabled = false; }; palette = "catppuccin_${catppuccinFlavour}"; } ]; }; }