diff --git a/modules/terminal/terminal.nix b/modules/terminal/terminal.nix index 99560f912..165760dfc 100644 --- a/modules/terminal/terminal.nix +++ b/modules/terminal/terminal.nix @@ -1,43 +1,92 @@ { config, lib, - inputs, - pkgs, ... }: let - inherit - (lib) - mkIf - mkOption - types - ; cfg = config.programs.illogical-impulse; in { options = { programs.illogical-impulse = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable the illogical-impulse program module."; + }; settings = { simpleStarship = { - enable = mkOption { - type = types.bool; + enable = lib.mkOption { + type = lib.types.bool; default = false; - description = '' - Uses Pure starship. - ''; + description = "Uses a custom pure-like starship configuration."; }; }; }; }; }; - config = mkIf cfg.enable { - imports = lib.mkIf cfg.settings.simpleStarship [ - ./simple-starship.nix - ]; - - home.file = { - ".config/starship.toml" = mkIf (!cfg.settings.simpleStarship) { - source = builtins.path {path = ../../.config/starship.toml;}; + config = lib.mkIf cfg.enable { + programs.starship = lib.mkIf cfg.settings.simpleStarship.enable { + enable = true; + settings = { + format = lib.concatStrings [ + "$username" + "$hostname" + "$directory" + "$git_branch" + "$git_state" + "$git_status" + "$cmd_duration" + "$line_break" + "$python" + "$character" + ]; + directory = { + style = "blue"; + }; + character = { + success_symbol = "[→](purple)"; + error_symbol = "[→](red)"; + vimcmd_symbol = "[←](green)"; + }; + git_branch = { + format = "[$branch]($style)"; + style = "bright-black"; + }; + git_status = { + format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) $ahead_behind$stashed]($style)"; + style = "cyan"; + conflicted = "​"; + untracked = "​"; + modified = "​"; + staged = "​"; + renamed = "​"; + deleted = "​"; + stashed = "≡"; + }; + git_state = { + format = "([$state( $progress_current/$progress_total)]($style)) "; + style = "bright-black"; + }; + cmd_duration = { + format = "[$duration]($style) "; + style = "yellow"; + }; + python = { + format = "[$virtualenv]($style) "; + style = "bright-black"; + }; }; }; + + home.file.".config/starship.toml" = lib.mkIf (!cfg.settings.simpleStarship.enable) { + source = builtins.path {path = ../../.config/starship.toml;}; + }; }; + + assertions = [ + { + assertion = !(cfg.settings.simpleStarship.enable && !cfg.enable); + message = "The 'simpleStarship' setting cannot be enabled if 'illogical-impulse' is disabled."; + } + ]; }