nixpkgs/nixos/modules/services/x11/terminal-server.nix
zimbatm 39c01d22bf net-tools: rename from nettools
By being in sync with the pname, it makes it easier to walk back from
the pname that shows in the /nix/store back to the attribute.

This change should not cause any rebuild.
2025-06-21 19:57:36 +02:00

65 lines
1.8 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# This module implements a terminal service based on x11vnc. It
# listens on port 5900 for VNC connections. It then presents a login
# screen to the user. If the user successfully authenticates, x11vnc
# checks to see if a X server is already running for that user. If
# not, a X server (Xvfb) is started for that user. The Xvfb instances
# persist across VNC sessions.
{ lib, pkgs, ... }:
with lib;
{
config = {
services.xserver.enable = true;
services.xserver.videoDrivers = [ ];
# Enable GDM. Any display manager will do as long as it supports XDMCP.
services.displayManager.gdm.enable = true;
systemd.sockets.terminal-server = {
description = "Terminal Server Socket";
wantedBy = [ "sockets.target" ];
before = [ "multi-user.target" ];
socketConfig.Accept = true;
socketConfig.ListenStream = 5900;
};
systemd.services."terminal-server@" = {
description = "Terminal Server";
path = [
pkgs.xorg.xorgserver.out
pkgs.gawk
pkgs.which
pkgs.openssl
pkgs.xorg.xauth
pkgs.net-tools
pkgs.shadow
pkgs.procps
pkgs.util-linux
pkgs.bash
];
environment.FD_GEOM = "1024x786x24";
environment.FD_XDMCP_IF = "127.0.0.1";
#environment.FIND_DISPLAY_OUTPUT = "/tmp/foo"; # to debug the "find display" script
serviceConfig = {
StandardInput = "socket";
StandardOutput = "socket";
StandardError = "journal";
ExecStart = "@${pkgs.x11vnc}/bin/x11vnc x11vnc -inetd -display WAIT:1024x786:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp -unixpw -ssl SAVE";
# Don't kill the X server when the user quits the VNC
# connection. FIXME: the X server should run in a
# separate systemd session.
KillMode = "process";
};
};
};
}