From 036c94a2b10674b29fc49e1c20b6c1274d8bb302 Mon Sep 17 00:00:00 2001 From: Infinidoge Date: Mon, 15 Jul 2024 00:38:34 -0400 Subject: [PATCH] lib: add filesystems --- lib/default.nix | 1 + lib/filesystems.nix | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 lib/filesystems.nix diff --git a/lib/default.nix b/lib/default.nix index 9b4175f..42a97bc 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -64,6 +64,7 @@ rec { }; disko = import ./disko.nix { inherit lib; }; + filesystems = import ./filesystems.nix { inherit lib self; }; } // ( import ./digga.nix { inherit lib; } ) // ( diff --git a/lib/filesystems.nix b/lib/filesystems.nix new file mode 100644 index 0000000..63f4228 --- /dev/null +++ b/lib/filesystems.nix @@ -0,0 +1,45 @@ +{ lib, self }: + +rec { + diskByUuid = uuid: "/dev/disk/by-uuid/${uuid}"; + + mkFilesystemDev = fsType: device: common: options: { + inherit device fsType; + options = common ++ options; + }; + + neededForBoot = self.lazy (fs: fs // { neededForBoot = true; }); + + mkFilesystemDev' = f: d: c: o: + neededForBoot (mkFilesystemDev f d c o); + + mkFilesystem = fsType: uuid: + mkFilesystemDev fsType (diskByUuid uuid); + + mkFilesystem' = f: d: c: o: + neededForBoot (mkFilesystemDev f d c o); + + + mkEFI = uuid: neededForBoot { + device = diskByUuid uuid; + fsType = "vfat"; + }; + mkTmpfs = name: size: neededForBoot { + device = name; + fsType = "tmpfs"; + options = [ "defaults" "size=${size}" "mode=755" ]; + }; + mkBtrfs' = options: uuid: extraOptions: { + device = diskByUuid uuid; + fsType = "btrfs"; + options = options ++ extraOptions; + }; + mkBtrfs = mkBtrfs' [ + "autodefrag" + "noatime" + "ssd" + "compress=zstd:1" + ]; + + mkSwap = uuid: { device = diskByUuid uuid; }; +}