os/modules/core/hibernation.nix

37 lines
992 B
Nix
Raw Normal View History

2022-08-14 18:09:38 +00:00
{
2023-01-28 20:49:10 +00:00
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.pub-solar.core.hibernation;
in {
2022-08-14 18:09:38 +00:00
options.pub-solar.core.hibernation = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether the device can hibernate. This creates a swapfile at /swapfile.";
};
resumeDevice = mkOption {
type = types.str;
default = "/dev/sda1";
2022-08-14 18:09:38 +00:00
description = "The location of the hibernation resume swap file.";
};
resumeOffset = mkOption {
type = types.nullOr types.int;
default = null;
description = "The swap file offset. Can be found by running `filefrag -v $swap_file_location`. See https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file";
};
};
config = {
boot = mkIf cfg.enable {
resumeDevice = cfg.resumeDevice;
2023-01-28 20:49:10 +00:00
kernelParams = mkIf (cfg.resumeOffset != null) ["resume_offset=${builtins.toString cfg.resumeOffset}"];
2022-08-14 18:09:38 +00:00
};
};
}