1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.services.preload;
9in
10{
11 meta = {
12 maintainers = pkgs.preload.meta.maintainers;
13 };
14
15 options.services.preload = {
16 enable = lib.mkEnableOption "preload";
17 package = lib.mkPackageOption pkgs "preload" { };
18 };
19
20 config = lib.mkIf cfg.enable {
21 systemd.services.preload = {
22 description = "Loads data into ram during idle time of CPU.";
23 wantedBy = [ "multi-user.target" ];
24
25 serviceConfig = {
26 EnvironmentFile = "${cfg.package}/etc/conf.d/preload";
27 ExecStart = "${lib.getExe cfg.package} -l '' --foreground $PRELOAD_OPTS";
28 Type = "simple";
29 # Only preload data during CPU idle time
30 IOSchedulingClass = 3;
31 DynamicUser = true;
32 StateDirectory = "preload";
33 };
34 };
35 };
36}