aboutsummaryrefslogtreecommitdiff
path: root/modules/zfs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2023-08-11 16:51:35 +0200
committerMax Audron <audron@cocaine.farm>2023-08-11 16:51:35 +0200
commit5828af9fc19e18dc85e49fcc1a251a7eb25d909c (patch)
treec70c3e52237c08d3fdcb2f1269c524c25e3feeb8 /modules/zfs
init
Diffstat (limited to 'modules/zfs')
-rw-r--r--modules/zfs/default.nix111
1 files changed, 111 insertions, 0 deletions
diff --git a/modules/zfs/default.nix b/modules/zfs/default.nix
new file mode 100644
index 0000000..4e863fc
--- /dev/null
+++ b/modules/zfs/default.nix
@@ -0,0 +1,111 @@
+{ config, lib, pkgs, ... }:
+
+{
+ boot = {
+ initrd.kernelModules = [ "zfs" ];
+ kernelModules = [ "zfs" ];
+ supportedFilesystems = [ "zfs" ];
+ zfs.devNodes = "/dev/";
+ loader.grub.zfsSupport = true;
+ };
+
+
+ services.zfs = {
+ trim.enable = true;
+ autoScrub.enable = true;
+ autoScrub.pools = [ "rpool" ];
+ };
+
+ virtualisation.containers.storage.settings.storage = {
+ driver = "zfs";
+ graphroot = "/var/lib/containers/storage";
+ runroot = "/run/containers/storage";
+ options.zfs.fsname = "rpool/data/containers";
+ options.zfs.mountopt = "nodev";
+ };
+
+ virtualisation.cri-o = {
+ storageDriver = "zfs";
+ extraPackages = [ pkgs.zfs ];
+ };
+
+ fileSystems = {
+ "/" = {
+ device = "rpool/root";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/nix" = {
+ device = "rpool/root/nix";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/etc" = {
+ device = "rpool/root/etc";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/home" = {
+ device = "rpool/root/home";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/srv" = {
+ device = "rpool/root/srv";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var" = {
+ device = "rpool/root/var";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/lib" = {
+ device = "rpool/root/var/lib";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/lib/rancher" = {
+ device = "rpool/root/var/lib/rancher";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/lib/docker" = {
+ device = "rpool/root/var/lib/docker";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/lib/containers" = {
+ device = "rpool/root/var/lib/containers";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/lib/etcd" = {
+ device = "rpool/root/var/lib/etcd";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/log" = {
+ device = "rpool/root/var/log";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+
+ "/var/spool" = {
+ device = "rpool/root/var/spool";
+ fsType = "zfs";
+ options = [ "zfsutil" ];
+ };
+ };
+}