summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--custom/tinc/def.nix145
1 files changed, 72 insertions, 73 deletions
diff --git a/custom/tinc/def.nix b/custom/tinc/def.nix
index a3bb00a0..98174eb6 100644
--- a/custom/tinc/def.nix
+++ b/custom/tinc/def.nix
@@ -6,6 +6,77 @@ let
6 6
7 cfg = config.services.customTinc; 7 cfg = config.services.customTinc;
8 8
9 networkModule = {
10 extraConfig = mkOption {
11 default = ''
12 PingTimeout = 10
13 '';
14 type = types.lines;
15 description = ''
16 Extra lines to add to the tinc service configuration file.
17 '';
18 };
19
20 name = mkOption {
21 default = null;
22 type = types.nullOr types.str;
23 description = ''
24 The name of the node which is used as an identifier when communicating
25 with the remote nodes in the mesh. If null then the hostname of the system
26 is used.
27 '';
28 };
29
30 debugLevel = mkOption {
31 default = 0;
32 type = types.addCheck types.int (l: l >= 0 && l <= 5);
33 description = ''
34 The amount of debugging information to add to the log. 0 means little
35 logging while 5 is the most logging. <command>man tincd</command> for
36 more details.
37 '';
38 };
39
40 hosts = mkOption {
41 default = { };
42 type = types.loaOf types.lines;
43 description = ''
44 The name of the host in the network as well as the configuration for that host.
45 This name should only contain alphanumerics and underscores.
46 '';
47 };
48
49 interfaceType = mkOption {
50 default = "tun";
51 type = types.addCheck types.str (n: n == "tun" || n == "tap");
52 description = ''
53 The type of virtual interface used for the network connection
54 '';
55 };
56
57 interfaceConfig = mkOption {
58 default = { };
59 description = ''
60 Additional configuration for the generated network interface
61 '';
62 };
63
64 package = mkOption {
65 default = pkgs.tinc_pre;
66 description = ''
67 The package to use for the tinc daemon's binary.
68 '';
69 };
70
71 scripts = mkOption {
72 default = { };
73 type = types.loaOf (types.nullOr types.str);
74 description = ''
75 Hook scripts
76 '';
77 };
78
79 };
9in 80in
10 81
11{ 82{
@@ -18,83 +89,11 @@ in
18 89
19 networks = mkOption { 90 networks = mkOption {
20 default = { }; 91 default = { };
21 type = types.loaOf types.submodule; 92 type = types.loaOf (types.submodule networkModule);
22 description = '' 93 description = ''
23 Defines the tinc networks which will be started. 94 Defines the tinc networks which will be started.
24 Each network invokes a different daemon. 95 Each network invokes a different daemon.
25 ''; 96 '';
26 options = {
27
28 extraConfig = mkOption {
29 default = ''
30 PingTimeout = 10
31 '';
32 type = types.lines;
33 description = ''
34 Extra lines to add to the tinc service configuration file.
35 '';
36 };
37
38 name = mkOption {
39 default = null;
40 type = types.nullOr types.str;
41 description = ''
42 The name of the node which is used as an identifier when communicating
43 with the remote nodes in the mesh. If null then the hostname of the system
44 is used.
45 '';
46 };
47
48 debugLevel = mkOption {
49 default = 0;
50 type = types.addCheck types.int (l: l >= 0 && l <= 5);
51 description = ''
52 The amount of debugging information to add to the log. 0 means little
53 logging while 5 is the most logging. <command>man tincd</command> for
54 more details.
55 '';
56 };
57
58 hosts = mkOption {
59 default = { };
60 type = types.loaOf types.lines;
61 description = ''
62 The name of the host in the network as well as the configuration for that host.
63 This name should only contain alphanumerics and underscores.
64 '';
65 };
66
67 interfaceType = mkOption {
68 default = "tun";
69 type = types.addCheck types.str (n: n == "tun" || n == "tap");
70 description = ''
71 The type of virtual interface used for the network connection
72 '';
73 };
74
75 interfaceConfig = mkOption {
76 default = { };
77 description = ''
78 Additional configuration for the generated network interface
79 '';
80 };
81
82 package = mkOption {
83 default = pkgs.tinc_pre;
84 description = ''
85 The package to use for the tinc daemon's binary.
86 '';
87 };
88
89 scripts = mkOption {
90 default = { };
91 type = types.loaOf (types.nullOr types.str);
92 description = ''
93 Hook scripts
94 '';
95 };
96
97 };
98 }; 97 };
99 }; 98 };
100 99