summaryrefslogtreecommitdiff
path: root/custom/uucp-mediaserver.nix
diff options
context:
space:
mode:
Diffstat (limited to 'custom/uucp-mediaserver.nix')
-rw-r--r--custom/uucp-mediaserver.nix59
1 files changed, 59 insertions, 0 deletions
diff --git a/custom/uucp-mediaserver.nix b/custom/uucp-mediaserver.nix
new file mode 100644
index 00000000..a8af8bc6
--- /dev/null
+++ b/custom/uucp-mediaserver.nix
@@ -0,0 +1,59 @@
1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6 cfg = config.uucp.media-server;
7
8 touchStateFiles = name: ''
9 touch ${cfg.queueDir}/${name}.queue
10 touch ${cfg.queueDir}/${name}.space
11 touch ${cfg.queueDir}/${name}.queuesize
12
13 chown ${cfg.owner}:${cfg.group} ${cfg.queueDir}/${name}.queue ${cfg.queueDir}/${name}.space ${cfg.queueDir}/${name}.queuesize
14 '';
15in {
16 options = {
17 services.uucp.media-server = {
18 enable = mkEnableOption "UUCP media server";
19
20 remoteNodes = mkOption {
21 type = types.listOf types.str;
22 default = [];
23 description = ''
24 Clients to track
25 '';
26 };
27
28 queueDir = mkOption {
29 type = types.path;
30 default = "/var/spool/media";
31 description = "Queue directory";
32 };
33
34 owner = mkOption {
35 type = types.str;
36 default = "root";
37 description = "Owner of the various queue files";
38 };
39
40 group = mkOption {
41 type = types.str;
42 default = "media";
43 description = "Group of the various queue files";
44 };
45 };
46 };
47
48 config = mkIf cfg.enable {
49 system.activationScripts."uucp-media-server" = ''
50 mkdir -p ${cfg.queueDir}
51 chmod 750 ${cfg.queueDir}
52 chown ${cfg.owner}:${cfg.group} ${cfg.queueDir}
53
54 ${concatStringsSep "\n" (map touchStateFiles cfg.remoteNodes)}
55 '';
56
57 environment.systemPackages = [ (pkgs.callPackage ./uucp-mediaserver/scripts.nix { config = cfg; }) ];
58 };
59}