aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/misc/qt.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/modules/misc/qt.nix')
-rw-r--r--home-manager/modules/misc/qt.nix68
1 files changed, 68 insertions, 0 deletions
diff --git a/home-manager/modules/misc/qt.nix b/home-manager/modules/misc/qt.nix
new file mode 100644
index 00000000000..ff38f842c81
--- /dev/null
+++ b/home-manager/modules/misc/qt.nix
@@ -0,0 +1,68 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.qt;
+
+in {
+ meta.maintainers = [ maintainers.rycee ];
+
+ imports = [
+ (mkChangedOptionModule [ "qt" "useGtkTheme" ] [ "qt" "platformTheme" ]
+ (config:
+ if getAttrFromPath [ "qt" "useGtkTheme" ] config then "gtk" else null))
+ ];
+
+ options = {
+ qt = {
+ enable = mkEnableOption "Qt 4 and 5 configuration";
+
+ platformTheme = mkOption {
+ type = types.nullOr (types.enum [ "gtk" "gnome" ]);
+ default = null;
+ example = "gnome";
+ relatedPackages =
+ [ "qgnomeplatform" [ "libsForQt5" "qtstyleplugins" ] ];
+ description = ''
+ Selects the platform theme to use for Qt applications.</para>
+ <para>The options are
+ <variablelist>
+ <varlistentry>
+ <term><literal>gtk</literal></term>
+ <listitem><para>Use GTK theme with
+ <link xlink:href="https://github.com/qt/qtstyleplugins">qtstyleplugins</link>
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>gnome</literal></term>
+ <listitem><para>Use GNOME theme with
+ <link xlink:href="https://github.com/FedoraQt/QGnomePlatform">qgnomeplatform</link>
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ '';
+ };
+ };
+ };
+
+ config = mkIf (cfg.enable && cfg.platformTheme != null) {
+ home.sessionVariables.QT_QPA_PLATFORMTHEME =
+ if cfg.platformTheme == "gnome" then "gnome" else "gtk2";
+
+ home.packages = if cfg.platformTheme == "gnome" then
+ [ pkgs.qgnomeplatform ]
+ else
+ [ pkgs.libsForQt5.qtstyleplugins ];
+
+ xsession.importedVariables = [ "QT_QPA_PLATFORMTHEME" ];
+
+ # Enable GTK+ style for Qt4 in either case.
+ # It doesnโ€™t support the platform theme packages.
+ home.activation.useGtkThemeInQt4 = hm.dag.entryAfter [ "writeBoundary" ] ''
+ $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG \
+ --set "${config.xdg.configHome}/Trolltech.conf" Qt style GTK+
+ '';
+ };
+}