aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/modules/config/qt5.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/modules/config/qt5.nix')
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/config/qt5.nix104
1 files changed, 104 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/modules/config/qt5.nix b/infra/libkookie/nixpkgs/nixos/modules/config/qt5.nix
new file mode 100644
index 000000000000..eabba9ad95f0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/nixos/modules/config/qt5.nix
@@ -0,0 +1,104 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.qt5;
+
+ isQGnome = cfg.platformTheme == "gnome" && builtins.elem cfg.style ["adwaita" "adwaita-dark"];
+ isQtStyle = cfg.platformTheme == "gtk2" && !(builtins.elem cfg.style ["adwaita" "adwaita-dark"]);
+
+ packages = if isQGnome then [ pkgs.qgnomeplatform pkgs.adwaita-qt ]
+ else if isQtStyle then [ pkgs.libsForQt5.qtstyleplugins ]
+ else throw "`qt5.platformTheme` ${cfg.platformTheme} and `qt5.style` ${cfg.style} are not compatible.";
+
+in
+
+{
+
+ options = {
+ qt5 = {
+
+ enable = mkEnableOption "Qt5 theming configuration";
+
+ platformTheme = mkOption {
+ type = types.enum [
+ "gtk2"
+ "gnome"
+ ];
+ example = "gnome";
+ relatedPackages = [
+ "qgnomeplatform"
+ ["libsForQt5" "qtstyleplugins"]
+ ];
+ description = ''
+ Selects the platform theme to use for Qt5 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>
+ '';
+ };
+
+ style = mkOption {
+ type = types.enum [
+ "adwaita"
+ "adwaita-dark"
+ "cleanlooks"
+ "gtk2"
+ "motif"
+ "plastique"
+ ];
+ example = "adwaita";
+ relatedPackages = [
+ "adwaita-qt"
+ ["libsForQt5" "qtstyleplugins"]
+ ];
+ description = ''
+ Selects the style to use for Qt5 applications.</para>
+ <para>The options are
+ <variablelist>
+ <varlistentry>
+ <term><literal>adwaita</literal></term>
+ <term><literal>adwaita-dark</literal></term>
+ <listitem><para>Use Adwaita Qt style with
+ <link xlink:href="https://github.com/FedoraQt/adwaita-qt">adwaita</link>
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>cleanlooks</literal></term>
+ <term><literal>gtk2</literal></term>
+ <term><literal>motif</literal></term>
+ <term><literal>plastique</literal></term>
+ <listitem><para>Use styles from
+ <link xlink:href="https://github.com/qt/qtstyleplugins">qtstyleplugins</link>
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+
+ environment.variables.QT_QPA_PLATFORMTHEME = cfg.platformTheme;
+
+ environment.variables.QT_STYLE_OVERRIDE = cfg.style;
+
+ environment.systemPackages = packages;
+
+ };
+}