2024-07-26 23:07:07 +00:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}: let
|
2024-04-15 19:20:19 +00:00
|
|
|
inherit (lib.modules) mkIf;
|
|
|
|
in {
|
|
|
|
# if lvm is enabled, then tell it to issue discards
|
|
|
|
# (this is good for SSDs and has almost no downsides on HDDs, so
|
|
|
|
# it's a good idea to enable it unconditionally)
|
|
|
|
environment.etc."lvm/lvm.conf".text = mkIf config.services.lvm.enable ''
|
|
|
|
devices {
|
|
|
|
issue_discards = 1
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
|
|
|
# discard blocks that are not in use by the filesystem, good for SSDs
|
|
|
|
services.fstrim = {
|
|
|
|
# we may enable this unconditionally across all systems becuase it's performance
|
|
|
|
# impact is negligible on systems without a SSD - which means it's a no-op with
|
|
|
|
# almost no downsides aside from the service firing once per week
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
# the default value, good enough for average-load systems
|
|
|
|
interval = "weekly";
|
|
|
|
};
|
|
|
|
|
|
|
|
# tweak fstim service to run only when on AC power
|
|
|
|
# and to be nice to other processes
|
|
|
|
# (this is a good idea for any service that runs periodically)
|
|
|
|
systemd.services.fstrim = {
|
|
|
|
unitConfig.ConditionACPower = true;
|
|
|
|
|
|
|
|
serviceConfig = {
|
|
|
|
Nice = 19;
|
|
|
|
IOSchedulingClass = "idle";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|