diff --git a/lib/modules/packages/oh-my-posh.nix b/lib/modules/packages/oh-my-posh.nix new file mode 100644 index 00000000..e7fa5242 --- /dev/null +++ b/lib/modules/packages/oh-my-posh.nix @@ -0,0 +1,55 @@ +{ lib, ... }: + let + inherit (lib) + mkOption + types + ; + + themeType = types.submodule ( + { config, ... }: { + options = { + path = mkOption { + type = types.path; + description = "The path to the oh-my-posh theme to use."; + }; + + name = mkOption { + type = types.nullOr types.str; + description = "The name of the theme."; + default = lib.strings.removeSuffix ".omp" (lib.strings.removeSuffix ".json" (builtins.baseNameOf config.path)); + }; + }; + }); + + ompType = types.submodule ( + { config, ... }: { + options = { + theme = mkOption { + type = types.nullOr (types.either types.str themeType); + description = "The default theme."; + default = null; + }; + + additionalThemes = mkOption { + type = types.listOf themeType; + description = "A set of additional themes to install."; + default = []; + }; + }; + }); + in { + options = { + valhalla.users = mkOption { + type = types.attrsOf (types.submodule ( + { ... }: { + options = { + oh-my-posh = mkOption { + type = ompType; + description = "The Oh My Posh configuration to apply."; + default = {}; + }; + }; + })); + }; + }; + } \ No newline at end of file diff --git a/lib/modules/valhalla.nix b/lib/modules/valhalla.nix index 33322f24..4e36b50c 100644 --- a/lib/modules/valhalla.nix +++ b/lib/modules/valhalla.nix @@ -7,6 +7,7 @@ in { imports = [ ./packages/git.nix + ./packages/oh-my-posh.nix ./packages/rclone.nix ./hardware.nix ./i18n.nix