 1d0d69a214
			
		
	
	
		1d0d69a214
		
	
	
	
	
		
			
			This moduule has the following options: * platformTheme * style This allows us to configure the Qt5 theme engine and style.
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
| 
 | |
|   cfg = config.qt5;
 | |
| 
 | |
|   isQGnome = cfg.platformTheme == "gnome" && cfg.style == "adwaita";
 | |
|   isQtStyle = cfg.platformTheme == "gtk2" && cfg.style != "adwaita";
 | |
| 
 | |
|   packages = if isQGnome then [ pkgs.qgnomeplatform pkgs.adwaita-qt ]
 | |
|     else if isQtStyle then [ pkgs.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"
 | |
|           "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>
 | |
|               <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;
 | |
| 
 | |
|   };
 | |
| }
 |