···1415 enable = lib.mkEnableOption "RAS logging daemon";
160017 record = lib.mkOption {
18 type = lib.types.bool;
19 default = true;
···99 };
100 };
101 environment.systemPackages =
102- [ pkgs.rasdaemon ]
103 ++ lib.optionals (cfg.testing) (
104 with pkgs.error-inject;
105 [
···151 StateDirectory = lib.optionalString (cfg.record) "rasdaemon";
152153 ExecStart =
154- "${pkgs.rasdaemon}/bin/rasdaemon --foreground" + lib.optionalString (cfg.record) " --record";
155- ExecStop = "${pkgs.rasdaemon}/bin/rasdaemon --disable";
156 Restart = "on-abort";
157158 # src/misc/rasdaemon.service.in shows this:
159- # ExecStartPost = ${pkgs.rasdaemon}/bin/rasdaemon --enable
160 # but that results in unpredictable existence of the database
161 # and everything seems to be enabled without this...
162 };
···167 wantedBy = [ "multi-user.target" ];
168 serviceConfig = {
169 Type = "oneshot";
170- ExecStart = "${pkgs.rasdaemon}/bin/ras-mc-ctl --register-labels";
171 RemainAfterExit = true;
172 };
173 };
···1415 enable = lib.mkEnableOption "RAS logging daemon";
1617+ package = lib.mkPackageOption pkgs "rasdaemon" { };
18+19 record = lib.mkOption {
20 type = lib.types.bool;
21 default = true;
···101 };
102 };
103 environment.systemPackages =
104+ [ cfg.package ]
105 ++ lib.optionals (cfg.testing) (
106 with pkgs.error-inject;
107 [
···153 StateDirectory = lib.optionalString (cfg.record) "rasdaemon";
154155 ExecStart =
156+ "${cfg.package}/bin/rasdaemon --foreground" + lib.optionalString (cfg.record) " --record";
157+ ExecStop = "${cfg.package}/bin/rasdaemon --disable";
158 Restart = "on-abort";
159160 # src/misc/rasdaemon.service.in shows this:
161+ # ExecStartPost = ${cfg.package}/bin/rasdaemon --enable
162 # but that results in unpredictable existence of the database
163 # and everything seems to be enabled without this...
164 };
···169 wantedBy = [ "multi-user.target" ];
170 serviceConfig = {
171 Type = "oneshot";
172+ ExecStart = "${cfg.package}/bin/ras-mc-ctl --register-labels";
173 RemainAfterExit = true;
174 };
175 };
+1-1
nixos/tests/rasdaemon.nix
···29 machine.wait_for_unit("multi-user.target")
30 # confirm rasdaemon is running and has a valid database
31 # some disk errors detected in qemu for some reason ¯\_(ツ)_/¯
32- machine.succeed("ras-mc-ctl --errors | tee /dev/stderr | grep -q 'No .* errors.'")
33 # confirm the supplied labels text made it into the system
34 machine.succeed("grep -q 'vendor: none' /etc/ras/dimm_labels.d/labels >&2")
35 machine.shutdown()
···29 machine.wait_for_unit("multi-user.target")
30 # confirm rasdaemon is running and has a valid database
31 # some disk errors detected in qemu for some reason ¯\_(ツ)_/¯
32+ machine.wait_until_succeeds("ras-mc-ctl --errors | tee /dev/stderr | grep -q 'No .* errors.'")
33 # confirm the supplied labels text made it into the system
34 machine.succeed("grep -q 'vendor: none' /etc/ras/dimm_labels.d/labels >&2")
35 machine.shutdown()