starship: give `settings` option more specific type

This more readily allows merging configurations.

Fixes #1023
wip/yesman
Robert Helgesson 4 years ago
parent 2f726bbd1c
commit acf106ced0
No known key found for this signature in database
GPG Key ID: 36BDAA14C2797E89
  1. 17
      modules/programs/starship.nix
  2. 1
      tests/default.nix
  3. 1
      tests/modules/programs/starship/default.nix
  4. 27
      tests/modules/programs/starship/settings-expected.toml
  5. 49
      tests/modules/programs/starship/settings.nix

@ -31,8 +31,23 @@ in {
};
settings = mkOption {
type = types.attrs;
type = with types;
let
prim = either bool (either int str);
primOrPrimAttrs = either prim (attrsOf prim);
entry = either prim (listOf primOrPrimAttrs);
entryOrAttrsOf = t: either entry (attrsOf t);
entries = entryOrAttrsOf (entryOrAttrsOf entry);
in attrsOf entries // { description = "Starship configuration"; };
default = { };
example = literalExample ''
{
add_newline = false;
prompt_order = [ "line_break" "package" "line_break" "character" ];
scan_timeout = 10;
character.symbol = "";
}
'';
description = ''
Configuration written to
<filename>~/.config/starship.toml</filename>.

@ -37,6 +37,7 @@ import nmt {
./modules/programs/newsboat
./modules/programs/readline
./modules/programs/ssh
./modules/programs/starship
./modules/programs/texlive
./modules/programs/tmux
./modules/programs/zsh

@ -0,0 +1 @@
{ starship-settings = ./settings.nix; }

@ -0,0 +1,27 @@
add_newline = false
prompt_order = ["line_break", "package", "line_break", "character"]
scan_timeout = 10
[aws]
disabled = true
style = "bold blue"
[battery]
charging_symbol = "⚡"
[[battery.display]]
style = "bold red"
threshold = 10
[[battery.display]]
style = "bold yellow"
threshold = 30
[character]
symbol = "➜"
[memory_usage]
threshold = -1
[package]
disabled = true

@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs.starship = {
enable = true;
settings = mkMerge [
{
add_newline = false;
prompt_order = [ "line_break" "package" "line_break" "character" ];
scan_timeout = 10;
character.symbol = "";
package.disabled = true;
memory_usage.threshold = -1;
aws.style = "bold blue";
battery = {
charging_symbol = "";
display = [{
threshold = 10;
style = "bold red";
}];
};
}
{
aws.disabled = true;
battery.display = [{
threshold = 30;
style = "bold yellow";
}];
}
];
};
nixpkgs.overlays = [
(self: super: { starship = pkgs.writeScriptBin "dummy-starship" ""; })
];
nmt.script = ''
assertFileContent \
home-files/.config/starship.toml \
${./settings-expected.toml}
'';
};
}
Loading…
Cancel
Save