{ config, lib, pkgs, ... }: with lib; { options = { services.uucp = { enable = mkOption { type = types.bool; default = false; description = '' If enabled we set up an account accesible via uucp over ssh ''; }; sshUser = mkOption { type = types.unspecified; default = { name = "uucp"; isSystemUser = true; isNormalUser = false; createHome = true; home = "/var/spool/uucp"; description = "User for uucp over ssh"; }; description = "The local uucp linux-user"; }; sshConfig = mkOption { type = types.str; description = "~uucp/.ssh/config"; }; remoteNodes = mkOption { type = types.listOf types.str; default = []; description = "List of ports to set up. You will probably need to configure these in sshConfig"; }; spoolDir = mkOption { type = types.path; default = "/var/spool/uucp"; description = "Spool directory"; }; lockDir = mkOption { type = types.path; default = "/var/spool/uucp"; description = "Lock directory"; }; pubDir = mkOption { type = types.path; default = "/var/spool/uucppublic"; description = "Public directory"; }; logFile = mkOption { type = types.path; default = "/var/log/uucp"; description = "Log file"; }; statFile = mkOption { type = types.path; default = "/var/log/uucp.stat"; description = "Statistics file"; }; debugFile = mkOption { type = types.path; default = "/var/log/uucp.debug"; description = "Debug file"; }; extraConfig = mkOption { type = types.string; default = ""; description = "Extra configuration to append verbatim to `/etc/uucp/config'"; }; }; }; config = mkIf config.services.uucp.enable { environment.etc."uucp/config" = { text = '' spool ${config.services.uucp.spoolDir} lockdir ${config.services.uucp.lockDir} pubdir ${config.services.uucp.pubDir} logfile ${config.services.uucp.logFile} statfile ${config.services.uucp.statFile} debugfile ${config.services.uucp.debugFile} ${config.services.uucp.extraConfig} ''; }; users.users."uucp" = config.services.uucp.sshUser; system.activationScripts."uucp-sshconfig" = '' mkdir -p ${config.users.users."uucp".home}/.ssh cp ${builtins.toFile "ssh-config" config.services.uucp.sshConfig} ${config.users.users."uucp".home}/.ssh/config ''; }; }