From a7e095d9fd601f62f3dd802ac27f6ee54af5d392 Mon Sep 17 00:00:00 2001 From: Nick Cao Date: Sun, 13 Aug 2023 15:36:23 +0800 Subject: nixos/zram-generator: init --- nixos/modules/module-list.nix | 1 + nixos/modules/services/system/zram-generator.nix | 42 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 nixos/modules/services/system/zram-generator.nix (limited to 'nixos') diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 5852843b8021d..2c9e42f8e1741 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1169,6 +1169,7 @@ ./services/system/self-deploy.nix ./services/system/systembus-notify.nix ./services/system/uptimed.nix + ./services/system/zram-generator.nix ./services/torrent/deluge.nix ./services/torrent/flexget.nix ./services/torrent/magnetico.nix diff --git a/nixos/modules/services/system/zram-generator.nix b/nixos/modules/services/system/zram-generator.nix new file mode 100644 index 0000000000000..3595ba917553a --- /dev/null +++ b/nixos/modules/services/system/zram-generator.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.services.zram-generator; + settingsFormat = pkgs.formats.ini { }; +in +{ + meta = { + maintainers = with lib.maintainers; [ nickcao ]; + }; + + options.services.zram-generator = { + enable = lib.mkEnableOption (lib.mdDoc "Systemd unit generator for zram devices"); + + package = lib.mkPackageOptionMD pkgs "zram-generator" { }; + + settings = lib.mkOption { + type = lib.types.submodule { + freeformType = settingsFormat.type; + }; + default = { }; + description = lib.mdDoc '' + Configuration for zram-generator, + see https://github.com/systemd/zram-generator for documentation. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + system.requiredKernelConfig = with config.lib.kernelConfig; [ + (isModule "ZRAM") + ]; + + # Disabling this for the moment, as it would create and mkswap devices twice, + # once in stage 2 boot, and again when the zram-reloader service starts. + # boot.kernelModules = [ "zram" ]; + + systemd.packages = [ cfg.package ]; + systemd.services."systemd-zram-setup@".path = [ pkgs.util-linux ]; # for mkswap + + environment.etc."systemd/zram-generator.conf".source = settingsFormat.generate "zram-generator.conf" cfg.settings; + }; +} -- cgit 1.4.1 From 0814089e0591faeb74ef09f3c12e9daacbe396d3 Mon Sep 17 00:00:00 2001 From: Nick Cao Date: Sun, 13 Aug 2023 15:38:40 +0800 Subject: nixos/zram: use nixos/zram-generator as backing implementation --- nixos/modules/config/zram.nix | 49 +++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 30 deletions(-) (limited to 'nixos') diff --git a/nixos/modules/config/zram.nix b/nixos/modules/config/zram.nix index 991387ea9b2bd..ec8b4ed6e9315 100644 --- a/nixos/modules/config/zram.nix +++ b/nixos/modules/config/zram.nix @@ -105,36 +105,25 @@ in } ]; - - system.requiredKernelConfig = with config.lib.kernelConfig; [ - (isModule "ZRAM") - ]; - - # Disabling this for the moment, as it would create and mkswap devices twice, - # once in stage 2 boot, and again when the zram-reloader service starts. - # boot.kernelModules = [ "zram" ]; - - systemd.packages = [ pkgs.zram-generator ]; - systemd.services."systemd-zram-setup@".path = [ pkgs.util-linux ]; # for mkswap - - environment.etc."systemd/zram-generator.conf".source = - (pkgs.formats.ini { }).generate "zram-generator.conf" (lib.listToAttrs - (builtins.map - (dev: { - name = dev; - value = - let - size = "${toString cfg.memoryPercent} / 100 * ram"; - in - { - zram-size = if cfg.memoryMax != null then "min(${size}, ${toString cfg.memoryMax} / 1024 / 1024)" else size; - compression-algorithm = cfg.algorithm; - swap-priority = cfg.priority; - } // lib.optionalAttrs (cfg.writebackDevice != null) { - writeback-device = cfg.writebackDevice; - }; - }) - devices)); + services.zram-generator.enable = true; + + services.zram-generator.settings = lib.listToAttrs + (builtins.map + (dev: { + name = dev; + value = + let + size = "${toString cfg.memoryPercent} / 100 * ram"; + in + { + zram-size = if cfg.memoryMax != null then "min(${size}, ${toString cfg.memoryMax} / 1024 / 1024)" else size; + compression-algorithm = cfg.algorithm; + swap-priority = cfg.priority; + } // lib.optionalAttrs (cfg.writebackDevice != null) { + writeback-device = cfg.writebackDevice; + }; + }) + devices); }; -- cgit 1.4.1 From e2689c1c98c1d09faf1a2d2af4284d8409e462fc Mon Sep 17 00:00:00 2001 From: Nick Cao Date: Thu, 24 Aug 2023 08:47:19 +0800 Subject: nixos/zram-generator: drop outdated comments --- nixos/modules/services/system/zram-generator.nix | 4 ---- 1 file changed, 4 deletions(-) (limited to 'nixos') diff --git a/nixos/modules/services/system/zram-generator.nix b/nixos/modules/services/system/zram-generator.nix index 3595ba917553a..5902eda556967 100644 --- a/nixos/modules/services/system/zram-generator.nix +++ b/nixos/modules/services/system/zram-generator.nix @@ -30,10 +30,6 @@ in (isModule "ZRAM") ]; - # Disabling this for the moment, as it would create and mkswap devices twice, - # once in stage 2 boot, and again when the zram-reloader service starts. - # boot.kernelModules = [ "zram" ]; - systemd.packages = [ cfg.package ]; systemd.services."systemd-zram-setup@".path = [ pkgs.util-linux ]; # for mkswap -- cgit 1.4.1