nixos-config/common/exprs/make-vncserver.nix

25 lines
958 B
Nix

pkgs: user: display: port: xstartup:
{
enable = true;
environment = {
PATH = pkgs.lib.mkForce "/run/wrappers/bin:/home/${user}/.nix-profile/bin:/nix/profile/bin:/home/${user}/.local/state/nix/profile/bin:/etc/profiles/per-user/user/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin";
};
unitConfig = {
Description = "Remote desktop service (VNC)";
After = "syslog.target network.target";
};
serviceConfig = {
Type = "simple";
User = "${user}";
WorkingDirectory = "/home/${user}";
Restart = "always";
ExecStartPre = "${pkgs.bash}/bin/bash -c '${pkgs.tigervnc}/bin/vncserver -kill ${display} > /dev/null 2>&1 || :'";
ExecStart = "${pkgs.xorg.xinit}/bin/xinit /home/${user}/.vnc/${xstartup} -- ${pkgs.tigervnc}/bin/Xvnc ${display} -rfbauth /home/${user}/.vnc/passwd -rfbport ${port}";
ExecStop = "${pkgs.tigervnc}/bin/vncserver -kill ${display}";
};
wantedBy = ["multi-user.target"];
}