diff --git a/nixos/doc/manual/configuration/x-windows.chapter.md b/nixos/doc/manual/configuration/x-windows.chapter.md index f92403ed1c4c..be185cf4c314 100644 --- a/nixos/doc/manual/configuration/x-windows.chapter.md +++ b/nixos/doc/manual/configuration/x-windows.chapter.md @@ -199,9 +199,9 @@ GTK themes can be installed either to user profile or system-wide (via GTK ones, you can use the following configuration: ```nix -qt5.enable = true; -qt5.platformTheme = "gtk2"; -qt5.style = "gtk2"; +qt.enable = true; +qt.platformTheme = "gtk2"; +qt.style = "gtk2"; ``` ## Custom XKB layouts {#custom-xkb-layouts .unnumbered} diff --git a/nixos/doc/manual/from_md/configuration/x-windows.chapter.xml b/nixos/doc/manual/from_md/configuration/x-windows.chapter.xml index c5a8b9bae84d..319d3e980188 100644 --- a/nixos/doc/manual/from_md/configuration/x-windows.chapter.xml +++ b/nixos/doc/manual/from_md/configuration/x-windows.chapter.xml @@ -223,9 +223,9 @@ services.xserver.libinput.touchpad.tapping = false; configuration: -qt5.enable = true; -qt5.platformTheme = "gtk2"; -qt5.style = "gtk2"; +qt.enable = true; +qt.platformTheme = "gtk2"; +qt.style = "gtk2";
diff --git a/nixos/modules/config/qt5.nix b/nixos/modules/config/qt.nix similarity index 77% rename from nixos/modules/config/qt5.nix rename to nixos/modules/config/qt.nix index cb3180d7b96a..35defb8fbd99 100644 --- a/nixos/modules/config/qt5.nix +++ b/nixos/modules/config/qt.nix @@ -4,7 +4,7 @@ with lib; let - cfg = config.qt5; + cfg = config.qt; isQGnome = cfg.platformTheme == "gnome" && builtins.elem cfg.style ["adwaita" "adwaita-dark"]; isQtStyle = cfg.platformTheme == "gtk2" && !(builtins.elem cfg.style ["adwaita" "adwaita-dark"]); @@ -12,22 +12,34 @@ let isLxqt = cfg.platformTheme == "lxqt"; isKde = cfg.platformTheme == "kde"; - packages = if isQGnome then [ pkgs.qgnomeplatform pkgs.adwaita-qt ] + packages = + if isQGnome then [ + pkgs.qgnomeplatform + pkgs.adwaita-qt + pkgs.qgnomeplatform-qt6 + pkgs.adwaita-qt6 + ] else if isQtStyle then [ pkgs.libsForQt5.qtstyleplugins ] else if isQt5ct then [ pkgs.libsForQt5.qt5ct ] else if isLxqt then [ pkgs.lxqt.lxqt-qtplugin pkgs.lxqt.lxqt-config ] else if isKde then [ pkgs.libsForQt5.plasma-integration pkgs.libsForQt5.systemsettings ] - else throw "`qt5.platformTheme` ${cfg.platformTheme} and `qt5.style` ${cfg.style} are not compatible."; + else throw "`qt.platformTheme` ${cfg.platformTheme} and `qt.style` ${cfg.style} are not compatible."; in { meta.maintainers = [ maintainers.romildo ]; - options = { - qt5 = { + imports = [ + (mkRenamedOptionModule ["qt5" "enable" ] ["qt" "enable" ]) + (mkRenamedOptionModule ["qt5" "platformTheme" ] ["qt" "platformTheme" ]) + (mkRenamedOptionModule ["qt5" "style" ] ["qt" "style" ]) + ]; - enable = mkEnableOption (lib.mdDoc "Qt5 theming configuration"); + options = { + qt = { + + enable = mkEnableOption (lib.mdDoc "Qt theming configuration"); platformTheme = mkOption { type = types.enum [ @@ -40,13 +52,14 @@ in example = "gnome"; relatedPackages = [ "qgnomeplatform" + "qgnomeplatform-qt6" ["libsForQt5" "qtstyleplugins"] ["libsForQt5" "qt5ct"] ["lxqt" "lxqt-qtplugin"] ["libsForQt5" "plasma-integration"] ]; description = lib.mdDoc '' - Selects the platform theme to use for Qt5 applications. + Selects the platform theme to use for Qt applications. The options are - `gtk`: Use GTK theme with [qtstyleplugins](https://github.com/qt/qtstyleplugins) @@ -71,10 +84,11 @@ in example = "adwaita"; relatedPackages = [ "adwaita-qt" + "adwaita-qt6" ["libsForQt5" "qtstyleplugins"] ]; description = lib.mdDoc '' - Selects the style to use for Qt5 applications. + Selects the style to use for Qt applications. The options are - `adwaita`, `adwaita-dark`: Use Adwaita Qt style with diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix index d015e10c11d8..12feb2d96ecc 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix @@ -31,7 +31,7 @@ }; # Theme calamares with GNOME theme - qt5 = { + qt = { enable = true; platformTheme = "gnome"; }; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 3092b021bd9a..adac3ac89bf8 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -20,7 +20,7 @@ ./config/nsswitch.nix ./config/power-management.nix ./config/pulseaudio.nix - ./config/qt5.nix + ./config/qt.nix ./config/resolvconf.nix ./config/shells-environment.nix ./config/swap.nix diff --git a/nixos/modules/services/x11/desktop-managers/cinnamon.nix b/nixos/modules/services/x11/desktop-managers/cinnamon.nix index df1b6f731a4e..a693f3e2379a 100644 --- a/nixos/modules/services/x11/desktop-managers/cinnamon.nix +++ b/nixos/modules/services/x11/desktop-managers/cinnamon.nix @@ -198,10 +198,10 @@ in programs.bash.vteIntegration = mkDefault true; programs.zsh.vteIntegration = mkDefault true; - # Harmonize Qt5 applications under Cinnamon - qt5.enable = true; - qt5.platformTheme = "gnome"; - qt5.style = "adwaita"; + # Harmonize Qt applications under Cinnamon + qt.enable = true; + qt.platformTheme = "gnome"; + qt.style = "adwaita"; # Default Fonts fonts.fonts = with pkgs; [ diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix index 9c1978e362bc..dadfb421d3a8 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome.nix @@ -352,8 +352,8 @@ in }) ]; - # Harmonize Qt5 application style and also make them use the portal for file chooser dialog. - qt5 = { + # Harmonize Qt application style and also make them use the portal for file chooser dialog. + qt = { enable = mkDefault true; platformTheme = mkDefault "gnome"; style = mkDefault "adwaita"; diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix index 5c0203224e13..f5cc2d8187da 100644 --- a/nixos/modules/services/x11/desktop-managers/pantheon.nix +++ b/nixos/modules/services/x11/desktop-managers/pantheon.nix @@ -250,10 +250,10 @@ in programs.bash.vteIntegration = mkDefault true; programs.zsh.vteIntegration = mkDefault true; - # Harmonize Qt5 applications under Pantheon - qt5.enable = true; - qt5.platformTheme = "gnome"; - qt5.style = "adwaita"; + # Harmonize Qt applications under Pantheon + qt.enable = true; + qt.platformTheme = "gnome"; + qt.style = "adwaita"; # Default Fonts fonts.fonts = with pkgs; [ diff --git a/nixos/tests/keepassxc.nix b/nixos/tests/keepassxc.nix index 303be1330405..debb469032a6 100644 --- a/nixos/tests/keepassxc.nix +++ b/nixos/tests/keepassxc.nix @@ -17,7 +17,7 @@ import ./make-test-python.nix ({ pkgs, ...} : services.xserver.enable = true; # Regression test for https://github.com/NixOS/nixpkgs/issues/163482 - qt5 = { + qt = { enable = true; platformTheme = "gnome"; style = "adwaita-dark"; diff --git a/pkgs/data/themes/adwaita-qt/default.nix b/pkgs/data/themes/adwaita-qt/default.nix index 79690fa4e6af..2a5d768b1ae3 100644 --- a/pkgs/data/themes/adwaita-qt/default.nix +++ b/pkgs/data/themes/adwaita-qt/default.nix @@ -1,16 +1,17 @@ -{ mkDerivation -, stdenv +{ stdenv , lib , fetchFromGitHub , nix-update-script , cmake , ninja , qtbase +, qtwayland , qt5 , xorg +, useQt6 ? false }: -mkDerivation rec { +stdenv.mkDerivation rec { pname = "adwaita-qt"; version = "1.4.1"; @@ -30,9 +31,19 @@ mkDerivation rec { buildInputs = [ qtbase - qt5.qtx11extras ] ++ lib.optionals stdenv.isLinux [ xorg.libxcb + ] ++ lib.optionals (!useQt6) [ + qt5.qtx11extras + ] ++ lib.optionals useQt6 [ + qtwayland + ]; + + # Qt setup hook complains about missing `wrapQtAppsHook` otherwise. + dontWrapQtApps = true; + + cmakeFlags = lib.optionals useQt6 [ + "-DUSE_QT6=true" ]; postPatch = '' diff --git a/pkgs/development/libraries/qgnomeplatform/default.nix b/pkgs/development/libraries/qgnomeplatform/default.nix index 7f03baba0f4a..12a41104cfd3 100644 --- a/pkgs/development/libraries/qgnomeplatform/default.nix +++ b/pkgs/development/libraries/qgnomeplatform/default.nix @@ -1,19 +1,22 @@ -{ mkDerivation +{ stdenv , lib , fetchFromGitHub , nix-update-script , cmake , pkg-config , adwaita-qt +, adwaita-qt6 , glib , gtk3 , qtbase +, qtwayland , pantheon , substituteAll , gsettings-desktop-schemas +, useQt6 ? false }: -mkDerivation rec { +stdenv.mkDerivation rec { pname = "qgnomeplatform"; version = "0.8.4"; @@ -38,15 +41,24 @@ mkDerivation rec { ]; buildInputs = [ - adwaita-qt glib gtk3 qtbase + ] ++ lib.optionals (!useQt6) [ + adwaita-qt + ] ++ lib.optionals useQt6 [ + adwaita-qt6 + qtwayland ]; + # Qt setup hook complains about missing `wrapQtAppsHook` otherwise. + dontWrapQtApps = true; + cmakeFlags = [ "-DGLIB_SCHEMAS_DIR=${glib.getSchemaPath gsettings-desktop-schemas}" "-DQT_PLUGINS_DIR=${placeholder "out"}/${qtbase.qtPluginPrefix}" + ] ++ lib.optionals useQt6 [ + "-DUSE_QT6=true" ]; passthru = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 06829d1376c1..8aebe9618cd4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22562,6 +22562,10 @@ with pkgs; qgnomeplatform = libsForQt5.callPackage ../development/libraries/qgnomeplatform { }; + qgnomeplatform-qt6 = qt6Packages.callPackage ../development/libraries/qgnomeplatform { + useQt6 = true; + }; + randomx = darwin.apple_sdk_11_0.callPackage ../development/libraries/randomx { }; remodel = callPackage ../development/tools/remodel { @@ -26435,6 +26439,10 @@ with pkgs; adwaita-qt = libsForQt5.callPackage ../data/themes/adwaita-qt { }; + adwaita-qt6 = qt6Packages.callPackage ../data/themes/adwaita-qt { + useQt6 = true; + }; + adw-gtk3 = callPackage ../data/themes/adw-gtk3 { }; agave = callPackage ../data/fonts/agave { };