anchor.diff:  
     cfg = config.qt5;
   
  +  toQtIni = generators.toINI {
  +    mkKeyValue = key: value:
  +      let
  +        value' =
  +          if isBool value then (if value then "true" else "false")
  +          else toString value;
  +      in
  +        "${key}=${value'}";
  +  };
  +
  +  general =
  +    optionalAttrs (cfg.font != null)
  +      {
  +        font = cfg.font.name;
  +        menuFont = cfg.font.name;
  +        toolBarFont = cfg.font.name;
  +      }
  +    //
  +    optionalAttrs (cfg.style != null)
  +      { widgetStyle = cfg.style.name; };
  +  icons =
  +    optionalAttrs (cfg.iconTheme != null)
  +      { Theme = cfg.iconTheme.name; };
  +
  +  fontType = types.submodule {
  +    options = {
  +      package = mkOption {
  +        internal = true;
  +        type = types.nullOr types.package;
  +        default = null;
  +      };
  +      name = mkOption {
  +        internal = true;
  +        type = types.str;
  +      };
  +    };
  +  };
     themeType = types.submodule {
       options = {
         package = mkOption {
  
positive.code:         '';
        };
  
        style = mkOption {
          type = types.nullOr themeType;
          default = null;
  
negative.code:         </varlistentry>
        '';
  
        assertions = [
          {
            assertion = cfg.font == null && cfg.iconTheme == null;
            message = "`qt5.font` and `qt5.iconTheme` are only supported by kde platform.";
          }
        ];
        environment.variables.QT_QPA_PLATFORMTHEME = "qgnomeplatform";
        # TODO: make this optional once https://github.com/NixOS/nixpkgs/issues/54150 is fixed
        # qgnomeplatform reads theme and other settings from dconf db
        environment.variables.QT_STYLE_OVERRIDE = cfg.style.name;
        environment.variables.XDG_DATA_DIRS = [ "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" ];
        environment.systemPackages = [ pkgs.qgnomeplatform ];
      };
      gtk3 = {
        description = ''
          <varlistentry>
            <term><literal>gtk3</literal></term>
            <listitem><para>Use GNOME theme with
              <link xlink:href="https://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platformthemes/gtk3">gtk3</link>
            </para></listitem>
          </varlistentry>
        '';
  
        assertions = [
          {
            assertion = cfg.style != null;
            message = "`qt5.platformTheme` gtk3 requires `qt5.style` to be set.";
          }
          {
            assertion = cfg.font == null && cfg.iconTheme == null;
            message = "`qt5.font` and `qt5.iconTheme` are only supported by kde platform.";
          }
        ];
        environment.variables.QT_QPA_PLATFORMTHEME = "gtk3";
        environment.variables.QT_STYLE_OVERRIDE = cfg.style.name;
      };
      kde = {
        description = ''
          <varlistentry>
            <term><literal>kde</literal></term>
            <listitem><para>Use Qt theme with
              <link xlink:href="https://code.qt.io/cgit/qt/qtbase.git/tree/src/platformsupport/themes/genericunix">qkdetheme</link>
            </para></listitem>
          </varlistentry>
        '';
  
        environment.variables.XDG_CURRENT_DESKTOP = mkForce "KDE";
        environment.variables.KDE_SESSION_VERSION = "5";
        environment.etc."xdg/kdeglobals".text =
          toQtIni {
            General = general;
            Icons = icons;
          };
      };
    };
  in
  