summaryrefslogtreecommitdiff
path: root/manifests/seat.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/seat.pp')
-rw-r--r--manifests/seat.pp186
1 files changed, 186 insertions, 0 deletions
diff --git a/manifests/seat.pp b/manifests/seat.pp
new file mode 100644
index 0000000..905503e
--- /dev/null
+++ b/manifests/seat.pp
@@ -0,0 +1,186 @@
+# @summary Seat configuration
+#
+# @param seat_name
+# Seat configuration is matched against the seat name glob in the
+# section, for example:
+# - `[Seat:*]` matches all seats and is applied first.
+# - `[Seat:seat0]` matches the seat named "seat0".
+# - `[Seat:seat-thin-client*]` matches all seats that have names
+# that start with "seat-thin-client".
+# @param order
+# Order in resulting configuration file this should appear.
+# Probably doesn't matter.
+# --------------------------------------------------
+# @param type
+# Seat type (local, xremote)
+# @param pam_service
+# PAM service to use for login
+# @param pam_autologin_service
+# PAM service to use for autologin
+# @param pam_greeter_service
+# PAM service to use for greeters
+# @param xserver_command
+# X server command to run (can also contain arguments e.g. X -special-option)
+# @param xmir_command
+# Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
+# @param xserver_config
+# Config file to pass to X server
+# @param xserver_layout
+# Layout to pass to X server
+# @param xserver_allow_tcp
+# True if TCP/IP connections are allowed to this X server
+# @param xserver_share
+# True if the X server is shared for both greeter and session
+# @param xserver_hostname
+# Hostname of X server (only for type=xremote)
+# @param xserver_display_number
+# Display number of X server (only for type=xremote)
+# @param xdmcp_manager
+# XDMCP manager to connect to (implies xserver_allow_tcp=true)
+# @param xdmcp_port
+# XDMCP UDP/IP port to communicate on
+# @param xdmcp_key
+# Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
+# @param greeter_session
+# Session to load for greeter
+# @param greeter_hide_users
+# True to hide the user list
+# @param greeter_allow_guest
+# True if the greeter should show a guest login option
+# @param greeter_show_manual_login
+# True if the greeter should offer a manual login option
+# @param greeter_show_remote_login
+# True if the greeter should offer a remote login option
+# @param user_session
+# Session to load for users
+# @param allow_user_switching
+# True if allowed to switch users
+# @param allow_guest
+# True if guest login is allowed
+# @param guest_session
+# Session to load for guests (overrides user_session)
+# @param session_wrapper
+# Wrapper script to run session with
+# @param greeter_wrapper
+# Wrapper script to run greeter with
+# @param guest_wrapper
+# Wrapper script to run guest sessions with
+# @param display_setup_script
+# Script to run when starting a greeter session (runs as root)
+# @param display_stopped_script
+# Script to run after stopping the display server (runs as root)
+# @param greeter_setup_script
+# Script to run when starting a greeter (runs as root)
+# @param session_setup_script
+# Script to run when starting a user session (runs as root)
+# @param session_cleanup_script
+# Script to run when quitting a user session (runs as root)
+# @param autologin_guest
+# True to log in as guest by default
+# @param autologin_user
+# User to log in with by default (overrides autologin_guest)
+# @param autologin_user_timeout
+# Number of seconds to wait before loading default user
+# @param autologin_session
+# Session to load for automatic login (overrides user_session)
+# @param autologin_in_background
+# True if autologin session should not be immediately activated
+# @param exit_on_failure
+# True if the daemon should exit if this seat fails
+define lightdm::seat (
+ Enum['local', 'xremote'] $type = 'local',
+ Optional[String] $pam_service = undef,
+ Optional[String] $pam_autologin_service = undef,
+ Optional[String] $pam_greeter_service = undef,
+ Optional[String] $xserver_command = undef,
+ Optional[String] $xmir_command = undef,
+ Optional[String] $xserver_config = undef,
+ Optional[String] $xserver_layout = undef,
+ Optional[Boolean] $xserver_allow_tcp = undef,
+ Optional[Boolean] $xserver_share = undef,
+ Optional[String] $xserver_hostname = undef,
+ Optional[Integer] $xserver_display_number = undef,
+ Optional[String] $xdmcp_manager = undef,
+ Optional[Stdlib::Port] $xdmcp_port = undef,
+ # TODO sensitive on this?
+ Optional[String] $xdmcp_key = undef,
+ Optional[String] $greeter_session = undef,
+ Optional[Boolean] $greeter_hide_users = undef,
+ Optional[Boolean] $greeter_allow_guest = undef,
+ Optional[Boolean] $greeter_show_manual_login = undef,
+ Optional[Boolean] $greeter_show_remote_login = undef,
+ Optional[String] $user_session = undef,
+ Optional[Boolean] $allow_user_switching = undef,
+ Optional[Boolean] $allow_guest = undef,
+ Optional[String] $guest_session = undef,
+ String $session_wrapper = '/etc/lightdm/Xsession',
+ Optional[String] $greeter_wrapper = undef,
+ Optional[String] $guest_wrapper = undef,
+ Optional[String] $display_setup_script = undef,
+ Optional[String] $display_stopped_script = undef,
+ Optional[String] $greeter_setup_script = undef,
+ Optional[String] $session_setup_script = undef,
+ Optional[String] $session_cleanup_script = undef,
+ Optional[Boolean] $autologin_guest = undef,
+ Optional[String] $autologin_user = undef,
+ Optional[Integer] $autologin_user_timeout = undef,
+ Optional[String] $autologin_session = undef,
+ Optional[Boolean] $autologin_in_background = undef,
+ Optional[Boolean] $exit_on_failure = undef,
+
+ String $seat_name = $name,
+ Integer[0] $order = 0,
+) {
+ if $order > $lightdm::conf::seat_fragment_max - $lightdm::conf::seat_fragment_min {
+ fail("order (${order}) outside allowed range")
+ }
+
+ $conf = {
+ 'type' => $type,
+ 'pam-service' => $pam_service,
+ 'pam-autologin-service' => $pam_autologin_service,
+ 'pam-greeter-service' => $pam_greeter_service,
+ 'xserver-command' => $xserver_command,
+ 'xmir-command' => $xmir_command,
+ 'xserver-config' => $xserver_config,
+ 'xserver-layout' => $xserver_layout,
+ 'xserver-allow-tcp' => $xserver_allow_tcp,
+ 'xserver-share' => $xserver_share,
+ 'xserver-hostname' => $xserver_hostname,
+ 'xserver-display-number' => $xserver_display_number,
+ 'xdmcp-manager' => $xdmcp_manager,
+ 'xdmcp-port' => $xdmcp_port,
+ 'xdmcp-key' => $xdmcp_key,
+ 'greeter-session' => $greeter_session,
+ 'greeter-hide-users' => $greeter_hide_users,
+ 'greeter-allow-guest' => $greeter_allow_guest,
+ 'greeter-show-manual-login' => $greeter_show_manual_login,
+ 'greeter-show-remote-login' => $greeter_show_remote_login,
+ 'user-session' => $user_session,
+ 'allow-user-switching' => $allow_user_switching,
+ 'allow-guest' => $allow_guest,
+ 'guest-session' => $guest_session,
+ 'session-wrapper' => $session_wrapper,
+ 'greeter-wrapper' => $greeter_wrapper,
+ 'guest-wrapper' => $guest_wrapper,
+ 'display-setup-script' => $display_setup_script,
+ 'display-stopped-script' => $display_stopped_script,
+ 'greeter-setup-script' => $greeter_setup_script,
+ 'session-setup-script' => $session_setup_script,
+ 'session-cleanup-script' => $session_cleanup_script,
+ 'autologin-guest' => $autologin_guest,
+ 'autologin-user' => $autologin_user,
+ 'autologin-user-timeout' => $autologin_user_timeout,
+ 'autologin-session' => $autologin_session,
+ 'autologin-in-background' => $autologin_in_background,
+ 'exit-on-failure' => $exit_on_failure,
+ }
+
+ concat::fragment { "lightdm - config - seat - ${seat_name}":
+ target => $lightdm::config::filename,
+ order => 20 + $order,
+ content => {
+ sections => { "Seat:${seat_name}" => $conf },
+ },
+ }
+}