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