vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / hardware / ksm.nix
blob41d61e04697cb7e7d7402713225d6480c710b053
1 { config, lib, ... }:
2 let
3   cfg = config.hardware.ksm;
5 in {
6   imports = [
7     (lib.mkRenamedOptionModule [ "hardware" "enableKSM" ] [ "hardware" "ksm" "enable" ])
8   ];
10   options.hardware.ksm = {
11     enable = lib.mkEnableOption "Linux kernel Same-Page Merging";
12     sleep = lib.mkOption {
13       type = lib.types.nullOr lib.types.int;
14       default = null;
15       description = ''
16         How many milliseconds ksmd should sleep between scans.
17         Setting it to `null` uses the kernel's default time.
18       '';
19     };
20   };
22   config = lib.mkIf cfg.enable {
23     systemd.services.enable-ksm = {
24       description = "Enable Kernel Same-Page Merging";
25       wantedBy = [ "multi-user.target" ];
26       script =
27         ''
28           echo 1 > /sys/kernel/mm/ksm/run
29         '' + lib.optionalString (cfg.sleep != null)
30         ''
31           echo ${toString cfg.sleep} > /sys/kernel/mm/ksm/sleep_millisecs
32         '';
33     };
34   };