{ lib, pkgs, config, ... }: let inherit (lib) types; cfg = config.programs.starship; settingsFormat = pkgs.formats.toml { }; in { options.programs.starship = { enable = lib.mkEnableOption "starship"; settings = lib.mkOption { type = settingsFormat.type; default = { }; }; enableFishIntegration = lib.mkOption { type = types.bool; default = config.programs.fish.enable; }; enableTransience = lib.mkOption { type = types.bool; default = false; }; }; config = lib.mkIf cfg.enable { packages = [ pkgs.starship ]; environment.sessionVariables.STARSHIP_CONFIG = lib.mkIf ( cfg.settings != { } ) "${cfg.xdg.configDirectory}/starship/config.toml"; programs.fish.config = lib.mkIf cfg.enableFishIntegration ( lib.mkAfter '' if test "$TERM" != "dumb" starship init fish | source ${lib.optionalString cfg.enableTransience "enable_transience"} end '' ); file.xdg_config."starship/config.toml".source = settingsFormat.generate "starship-config.toml" cfg.settings; }; }