From 20eec340361e7450cf20962d699c47d19219dca7 Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Sat, 16 Mar 2024 19:13:04 +0100 Subject: [PATCH 1/4] nixos/nimdow: Make package configurable, ensure nimdow can start a terminal in it's default config --- nixos/modules/services/x11/window-managers/nimdow.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/x11/window-managers/nimdow.nix b/nixos/modules/services/x11/window-managers/nimdow.nix index de3192876024..9cee4bb271a5 100644 --- a/nixos/modules/services/x11/window-managers/nimdow.nix +++ b/nixos/modules/services/x11/window-managers/nimdow.nix @@ -8,16 +8,23 @@ in { options = { services.xserver.windowManager.nimdow.enable = mkEnableOption (lib.mdDoc "nimdow"); + services.xserver.windowManager.nimdow.package = mkOption { + type = types.package; + default = pkgs.nimdow; + defaultText = "pkgs.nimdow"; + description = lib.mdDoc "nimdow package to use"; + }; }; + config = mkIf cfg.enable { services.xserver.windowManager.session = singleton { name = "nimdow"; start = '' - ${pkgs.nimdow}/bin/nimdow & + ${cfg.package}/bin/nimdow & waitPID=$! ''; }; - environment.systemPackages = [ pkgs.nimdow ]; + environment.systemPackages = [ cfg.package pkgs.st ]; }; } From 11855d0fe17a0a649a6853a5dbae29f98c0493a7 Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Sat, 16 Mar 2024 19:13:51 +0100 Subject: [PATCH 2/4] tests/nimdow: init --- nixos/tests/all-tests.nix | 1 + nixos/tests/nimdow.nix | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 nixos/tests/nimdow.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 89e92bc8a999..b5099db80260 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -580,6 +580,7 @@ in { ndppd = handleTest ./ndppd.nix {}; nebula = handleTest ./nebula.nix {}; netbird = handleTest ./netbird.nix {}; + nimdow = handleTest ./nimdow.nix {}; neo4j = handleTest ./neo4j.nix {}; netdata = handleTest ./netdata.nix {}; networking.networkd = handleTest ./networking.nix { networkd = true; }; diff --git a/nixos/tests/nimdow.nix b/nixos/tests/nimdow.nix new file mode 100644 index 000000000000..cefe46edc5fb --- /dev/null +++ b/nixos/tests/nimdow.nix @@ -0,0 +1,25 @@ +import ./make-test-python.nix ({ pkgs, ...} : { + name = "nimdow"; + meta = with pkgs.lib.maintainers; { + maintainers = [ marcusramberg ]; + }; + + nodes.machine = { lib, ... }: { + imports = [ ./common/x11.nix ./common/user-account.nix ]; + test-support.displayManager.auto.user = "alice"; + services.xserver.displayManager.defaultSession = lib.mkForce "none+nimdow"; + services.xserver.windowManager.nimdow.enable = true; + }; + + testScript = { ... }: '' + with subtest("ensure x starts"): + machine.wait_for_x() + machine.wait_for_file("/home/alice/.Xauthority") + machine.succeed("xauth merge ~alice/.Xauthority") + + with subtest("ensure we can open a new terminal"): + machine.send_key("meta_l-ret") + machine.wait_for_window(r"alice.*?machine") + machine.screenshot("terminal") + ''; +}) From 2d25ea2b6aef005a9c6ded67ed361acbe58ffd18 Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Wed, 20 Mar 2024 13:39:11 +0100 Subject: [PATCH 3/4] nimdow: Restrict nimdow to linux-platforms --- pkgs/by-name/ni/nimdow/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ni/nimdow/package.nix b/pkgs/by-name/ni/nimdow/package.nix index a77fb05298b7..d9fb88363b8b 100644 --- a/pkgs/by-name/ni/nimdow/package.nix +++ b/pkgs/by-name/ni/nimdow/package.nix @@ -33,6 +33,7 @@ buildNimPackage (finalAttrs: { meta = with lib; finalAttrs.src.meta // { description = "Nim based tiling window manager"; + platforms = platforms.linux; license = [ licenses.gpl2 ]; maintainers = [ maintainers.marcusramberg ]; mainProgram = "nimdow"; From 501879e971b4a06801fdc830fc37821497bd21bb Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Wed, 20 Mar 2024 13:39:45 +0100 Subject: [PATCH 4/4] nimdow: Add passthru for nimdow module test --- pkgs/by-name/ni/nimdow/package.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/ni/nimdow/package.nix b/pkgs/by-name/ni/nimdow/package.nix index d9fb88363b8b..7a5542c2c05f 100644 --- a/pkgs/by-name/ni/nimdow/package.nix +++ b/pkgs/by-name/ni/nimdow/package.nix @@ -1,4 +1,4 @@ -{ lib, buildNimPackage, fetchFromGitHub, testers }: +{ lib, buildNimPackage, fetchFromGitHub, nixosTests, testers }: buildNimPackage (finalAttrs: { pname = "nimdow"; @@ -25,9 +25,12 @@ buildNimPackage (finalAttrs: { substituteInPlace src/nimdowpkg/config/configloader.nim --replace "/usr/share/nimdow" "$out/share/nimdow" ''; - passthru.tests.version = testers.testVersion { - package = finalAttrs.finalPackage; - version = "v${finalAttrs.version}"; + passthru.tests = { + nimdow = nixosTests.nimdow; + version = testers.testVersion { + package = finalAttrs.finalPackage; + version = "v${finalAttrs.version}"; + }; }; meta = with lib;