From 5658505b8631d28a09fc1f75481397c192e6f0eb Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 16 Jul 2018 02:22:21 +0200 Subject: Add module for zswap Even though these options are rather opinionated rather than generally useful, it makes sense to have an option for that because I'm going to use it for my managed machines as well. Signed-off-by: aszlig --- modules/system/kernel/zswap.nix | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 modules/system/kernel/zswap.nix (limited to 'modules/system') diff --git a/modules/system/kernel/zswap.nix b/modules/system/kernel/zswap.nix new file mode 100644 index 00000000..43b89ca6 --- /dev/null +++ b/modules/system/kernel/zswap.nix @@ -0,0 +1,38 @@ +{ config, lib, ... }: + +let + kernelVersion = config.boot.kernelPackages.kernel.version; + hasZstd = lib.versionAtLeast kernelVersion "4.18"; +in { + options.vuizvui.system.kernel.zswap.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to enable support for zswap with the use of the + z3fold for pooling and zstd for + compression, if available (otherwise it falls back to + lzo). + + Zswap is a compressed cache for swap pages, which is especially useful + for machines with limited RAM. + ''; + }; + + config = lib.mkIf config.vuizvui.system.kernel.zswap.enable { + boot.kernelPatches = lib.singleton { + name = "zswap-config"; + patch = null; + extraConfig = '' + CRYPTO_${if hasZstd then "ZSTD" else "LZO"} y + ZSWAP y + Z3FOLD y + ''; + }; + + boot.kernelParams = [ + "zswap.enabled=1" + "zswap.zpool=z3fold" + "zswap.compressor=${if hasZstd then "zstd" else "lzo"}" + ]; + }; +} -- cgit 1.4.1