{ lib, ... }:

{
  imports = [
    ./ports.nix
    ./paths.nix
  ];

  options.state = lib.mkOption {
    type = lib.types.submodule {
      freeformType = with lib.types; attrsOf anything;
      default = { };
    };
    description = ''
      A set of values to be held in the home-manager configuration. Pretty much
      used for anything that requires consistency or deduplicate the source of
      truth for module values.
    '';
    example = {
      sampleValue = 10;
      paths.ignoreDirectories = [
        ".git"
        "node_modules"
        ".direnv"
      ];
    };
  };
}