{
  config,
  lib,
  pkgs,
  ...
}:
with lib; let
  cfg = config.custom.programs.gnome-shell;
in {
  options.custom.programs.gnome-shell.enable = mkOption {default = false;};

  config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
    # BUG: programs.gnome-shell.theme option forces installation of gnome-shell-extensions
    programs.gnome-shell = {
      enable = true;

      extensions = with pkgs.gnomeExtensions;
        optionals config.custom.default [
          {package = appindicator;} # https://github.com/ubuntu/gnome-shell-extension-appindicator
        ]
        ++ optionals config.custom.minimal [
          {package = caffeine;} # https://github.com/eonpatapon/gnome-shell-extension-caffeine
          {package = dash-to-dock;} # https://github.com/micheleg/dash-to-dock
          #// { package = dash2dock-lite; } # https://github.com/icedman/dash2dock-lite
          {package = gsconnect;} # https://github.com/GSConnect/gnome-shell-extension-gsconnect
          {package = just-perfection;} # https://gitlab.gnome.org/jrahmatzadeh/just-perfection
          {package = rounded-window-corners-reborn;} # https://github.com/flexagoon/rounded-window-corners
          #// { package = user-themes; } # https://gitlab.gnome.org/GNOME/gnome-shell-extensions
        ]
        ++ optionals config.custom.full [
          #// { package = auto-move-windows; } # https://gitlab.gnome.org/GNOME/gnome-shell-extensions
          {package = clipboard-indicator;} # https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator
          {package = ddterm;} # https://github.com/ddterm/gnome-shell-extension-ddterm
          #// { package = hide-top-bar; } # https://gitlab.gnome.org/tuxor1337/hidetopbar
          {package = media-controls;} # https://github.com/sakithb/media-controls
          #// { package = smart-auto-move; } # https://github.com/khimaros/smart-auto-move
          {package = tailscale-qs;} # https://github.com/joaophi/tailscale-gnome-qs
          {package = tiling-assistant;} # https://github.com/Leleat/Tiling-Assistant
        ];
    };
  };
}