From 3dc4d23ab478dcedb44021ecf5c8d4e5b1c32def Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 27 Apr 2016 11:39:56 +0200 Subject: first shot at uucp --- custom/uucp.nix | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 custom/uucp.nix (limited to 'custom/uucp.nix') diff --git a/custom/uucp.nix b/custom/uucp.nix new file mode 100644 index 00000000..0b199776 --- /dev/null +++ b/custom/uucp.nix @@ -0,0 +1,104 @@ +{ config, lib, pkgs, ... }: + +rec { + 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 { + types = types.listOf types.str; + default = []; + description = "List of ports to set up. You will probably need to configure these in sshConfig"; + }; + + spoolDir = mkOption { + types = types.path; + default = "/var/spool/uucp"; + description = "Spool directory"; + }; + + lockDir = mkOption { + types = types.path; + default = "/var/spool/uucp"; + description = "Lock directory"; + }; + + pubDir = mkOption { + types = types.path; + default = "/var/spool/uucppublic"; + description = "Public directory"; + }; + + logFile = mkOption { + types = types.path; + default = "/var/log/uucp"; + description = "Log file"; + }; + + statFile = mkOption { + types = types.path; + default = "/var/log/uucp.stat"; + description = "Statistics file"; + }; + + debugFile = mkOption { + types = 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 = { + environment.etc."uucp/config" = { + enable = config.services.uucp.enable; + 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" = optional config.services.uucp.enable config.services.uucp.sshUser; + + system.activationScripts."uucp-sshconfig" = optional config.services.uucp.enable '' + mkdir -p ${users.users."uucp".home}/.ssh + cp ${builtins.toFile "ssh-config" config.services.uucp.sshConfig} ${users.users."uucp".home}/.ssh/config + ''; + }; +} -- cgit v1.2.3