diff --git a/nixos/modules/services/display-managers/ly.nix b/nixos/modules/services/display-managers/ly.nix index 9475f183a16d..76047c3942a7 100644 --- a/nixos/modules/services/display-managers/ly.nix +++ b/nixos/modules/services/display-managers/ly.nix @@ -12,7 +12,7 @@ let cfg = config.services.displayManager.ly; xEnv = config.systemd.services.display-manager.environment; - ly = cfg.package; + ly = cfg.package.override { x11Support = cfg.x11Support; }; iniFmt = pkgs.formats.iniWithGlobalSection { }; @@ -41,13 +41,11 @@ let path = "/run/current-system/sw/bin"; term_reset_cmd = "${pkgs.ncurses}/bin/tput reset"; term_restore_cursor_cmd = "${pkgs.ncurses}/bin/tput cnorm"; - mcookie_cmd = "/run/current-system/sw/bin/mcookie"; waylandsessions = "${dmcfg.sessionData.desktops}/share/wayland-sessions"; - wayland_cmd = dmcfg.sessionData.wrapper; xsessions = "${dmcfg.sessionData.desktops}/share/xsessions"; xauth_cmd = lib.optionalString xcfg.enable "${pkgs.xorg.xauth}/bin/xauth"; x_cmd = lib.optionalString xcfg.enable xserverWrapper; - x_cmd_setup = dmcfg.sessionData.wrapper; + setup_cmd = dmcfg.sessionData.wrapper; }; finalConfig = defaultConfig // cfg.settings; @@ -59,6 +57,11 @@ in options = { services.displayManager.ly = { enable = mkEnableOption "ly as the display manager"; + x11Support = mkOption { + description = "Whether to enable support for X11"; + type = lib.types.bool; + default = true; + }; package = mkPackageOption pkgs [ "ly" ] { }; diff --git a/nixos/tests/ly.nix b/nixos/tests/ly.nix index 4791bf8056f2..b7bee09c3372 100644 --- a/nixos/tests/ly.nix +++ b/nixos/tests/ly.nix @@ -1,23 +1,35 @@ -{ ... }: +{ lib, ... }: +let + machineBase = { + imports = [ ./common/user-account.nix ]; + services.displayManager.ly = { + enable = true; + settings = { + load = false; + save = false; + }; + }; + }; +in { name = "ly"; nodes.machine = { ... }: - { - imports = [ ./common/user-account.nix ]; - services.displayManager.ly = { - enable = true; - settings = { - load = false; - save = false; - }; - }; + lib.attrsets.recursiveUpdate machineBase { + services.displayManager.ly.x11Support = true; services.xserver.enable = true; services.displayManager.defaultSession = "none+icewm"; services.xserver.windowManager.icewm.enable = true; }; + nodes.machineNoX11 = + { ... }: + lib.attrsets.recursiveUpdate machineBase { + services.displayManager.ly.x11Support = false; + services.displayManager.defaultSession = "sway"; + programs.sway.enable = true; + }; testScript = { nodes, ... }: @@ -26,6 +38,7 @@ in '' start_all() + machine.wait_until_tty_matches("2", "password:") machine.send_key("ctrl-alt-f2") machine.sleep(1) @@ -38,5 +51,18 @@ machine.succeed("xauth merge /run/user/${toString user.uid}/lyxauth") machine.wait_for_window("^IceWM ") machine.screenshot("icewm") + + machineNoX11.wait_until_tty_matches("2", "password:") + machineNoX11.send_key("ctrl-alt-f2") + machineNoX11.sleep(1) + machineNoX11.screenshot("ly-no-x11") + machineNoX11.send_chars("alice") + machineNoX11.send_key("tab") + machineNoX11.send_chars("${user.password}") + machineNoX11.send_key("ret") + machineNoX11.wait_for_file("/run/user/${toString user.uid}/wayland-1") + machineNoX11.wait_for_file("/run/user/${toString user.uid}/sway-ipc.*.sock") + machineNoX11.sleep(5) + machineNoX11.screenshot("sway") ''; } diff --git a/pkgs/by-name/ly/ly/deps.nix b/pkgs/by-name/ly/ly/deps.nix index 17a9803b92f2..67982e9667a4 100644 --- a/pkgs/by-name/ly/ly/deps.nix +++ b/pkgs/by-name/ly/ly/deps.nix @@ -89,23 +89,23 @@ let in linkFarm name [ { - name = "122062d301a203d003547b414237229b09a7980095061697349f8bef41be9c30266b"; + name = "clap-0.10.0-oBajB434AQBDh-Ei3YtoKIRxZacVPF1iSwp3IX_ZB8f0"; path = fetchZigArtifact { name = "clap"; - url = "https://github.com/Hejsil/zig-clap/archive/refs/tags/0.9.1.tar.gz"; - hash = "sha256-7qxm/4xb+58MGG+iUzssUtR97OG2dRjAqyS0BAet4HY="; + url = "https://github.com/Hejsil/zig-clap/archive/refs/tags/0.10.0.tar.gz"; + hash = "sha256-cbPGmVlIXwIuRPIfQoFXzwLulT4XEv8rQWcJUl1ueyo="; }; } { - name = "12209b971367b4066d40ecad4728e6fdffc4cc4f19356d424c2de57f5b69ac7a619a"; + name = "zigini-0.3.1-BSkB7XJGAAB2E-sKyzhTaQCBlYBL8yqzE4E_jmSY99sC"; path = fetchZigArtifact { name = "zigini"; - url = "https://github.com/Kawaii-Ash/zigini/archive/0bba97a12582928e097f4074cc746c43351ba4c8.tar.gz"; - hash = "sha256-OdaJ5tqmk2MPwaAbpK4HRD/CcQCN+Cjj8U63BqUcFMs="; + url = "https://github.com/Kawaii-Ash/zigini/archive/2ed3d417f17fab5b0ee8cad8a63c6d62d7ac1042.tar.gz"; + hash = "sha256-Zj9uU6EEHkNZ1cPIDgDj1E2CEpbmPmpJYjSSFnxxdf0="; }; } { - name = "1220b0979ea9891fa4aeb85748fc42bc4b24039d9c99a4d65d893fb1c83e921efad8"; + name = "N-V-__8AAB9qAACwl56piR-krrhXSPxCvEskA52cmaTWXYk_"; path = fetchZigArtifact { name = "ini"; url = "https://github.com/ziglibs/ini/archive/e18d36665905c1e7ba0c1ce3e8780076b33e3002.tar.gz"; diff --git a/pkgs/by-name/ly/ly/package.nix b/pkgs/by-name/ly/ly/package.nix index dcd17d426390..be47fbe07f1a 100644 --- a/pkgs/by-name/ly/ly/package.nix +++ b/pkgs/by-name/ly/ly/package.nix @@ -1,51 +1,55 @@ { stdenv, lib, - fetchFromGitHub, + fetchFromGitea, linux-pam, libxcb, makeBinaryWrapper, - zig_0_13, + zig_0_14, callPackage, nixosTests, + x11Support ? true, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "ly"; - version = "1.0.3"; + version = "1.1.0"; - src = fetchFromGitHub { - owner = "fairyglade"; + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "AnErrupTion"; repo = "ly"; - rev = "v1.0.3"; - hash = "sha256-TsEn0kH7j4myjjgwHnbOUmIZjHn8A1d/7IjamoWxpXQ="; + tag = "v${finalAttrs.version}"; + hash = "sha256-+rRvrlzV5MDwb/7pr/oZjxxDmE1kbnchyUi70xwp0Cw="; }; nativeBuildInputs = [ makeBinaryWrapper - zig_0_13.hook + zig_0_14.hook ]; buildInputs = [ - libxcb linux-pam - ]; + ] ++ (lib.optionals x11Support [ libxcb ]); postPatch = '' ln -s ${ callPackage ./deps.nix { - zig = zig_0_13; + zig = zig_0_14; } } $ZIG_GLOBAL_CACHE_DIR/p ''; + zigBuildFlags = [ + "-Denable_x11_support=${lib.boolToString x11Support}" + ]; passthru.tests = { inherit (nixosTests) ly; }; - meta = with lib; { + meta = { description = "TUI display manager"; - license = licenses.wtfpl; - homepage = "https://github.com/fairyglade/ly"; - maintainers = [ maintainers.vidister ]; - platforms = platforms.linux; + license = lib.licenses.wtfpl; + homepage = "https://codeberg.org/AnErrupTion/ly"; + maintainers = [ lib.maintainers.vidister ]; + platforms = lib.platforms.linux; mainProgram = "ly"; }; -} +})