1{
2 lib,
3 config,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.services.esdm;
10in
11{
12 imports = [
13 # removed option 'services.esdm.cuseRandomEnable'
14 (lib.mkRemovedOptionModule [ "services" "esdm" "cuseRandomEnable" ] ''
15 Use services.esdm.enableLinuxCompatServices instead.
16 '')
17 # removed option 'services.esdm.cuseUrandomEnable'
18 (lib.mkRemovedOptionModule [ "services" "esdm" "cuseUrandomEnable" ] ''
19 Use services.esdm.enableLinuxCompatServices instead.
20 '')
21 # removed option 'services.esdm.procEnable'
22 (lib.mkRemovedOptionModule [ "services" "esdm" "procEnable" ] ''
23 Use services.esdm.enableLinuxCompatServices instead.
24 '')
25 # removed option 'services.esdm.verbose'
26 (lib.mkRemovedOptionModule [ "services" "esdm" "verbose" ] ''
27 There is no replacement.
28 '')
29 ];
30
31 options.services.esdm = {
32 enable = lib.mkEnableOption "ESDM service configuration";
33 package = lib.mkPackageOption pkgs "esdm" { };
34 enableLinuxCompatServices = lib.mkOption {
35 type = lib.types.bool;
36 default = true;
37 description = ''
38 Enable /dev/random, /dev/urandom and /proc/sys/kernel/random/* userspace wrapper.
39 '';
40 };
41 };
42
43 config = lib.mkIf cfg.enable (
44 lib.mkMerge [
45 ({
46 systemd.packages = [ cfg.package ];
47 systemd.services."esdm-server".wantedBy = [ "basic.target" ];
48 })
49 # It is necessary to set those options for these services to be started by systemd in NixOS
50 (lib.mkIf cfg.enableLinuxCompatServices {
51 systemd.targets."esdm-linux-compat".wantedBy = [ "basic.target" ];
52 systemd.services."esdm-server-suspend".wantedBy = [
53 "sleep.target"
54 "suspend.target"
55 "hibernate.target"
56 ];
57 systemd.services."esdm-server-resume".wantedBy = [
58 "sleep.target"
59 "suspend.target"
60 "hibernate.target"
61 ];
62 })
63 ]
64 );
65
66 meta.maintainers = with lib.maintainers; [
67 orichter
68 thillux
69 ];
70}