diff --git a/flake/nixos.nix b/flake/nixos.nix index f528fb6..52ea532 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -18,6 +18,7 @@ let programs.tools.common security.polkit security.sudo + services.btrfs-auto-scrub services.dbus services.journald services.openssh diff --git a/nixos/hosts/flandre-m5p/disko-fs.nix b/nixos/hosts/flandre-m5p/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/flandre-m5p/disko-fs.nix +++ b/nixos/hosts/flandre-m5p/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/kanako-hkg0/disko-fs.nix b/nixos/hosts/kanako-hkg0/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/kanako-hkg0/disko-fs.nix +++ b/nixos/hosts/kanako-hkg0/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/marisa-7d76/disko-fs.nix b/nixos/hosts/marisa-7d76/disko-fs.nix index 3c1c84d..58bc124 100644 --- a/nixos/hosts/marisa-7d76/disko-fs.nix +++ b/nixos/hosts/marisa-7d76/disko-fs.nix @@ -1,12 +1,7 @@ +{ ... }: { environment.globalPersistence = { enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/marisa-a7s/disko-fs.nix b/nixos/hosts/marisa-a7s/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/marisa-a7s/disko-fs.nix +++ b/nixos/hosts/marisa-a7s/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/reisen-fra0/disko-fs.nix b/nixos/hosts/reisen-fra0/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/reisen-fra0/disko-fs.nix +++ b/nixos/hosts/reisen-fra0/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/reisen-nrt0/disko-fs.nix b/nixos/hosts/reisen-nrt0/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/reisen-nrt0/disko-fs.nix +++ b/nixos/hosts/reisen-nrt0/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/reisen-sea0/disko-fs.nix b/nixos/hosts/reisen-sea0/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/reisen-sea0/disko-fs.nix +++ b/nixos/hosts/reisen-sea0/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/reisen-sin0/disko-fs.nix b/nixos/hosts/reisen-sin0/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/reisen-sin0/disko-fs.nix +++ b/nixos/hosts/reisen-sin0/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/hosts/suwako-vie0/disko-fs.nix b/nixos/hosts/suwako-vie0/disko-fs.nix index 3c1c84d..3804dc2 100644 --- a/nixos/hosts/suwako-vie0/disko-fs.nix +++ b/nixos/hosts/suwako-vie0/disko-fs.nix @@ -3,10 +3,4 @@ enable = true; root = "/persist"; }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - fileSystems = [ "/persist" ]; - }; } diff --git a/nixos/profiles/services/btrfs-auto-scrub/default.nix b/nixos/profiles/services/btrfs-auto-scrub/default.nix new file mode 100644 index 0000000..e759d39 --- /dev/null +++ b/nixos/profiles/services/btrfs-auto-scrub/default.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: +let + btrfsDevices = lib.unique ( + lib.mapAttrsToList (_name: value: value.device) ( + lib.filterAttrs (_name: value: value.fsType == "btrfs") config.fileSystems + ) + ); +in +{ + services.btrfs.autoScrub = { + enable = btrfsDevices != [ ]; + fileSystems = btrfsDevices; + }; +}