{
  config,
  lib,
  ...
}:
with lib; let
  cfg = config.custom.settings.dconf.apps;
in {
  options.custom.settings.dconf.apps.enable = mkOption {default = false;};

  config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
    # https://nix-community.github.io/home-manager/index.xhtml#sec-option-types
    # https://docs.gtk.org/glib/struct.Variant.html
    # https://docs.gtk.org/glib/gvariant-format-strings.html
    #?? dconf watch /
    dconf.settings = with config.home-manager.users.${config.custom.username}.lib.gvariant; {
      # BlackBox
      "com/raggesilver/BlackBox" = {
        command-as-login-shell = mkBoolean false;
        context-aware-header-bar = mkBoolean true;
        cursor-blink-mode = mkUint32 0;
        cursor-shape = mkUint32 0;
        delay-before-showing-floating-controls = mkUint32 100;
        easy-copy-paste = mkBoolean false;
        fill-tabs = mkBoolean true;
        floating-controls = mkBoolean true;
        floating-controls-hover-area = mkUint32 10;
        font = mkString "${config.custom.font.monospace} 14";
        headerbar-drag-area = mkBoolean false;
        notify-process-completion = mkBoolean false;
        opacity = mkUint32 100;
        pretty = mkBoolean false;
        remember-window-size = mkBoolean true;
        scrollback-mode = mkUint32 1;
        scrollbar-mode = mkUint32 1;
        show-headerbar = mkBoolean false;
        show-menu-button = mkBoolean false;
        show-scrollbars = mkBoolean true;
        style-preference = mkUint32 0;
        terminal-bell = mkBoolean true;
        terminal-cell-height = mkDouble 1.0;
        terminal-cell-width = mkDouble 1.0;
        theme-bold-is-bright = mkBoolean false;
        theme-dark = mkString "Solarized Dark";
        theme-light = mkString "Solarized Light";
        use-custom-command = mkBoolean false;
        use-overlay-scrolling = mkBoolean true;
        working-directory-mode = mkUint32 1;

        #?? (uuuu)
        terminal-padding = mkTuple [
          (mkUint32 4)
          (mkUint32 4)
          (mkUint32 4)
          (mkUint32 4)
        ];
      };

      # Dconf Editor
      "ca/desrt/dconf-editor" = {
        show-warning = mkBoolean false;
      };

      # EasyEffects
      "com/github/wwmm/easyeffects/spectrum" = {
        show = false;
      };

      # GNOME
      "org/gnome/desktop/interface" = {
        cursor-blink = mkBoolean false;
        gtk-enable-primary-paste = mkBoolean false;
        color-scheme = mkString "prefer-dark";
        monospace-font-name = mkString "${config.custom.font.monospace} 14";
      };

      # GNOME Files
      "org/gtk/settings/file-chooser" = {
        show-hidden = mkBoolean true;
      };

      "org/gtk/gtk4/settings/file-chooser" = {
        show-hidden = mkBoolean true;
      };

      "org/gnome/nautilus/preferences" = {
        show-create-link = mkBoolean true;
        show-delete-permanently = mkBoolean true;
        click-policy = mkString "single";
        default-folder-viewer = mkString "list-view";

        #?? rm -r ~/.local/share/gvfs-metadata
        default-sort-order = mkString "type";
      };

      "org/gnome/nautilus/list-view" = {
        #?? [as]
        default-column-order = mkArray type.string [
          "name"
          "type"
          "size"
          "owner"
          "group"
          "permissions"
          "where"
          "date_modified"
          "date_modified_with_time"
          "date_accessed"
          "date_created"
          "recency"
          "detailed_type"
        ];

        #?? [as]
        default-visible-columns = mkArray type.string [
          "name"
          "type"
          "size"
          "date_modified"
        ];
      };

      # GNOME Terminal
      "org/gnome/terminal/legacy/profiles:/:8856406f-96d1-4284-8428-2329d2458b55" = {
        scrollback-unlimited = mkBoolean true;
      };

      # GNOME Text Editor
      "org/gnome/TextEditor" = {
        highlight-current-line = mkBoolean true;
        restore-session = mkBoolean false;
        show-line-numbers = mkBoolean true;
        show-map = mkBoolean true;
        tab-width = mkUint32 2;
        indent-style = mkString "space";
        style-scheme = mkString "solarized-dark";
        style-variant = mkString "dark";

        # Not exposed in UI
        # https://gitlab.gnome.org/GNOME/gnome-text-editor/-/commit/416a65af17f6b759721ef4606f7b7805fe7af67a
        #?? [as]
        draw-spaces = mkArray type.string [
          "space"
          "tab"
          "nbsp"
          "trailing"
        ];
      };

      # Virtual Machine Manager
      "org/virt-manager/virt-manager" = {
        xmleditor-enabled = mkBoolean true;
      };

      "org/virt-manager/virt-manager/confirm" = {
        forcepoweroff = mkBoolean false;
      };

      "org/virt-manager/virt-manager/console" = {
        auto-redirect = mkBoolean false;
        resize-guest = mkInt32 1;
        scaling = mkInt32 2;
      };

      "org/virt-manager/virt-manager/new-vm" = {
        cpu-default = mkString "host-passthrough";
        firmware = mkString "uefi";
        graphics-type = mkString "spice";
        storage-format = mkString "qcow2";
      };

      "org/virt-manager/virt-manager/stats" = {
        enable-cpu-poll = mkBoolean false;
        update-interval = mkInt32 5;
      };

      "org/virt-manager/virt-manager/vmlist-fields" = {
        cpu-usage = mkBoolean false;
      };
    };
  };
}