feat(sterni/ingeborg): enable btrfs auto scrub

While we are at it, rename disk-checkup.nix to btrfs-auto-scrub.nix and
move it into //ops/modules. I originally wanted to have additionally
disk health related services in that module, but the btrfs scrub
functionality is nicely self-contained and reusable, so I think it makes
sense to have this in a more central location.

Change-Id: Iabdd62838eef009540ca71abafd921afda2a9b47
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10128
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
This commit is contained in:
sterni 2023-11-26 12:54:19 +01:00 committed by clbot
parent 825b6ac65f
commit 03d5ffd2de
4 changed files with 28 additions and 26 deletions

View file

@ -0,0 +1,25 @@
# Automatically performs a scrub on all btrfs filesystems configured in
# `config.fileSystems` on a daily schedule (by default). Activated by importing.
{ config, lib, ... }:
{
config = {
services = {
btrfs.autoScrub = {
enable = true;
interval = lib.mkDefault "daily";
# gather all btrfs fileSystems, extra ones can be added via the NixOS
# module merging mechanism, of course.
fileSystems = lib.concatLists (
lib.mapAttrsToList
(
_:
{ fsType, mountPoint, ... }:
if fsType == "btrfs" then [ mountPoint ] else [ ]
)
config.fileSystems
);
};
};
};
}

View file

@ -10,7 +10,7 @@
./hardware.nix
./network.nix
# These modules configure services, websites etc.
../../modules/disk-checkup.nix
(depot.path.origSrc + "/ops/modules/btrfs-auto-scrub.nix")
./minecraft.nix
./gopher.nix
./http/sterni.lv.nix

View file

@ -7,6 +7,8 @@
# These modules touch things related to booting (filesystems, initrd network…)
./hardware.nix
./network.nix
# (More or less) pluggable service configuration
(depot.path.origSrc + "/ops/modules/btrfs-auto-scrub.nix")
];
config = {

View file

@ -1,25 +0,0 @@
# TODO(sterni): configure smartd and alerts
{ config, lib, ... }:
{
config = {
services = {
btrfs.autoScrub = {
enable = true;
interval = "daily";
# gather all btrfs fileSystems and overwrite default
fileSystems = lib.mkForce (
lib.concatLists (
lib.mapAttrsToList
(
_:
{ fsType, mountPoint, ... }:
if fsType == "btrfs" then [ mountPoint ] else [ ]
)
config.fileSystems
)
);
};
};
};
}