Commit 50643d3a authored by Arjan Schrijver's avatar Arjan Schrijver
Browse files

qtile: use proper session .desktop files

parent 5b3b5d79
Loading
Loading
Loading
Loading
+12 −27
Original line number Diff line number Diff line
@@ -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.session = [{
      name = "qtile";
      start = ''
        ${cfg.finalPackage}/bin/qtile start -b ${cfg.backend} \
        ${optionalString (cfg.configFile != null)
        "--config \"${cfg.configFile}\""} &
        waitPID=$!
      '';
    }];
    services = {
      xserver.windowManager.qtile.finalPackage = pkgs.python3.pkgs.qtile.override { extraPackages = cfg.extraPackages pkgs.python3.pkgs; };
      displayManager.sessionPackages = [ cfg.finalPackage ];
    };

    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 ];
    };
  };
}
+1 −1
Original line number Diff line number Diff line
@@ -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 ];
  };
+7 −1
Original line number Diff line number Diff line
@@ -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;
+0 −8
Original line number Diff line number Diff line
{ 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;
})
+0 −2
Original line number Diff line number Diff line
@@ -35092,8 +35092,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 { };