{
  pkgs,
  config,
  lib,
  ...
}: let
  cfg = config.pim.gnome;
in {
  options.pim.gnome.enable = lib.mkEnableOption "gnome";

  config = lib.mkIf cfg.enable {
    services = {
      gnome.gnome-keyring.enable = lib.mkForce false;

      xserver = {
        desktopManager.gnome.enable = true;
        displayManager.gdm.enable = true;
      };
    };

    environment = {
      systemPackages =
        [
          pkgs.gnome-shell-extensions
        ]
        ++ (with pkgs.gnomeExtensions; [
          pop-shell
          window-is-ready-remover
          random-wallpaper
          workspaces-indicator-by-open-apps
        ])
        ++ lib.optional config.services.tailscale.enable pkgs.gnomeExtensions.tailscale-status;

      gnome.excludePackages = with pkgs; [
        epiphany
        gnome-connections
        gnome-console
        gnome-tour
        geary
        gnome-calendar
        gnome-clocks
        gnome-contacts
        gnome-font-viewer
        gnome-logs
        gnome-maps
        gnome-music
        seahorse
        totem
        yelp
        gnome-weather
      ];
    };
  };
}