{ 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 = {};
              };
            };
          }));
      };
    };
  }