2023-12-10 06:03:49 +01:00
|
|
|
{ config, pkgs, lib, ... }:
|
|
|
|
{
|
|
|
|
# https://openzfs.github.io/openzfs-docs/Getting%20Started/NixOS/index.html
|
|
|
|
# https://nixos.org/manual/nixos/stable/#sec-linux-zfs
|
|
|
|
# https://nixos.wiki/wiki/ZFS
|
|
|
|
# https://search.nixos.org/options?query=services.zfs
|
|
|
|
|
|
|
|
boot.kernelPackages = lib.mkForce pkgs.zfs.latestCompatibleLinuxPackages;
|
|
|
|
boot.supportedFilesystems = [ "zfs" ];
|
|
|
|
boot.zfs.forceImportRoot = false;
|
|
|
|
|
|
|
|
# must be set per host
|
|
|
|
# head -c4 /dev/urandom | od -A none -t x4
|
|
|
|
# consider the one automatically generated by systemd:
|
|
|
|
# head -c 8 /etc/machine-id
|
|
|
|
#networking.hostId = "12345678";
|
|
|
|
|
|
|
|
services.zfs.autoSnapshot.enable = true; # simply runs zfstools
|
|
|
|
# default args, can be overriden per-dataset
|
|
|
|
services.zfs.autoSnapshot.frequent = 2; # 15 min
|
|
|
|
services.zfs.autoSnapshot.hourly = 3;
|
|
|
|
services.zfs.autoSnapshot.daily = 4;
|
|
|
|
services.zfs.autoSnapshot.weekly = 3;
|
|
|
|
services.zfs.autoSnapshot.monthly = 5;
|
|
|
|
|
|
|
|
#services.zfs.autoReplication.enable
|
|
|
|
#services.zfs.autoScrub.enable = true;
|
|
|
|
#services.zfs.trim.enable = true;
|
|
|
|
|
2024-02-01 02:09:03 +01:00
|
|
|
# the `sharenfs` property generates /etc/exports.d/zfs.exports file, automatically processed by NFS
|
2024-09-29 17:31:39 +02:00
|
|
|
# https://man.archlinux.org/man/core/nfs-utils/exports.5.en
|
2024-02-25 15:43:54 +01:00
|
|
|
# # zfs set sharenfs="-maproot=0:0 -network=192.168.1.0/24" Reidun
|
2024-02-01 02:09:03 +01:00
|
|
|
# # zfs set sharenfs="ro=192.168.1.0/24,all_squash,anonuid=70,anongid=70" Meconium
|
2024-09-29 17:31:39 +02:00
|
|
|
# # zfs set sharenfs="rw=@192.168.1.0/24" Meconium
|
2024-02-01 02:09:03 +01:00
|
|
|
services.nfs.server.enable = lib.mkDefault true;
|
2024-04-03 16:07:08 +02:00
|
|
|
|
2024-09-29 17:31:39 +02:00
|
|
|
# https://wiki.nixos.org/wiki/NFS
|
2024-04-03 16:07:08 +02:00
|
|
|
# TODO: move to common-nfs-server.nix
|
|
|
|
services.nfs.server = {
|
|
|
|
# fixed rpc.statd port; for firewall
|
|
|
|
lockdPort = 4001;
|
|
|
|
mountdPort = 4002;
|
|
|
|
statdPort = 4000;
|
|
|
|
extraNfsdConfig = '''';
|
|
|
|
};
|
2024-08-13 16:26:58 +02:00
|
|
|
networking.firewall = lib.mkIf config.services.nfs.server.enable {
|
2024-04-03 16:07:08 +02:00
|
|
|
# for NFSv3; view with `rpcinfo -p`
|
|
|
|
allowedTCPPorts = [ 111 2049 4000 4001 4002 ]; # 20048
|
|
|
|
allowedUDPPorts = [ 111 2049 4000 4001 4002 ]; # 20048
|
|
|
|
};
|
|
|
|
|
2023-12-10 06:03:49 +01:00
|
|
|
}
|