at master 1.4 kB view raw
1{ pkgs, ... }: 2 3let 4 exampleScript = pkgs.writeTextFile { 5 name = "example.sh"; 6 text = '' 7 #! ${pkgs.runtimeShell} -e 8 9 while true; do 10 echo "Example script running" >&2 11 ${pkgs.coreutils}/bin/sleep 1 12 done 13 ''; 14 executable = true; 15 }; 16 17 unitFile = pkgs.writeTextFile { 18 name = "example.service"; 19 text = '' 20 [Unit] 21 Description=Example systemd service unit file 22 23 [Service] 24 ExecStart=${exampleScript} 25 26 [Install] 27 WantedBy=multi-user.target 28 ''; 29 }; 30in 31{ 32 name = "systemd-misc"; 33 34 nodes.machine = 35 { pkgs, lib, ... }: 36 { 37 boot.extraSystemdUnitPaths = [ "/etc/systemd-rw/system" ]; 38 39 users.users.limited = { 40 isNormalUser = true; 41 uid = 1000; 42 }; 43 44 systemd.units."user-1000.slice.d/limits.conf" = { 45 text = '' 46 [Slice] 47 TasksAccounting=yes 48 TasksMax=100 49 ''; 50 }; 51 }; 52 53 testScript = '' 54 machine.wait_for_unit("multi-user.target") 55 machine.succeed("mkdir -p /etc/systemd-rw/system") 56 machine.succeed( 57 "cp ${unitFile} /etc/systemd-rw/system/example.service" 58 ) 59 machine.succeed("systemctl start example.service") 60 machine.succeed("systemctl status example.service | grep 'Active: active'") 61 62 machine.succeed("systemctl show --property TasksMax --value user-1000.slice | grep 100") 63 ''; 64}