From a80920a663b64f08b4ccbb9f6b64835eb407735b Mon Sep 17 00:00:00 2001 From: Toast Date: Mon, 18 Dec 2023 09:33:09 +0100 Subject: [PATCH] Programs/common/starship: add upstream nerd font preset --- roles/common/programs/starship.nix | 63 ++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/roles/common/programs/starship.nix b/roles/common/programs/starship.nix index 5b168b7..f2380d3 100644 --- a/roles/common/programs/starship.nix +++ b/roles/common/programs/starship.nix @@ -1,4 +1,8 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: + +with lib; +with builtins; + let catppuccinFlavour = "mocha"; catppuccinStarship = pkgs.fetchFromGitHub { @@ -8,27 +12,46 @@ let 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-fPmZrfhwM9NakdlJ7Y4rZ5n6JjsqXNEQ9XuFa8en9n0="; + }; + }; + # -------------------------------- 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 = with builtins; { + programs.starship = { enable = true; - settings = { - nix_shell = { - disabled = false; - heuristic = true; - symbol = " "; - }; - os = { - disabled = false; - symbols.NixOS = " "; - }; - directory = { - disabled = false; - read_only = " 󰌾"; - }; - palette = "catppuccin_${catppuccinFlavour}"; - } // - # Add the catppuccin palette to the settings file - (fromTOML (readFile catppuccinStarship)); + settings = mergeAllAttrSets [ + (readTomlPreset presets.nerdFontSymbols) + (readTomlPreset catppuccinStarship) + { + nix_shell = { + disabled = false; + heuristic = true; + }; + os = { + disabled = false; + }; + directory = { + disabled = false; + }; + palette = "catppuccin_${catppuccinFlavour}"; + } + ]; }; }