ops/nixos: globally enable zramSwap

This commit is contained in:
Luke Granger-Brown 2020-11-05 02:03:20 +00:00
parent 57d4f7f05e
commit b58f13a145
2 changed files with 20 additions and 1 deletions

View file

@ -45,6 +45,11 @@ in
time.timeZone = mkDefault "Etc/UTC";
zramSwap = {
enable = true;
memoryMax = 4 * 1024 * 1024 * 1024;
};
environment.systemPackages = with pkgs; [
vim rxvt_unicode.terminfo tmux rebuilder tailscale rsync
(mercurial.overridePythonAttrs (origAttrs: {

View file

@ -80,6 +80,15 @@ in
'';
};
memoryMax = mkOption {
default = null;
type = with types; nullOr int;
description = ''
Maximum total amount of memory (in bytes) that can be used by the zram
swap devices.
'';
};
priority = mkOption {
default = 5;
type = types.int;
@ -146,7 +155,12 @@ in
# Calculate memory to use for zram
mem=$(${pkgs.gawk}/bin/awk '/MemTotal: / {
print int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024)
value=int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024);
${if cfg.memoryMax != null then ''
memory_max=int(${toString cfg.memoryMax}/${toString devicesCount});
if (value > memory_max) { value = memory_max }
'' else ""}
print value
}' /proc/meminfo)
${pkgs.utillinux}/sbin/zramctl --size $mem --algorithm ${cfg.algorithm} /dev/${dev}