From ba70754bf393d54b150b88bfa2d5c6ba51f43b69 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Fri, 23 Aug 2024 19:39:18 +0200 Subject: [PATCH] Allow configuring `oh-my-posh` --- lib/modules/packages/oh-my-posh.nix | 55 +++++++++++++++++++++++++++++ lib/modules/valhalla.nix | 1 + 2 files changed, 56 insertions(+) create mode 100644 lib/modules/packages/oh-my-posh.nix 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 086eb458..a4628840 100644 --- a/lib/modules/valhalla.nix +++ b/lib/modules/valhalla.nix @@ -10,6 +10,7 @@ ./i18n.nix ./os.nix ./packages/git.nix + ./packages/oh-my-posh.nix ./packages/rclone.nix ./partition.nix ./software.nix