{ lib, ... }: let inherit (lib) mkOption types ; themeType = types.submodule ( { config, ... }: { options = { source = mkOption { type = types.nullOr types.path; description = "The path to the oh-my-posh theme to use."; default = null; }; name = mkOption { type = types.nullOr types.str; description = "The name of the theme."; default = if (config.source != null) then lib.strings.removeSuffix ".omp" (lib.strings.removeSuffix ".json" (builtins.baseNameOf config.source)) else null; }; }; }); ompType = types.submodule ( { config, ... }: { options = { theme = mkOption { type = types.either types.str themeType; description = "The default theme."; default = {}; }; 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 = {}; }; }; })); }; }; }