diff --git a/nixos/modules/services/x11/window-managers/qtile.nix b/nixos/modules/services/x11/window-managers/qtile.nix index 700ead836600..4603ca3fb50f 100644 --- a/nixos/modules/services/x11/window-managers/qtile.nix +++ b/nixos/modules/services/x11/window-managers/qtile.nix @@ -7,6 +7,10 @@ let in { + imports = [ + (mkRemovedOptionModule [ "services" "xserver" "windowManager" "qtile" "backend" ] "The qtile package now provides separate display sessions for both X11 and Wayland.") + ]; + options.services.xserver.windowManager.qtile = { enable = mkEnableOption "qtile"; @@ -22,14 +26,6 @@ in ''; }; - backend = mkOption { - type = types.enum [ "x11" "wayland" ]; - default = "x11"; - description = '' - Backend to use in qtile: `x11` or `wayland`. - ''; - }; - extraPackages = mkOption { type = types.functionTo (types.listOf types.package); default = _: []; @@ -57,25 +53,14 @@ in }; config = mkIf cfg.enable { - services.xserver.windowManager.qtile.finalPackage = pkgs.python3.withPackages (p: - [ (cfg.package.unwrapped or cfg.package) ] ++ (cfg.extraPackages p) - ); + services = { + xserver.windowManager.qtile.finalPackage = pkgs.python3.pkgs.qtile.override { extraPackages = cfg.extraPackages pkgs.python3.pkgs; }; + displayManager.sessionPackages = [ cfg.finalPackage ]; + }; - services.xserver.windowManager.session = [{ - name = "qtile"; - start = '' - ${cfg.finalPackage}/bin/qtile start -b ${cfg.backend} \ - ${optionalString (cfg.configFile != null) - "--config \"${cfg.configFile}\""} & - waitPID=$! - ''; - }]; - - environment.systemPackages = [ - # pkgs.qtile is currently a buildenv of qtile and its dependencies. - # For userland commands, we want the underlying package so that - # packages such as python don't bleed into userland and overwrite intended behavior. - (cfg.package.unwrapped or cfg.package) - ]; + environment = { + etc."xdg/qtile/config.py" = mkIf (cfg.configFile != null) { source = cfg.configFile; }; + systemPackages = [ cfg.finalPackage ]; + }; }; } diff --git a/nixos/tests/qtile.nix b/nixos/tests/qtile.nix index b4d8f9d42114..96afaa342c52 100644 --- a/nixos/tests/qtile.nix +++ b/nixos/tests/qtile.nix @@ -10,7 +10,7 @@ import ./make-test-python.nix ({ lib, ...} : { test-support.displayManager.auto.user = "alice"; services.xserver.windowManager.qtile.enable = true; - services.displayManager.defaultSession = lib.mkForce "none+qtile"; + services.displayManager.defaultSession = lib.mkForce "qtile"; environment.systemPackages = [ pkgs.kitty ]; }; diff --git a/pkgs/development/python-modules/qtile/default.nix b/pkgs/development/python-modules/qtile/default.nix index c252601e8a25..e65aad91904a 100644 --- a/pkgs/development/python-modules/qtile/default.nix +++ b/pkgs/development/python-modules/qtile/default.nix @@ -30,6 +30,7 @@ xcffib, xkbcommon, nixosTests, + extraPackages ? [ ], }: buildPythonPackage rec { @@ -66,7 +67,7 @@ buildPythonPackage rec { pkg-config ]; - dependencies = [ + dependencies = extraPackages ++ [ (cairocffi.override { withXcffib = true; }) dbus-next iwlib @@ -97,6 +98,11 @@ buildPythonPackage rec { providedSessions = [ "qtile" ]; }; + postInstall = '' + install resources/qtile.desktop -Dt $out/share/xsessions + install resources/qtile-wayland.desktop -Dt $out/share/wayland-sessions + ''; + meta = with lib; { homepage = "http://www.qtile.org/"; license = licenses.mit; diff --git a/pkgs/development/python-modules/qtile/wrapper.nix b/pkgs/development/python-modules/qtile/wrapper.nix deleted file mode 100644 index b4f6e4c2e23b..000000000000 --- a/pkgs/development/python-modules/qtile/wrapper.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ python3 }: - -(python3.withPackages (_: [ python3.pkgs.qtile ])).overrideAttrs (_: { - # restore some qtile attrs, beautify name - inherit (python3.pkgs.qtile) pname version meta; - name = with python3.pkgs.qtile; "${pname}-${version}"; - passthru.unwrapped = python3.pkgs.qtile; -}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6f1e79338322..894cc0d9c239 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35074,8 +35074,6 @@ with pkgs; qpdfview = libsForQt5.callPackage ../applications/office/qpdfview { }; - qtile = callPackage ../development/python-modules/qtile/wrapper.nix { }; - vimgolf = callPackage ../games/vimgolf { }; vimpc = callPackage ../applications/audio/vimpc { };