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