{ lib, ... }: let inherit (lib) mkOption types; themeType = types.submodule ( { config, ... }: { options = { source = 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.source)); }; }; }); 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 = { }; }; }; })); }; }; }