{lib, ...}: {
  config = {
    assertions = [(lib.rp.assertMinimumVersion "24.05")];
  };

  options.rose-pine = {
    enable = lib.mkEnableOption "Rose Pine globally";

    flavor = lib.mkOption {
      type = lib.rp.types.flavorOption;
      default = "main";
      description = "Global Rose Pine flavor";
    };

    accent = lib.mkOption {
      type = lib.rp.types.accentOption;
      default = "love";
      description = "Global Rose Pine accent";
    };

    sources = let
      defaultSources = import ../../.sources;
    in
      lib.mkOption {
        type = lib.types.lazyAttrsOf lib.types.raw;
        default = defaultSources;
        defaultText = "{ ... }";
        # HACK!
        # without this, overriding one source will delete all others. -@getchoo
        apply = lib.recursiveUpdate defaultSources;
        description = "Port sources used across all options";
      };
  };
}