blob: 3fa6835096fd62ea6d8500679ca290ced808aa40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
{ config, lib, pkgs, ... }:
with lib;
let
upstreamServices = [
"aggety"
"binfmt"
"bootmisc"
"cgroups"
"consolefont"
"devfs"
"dmesg"
"fsck"
"hostname"
"hwclock"
"keymaps"
"killprocs"
"local"
"localmount"
"loopback"
"modules"
"mount-ro"
"mtab"
"netmount"
"net-online"
"network"
"numlock"
"osclock"
"procfs"
"root"
"runsvdir"
"s6-svscan"
"savecache"
"save-keymaps"
"save-termencoding"
"staticroute"
"swap"
"swclock"
"sysctl"
"sysfs"
"termencoding"
"urandom"
];
in {
options = {
rc = {
services = mkOption {
default = {};
type = types.attrsOf (types.submodule {
enable = {
type = types.bool;
default = false;
description = "Enable service spawning.";
};
runlevel = {
type = types.enum [ "boot" "default" "nonetwork" "shutdown" "sysinit" ];
default = "default";
description = "Select runlevel the services should be activated in.";
};
description = {
type = types.str;
description = "Service description.";
};
command = {
type = types.package;
description = "Command to be started.";
};
});
description = "Definition of system service.";
};
};
};
config = let
rc_bool = enabled: if enabled then "YES" else "NO";
in {
environment.etc."init.d".source = pkgs.runCommand "rc-init.d" {
} ''
mkdir -p "$out"
'';
};
}
|