at 23.11-pre 1.3 kB view raw
1import ./make-test-python.nix ({pkgs, lib, ...}: let 2 demo-program = pkgs.writeShellScriptBin "demo" '' 3 while ${pkgs.coreutils}/bin/sleep 3; do 4 echo Hello World > /dev/null 5 done 6 ''; 7 demo-service = pkgs.writeText "demo.service" '' 8 [Unit] 9 Description=demo service 10 Requires=demo.socket 11 After=demo.socket 12 13 [Service] 14 Type=simple 15 ExecStart=${demo-program}/bin/demo 16 Restart=always 17 18 [Install] 19 WantedBy=multi-user.target 20 Also=demo.socket 21 ''; 22 demo-socket = pkgs.writeText "demo.socket" '' 23 [Unit] 24 Description=demo socket 25 26 [Socket] 27 ListenStream=/run/demo.sock 28 SocketMode=0666 29 30 [Install] 31 WantedBy=sockets.target 32 ''; 33 demo-portable = pkgs.portableService { 34 pname = "demo"; 35 version = "1.0"; 36 description = ''A demo "Portable Service" for a shell program built with nix''; 37 units = [ demo-service demo-socket ]; 38 }; 39in { 40 41 name = "systemd-portabled"; 42 nodes.machine = {}; 43 testScript = '' 44 machine.succeed("portablectl") 45 machine.wait_for_unit("systemd-portabled.service") 46 machine.succeed("portablectl attach --now --runtime ${demo-portable}/demo_1.0.raw") 47 machine.wait_for_unit("demo.service") 48 machine.succeed("portablectl detach --now --runtime demo_1.0") 49 machine.fail("systemctl status demo.service") 50 ''; 51})