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