aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorSilas Schöffel <sils@sils.li>2024-10-29 22:02:29 +0100
committerSilas Schöffel <sils@sils.li>2024-10-29 22:03:50 +0100
commit126153306d623c8bcb78bd2a8a1fe0094402694d (patch)
treef384b3403794f327fce35f31889d404d0558c3e4 /modules
parentuse local theme file (diff)
downloadnix-config-126153306d623c8bcb78bd2a8a1fe0094402694d.zip
add disko
Diffstat (limited to 'modules')
-rw-r--r--modules/nixos/sils/default.nix1
-rw-r--r--modules/nixos/sils/disks.nix132
2 files changed, 133 insertions, 0 deletions
diff --git a/modules/nixos/sils/default.nix b/modules/nixos/sils/default.nix
index 65d2a19..7655e29 100644
--- a/modules/nixos/sils/default.nix
+++ b/modules/nixos/sils/default.nix
@@ -3,6 +3,7 @@
./apparmor.nix
./basesystem.nix
./bluetooth.nix
+ ./disks.nix
./environment.nix
./firejail.nix
./font.nix
diff --git a/modules/nixos/sils/disks.nix b/modules/nixos/sils/disks.nix
new file mode 100644
index 0000000..bf0e2b0
--- /dev/null
+++ b/modules/nixos/sils/disks.nix
@@ -0,0 +1,132 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.sils.disks;
+ defaultMountOptions = [
+ "noatime" # should have some performance upsides, and I don't use it anyways
+ "lazytime" # make time changes in memory
+ ];
+in {
+ options.sils.disks = {
+ enable = lib.mkEnableOption "disk setup with disko";
+
+ disk = lib.mkOption {
+ type = lib.types.path;
+ example = lib.literalExpression "/dev/disk/by-uuid/0442cb6d-f13a-4635-b487-fa76189774c5";
+ description = "The disk used for installing the OS.";
+ };
+
+ #swap = {
+ # uuid = lib.mkOption {
+ # type = lib.types.str;
+ # example = lib.literalExpression "d1d20ae7-3d8a-44da-86da-677dbbb10c89";
+ # description = "The uuid of the swapfile";
+ # };
+ # resumeOffset = lib.mkOption {
+ # type = lib.types.str;
+ # example = lib.literalExpression "134324224";
+ # description = "The resume offset of the swapfile";
+ # };
+ #};
+ };
+
+ config = lib.mkIf cfg.enable {
+ disko.devices = {
+ disk = {
+ main = {
+ device = cfg.disk;
+ content = {
+ type = "gpt";
+ partitions = {
+ root = {
+ size = "100%";
+ name = "root";
+ content = {
+ type = "luks";
+ name = "cryptroot";
+ extraOpenArgs = ["--allow-discards"];
+ content = {
+ type = "btrfs";
+ extraArgs = ["-f" "--label nixos"]; # Override existing partitions
+ subvolumes = {
+ "root" = {
+ mountpoint = "/";
+ mountOptions = defaultMountOptions;
+ };
+ "nix" = {
+ mountpoint = "/nix";
+ mountOptions = defaultMountOptions;
+ };
+ "persistent-storage" = {
+ mountpoint = "/srv";
+ mountOptions = defaultMountOptions;
+ };
+ "persistent-storage@snapshots" = {
+ mountpoint = "/srv/snapshots";
+ mountOptions = defaultMountOptions;
+ };
+ "swap" = {
+ mountpoint = "/swap";
+ mountOptions = defaultMountOptions;
+ };
+ "home" = {
+ mountpoint = "/home";
+ mountOptions = defaultMountOptions;
+ };
+ };
+ };
+ };
+ };
+ MBR = {
+ type = "EF02";
+ size = "1M";
+ priority = 1;
+ };
+ boot = {
+ type = "EF00";
+ size = "4096M";
+ name = "boot";
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ mountOptions = ["umask=0077"];
+ };
+ };
+ };
+ };
+ };
+ };
+ nodev = {
+ "/tmp" = {
+ fsType = "tmpfs";
+ mountOptions = ["defaults" "size=30G" "mode=755"];
+ };
+ };
+ };
+ fileSystems = {
+ "/srv" = {
+ neededForBoot = true;
+ };
+ "/swap" = {
+ neededForBoot = true;
+ };
+ };
+ swapDevices = [
+ #{
+ # device = "/swap/swapfile";
+ # priority = 1; # lower than zramSwap, just in case
+ # # size = 2048; # TODO: can nixos create a btrfs swapfile correctly?
+ #}
+ ];
+ boot = {
+ kernelParams = [
+ #"resume_offset=${cfg.swap.resumeOffset}"
+ ];
+ #resumeDevice = "/dev/disk/by-uuid/${cfg.swap.uuid}";
+ };
+ };
+}