{
  pkgs,
  lib,
  config,
  ...
}: let
  program = "cursor";
  cfg = config.dots.${program};
  home_dir = config.home.homeDirectory;
in {
  options.dots.${program} = {
    enable = lib.mkEnableOption "enables ${program}";
    cursor = lib.mkOption {
      type = lib.types.str;
      #default = "Posy_Cursor_Black";
      default = "posy_dark";
      description = "cursor to use";
    };
    cursor_hypr = lib.mkOption {
      type = lib.types.str;
      #default = "Posy_Cursor_Black";
      default = "posy_dark_hypr";
      description = "cursor to use";
    };
    size = lib.mkOption {
      type = lib.types.int;
      default = 64;
      description = "cursor size to use";
    };

  };

  config = lib.mkIf cfg.enable {
    # shelving for now lmao, the home grown way
    #    xdg.dataFile."icons/${cfg.cursor}" = {
    #      #config.lib.file.mkOutOfStoreSymlink
    #      source = config.lib.file.mkOutOfStoreSymlink "${home_dir}/.nix/users/blake/assets/icons/cursors/${cfg.cursor}";
    #      recursive = true;
    #    };
    #    xdg.dataFile."icons/${cfg.cursor_hypr}" = {
    #      source = config.lib.file.mkOutOfStoreSymlink "${home_dir}/.nix/users/blake/assets/icons/cursors/${cfg.cursor_hypr}";
    #      recursive = true;
    #    };
    #
    #    home.sessionVariables = {
    #      HYPRCURSOR_SIZE = cfg.size;
    #      HYPRCURSOR_THEME = cfg.cursor_hypr;
    #      XCURSOR_SIZE = cfg.size;
    #      XCURSOR_THEME = cfg.cursor;
    #    };

    home.pointerCursor = {
      dotIcons.enable = false;
      enable = true;
      gtk.enable = true;
      #x11.enable = true;
      package = pkgs.posy-cursors;
      name = "Posy_Cursor_Black";
      size = 64;
      hyprcursor = {
        enable = true;
        size = 64;
      };
    };

  };
}
