| 
									
										
										
										
											2020-02-22 20:42:27 -05:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cfg = config.qt5; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-05 08:37:09 +03:00
										 |  |  |   isQGnome = cfg.platformTheme == "gnome" && builtins.elem cfg.style ["adwaita" "adwaita-dark"]; | 
					
						
							|  |  |  |   isQtStyle = cfg.platformTheme == "gtk2" && !(builtins.elem cfg.style ["adwaita" "adwaita-dark"]); | 
					
						
							| 
									
										
										
										
											2020-02-22 20:42:27 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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" | 
					
						
							| 
									
										
										
										
											2020-04-05 08:37:09 +03:00
										 |  |  |           "adwaita-dark" | 
					
						
							| 
									
										
										
										
											2020-02-22 20:42:27 -05:00
										 |  |  |           "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> | 
					
						
							| 
									
										
										
										
											2020-04-05 08:37:09 +03:00
										 |  |  |               <term><literal>adwaita-dark</literal></term> | 
					
						
							| 
									
										
										
										
											2020-02-22 20:42:27 -05:00
										 |  |  |               <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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |