{ pkgs
, lib
, config
, ... }: with lib; let
  cfg = config.global.lowmem;
in {
  options.global.lowmem = {
    enable = mkEnableOption "low memory optimisations";
    swapsize = mkOption {
      type = with types; int;
      default = 8 * 1024;
      description = "automatic swap file size";
    };
  };

  config = mkIf cfg.enable {
    # enables remote nixos-rebuild
    nix.settings.trusted-users = [ "koishi" ];

    swapDevices = [ {
      device = "/nix/persist/secret/swap";
      size = cfg.swapsize;
    } ];
  };
}