treefmt / nix fmt (pull_request) Successful in 4s
pytest / pytest (pull_request) Successful in 1m30s
test ebook search / test-ebook-search (pull_request) Successful in 1m28s
build_systems / build-portal-1 (pull_request) Successful in 2m51s
build_systems / build-bob (pull_request) Successful in 3m43s
build_systems / build-jeeves (pull_request) Successful in 3m43s
build_systems / build-brain (pull_request) Successful in 3m29s
build_systems / build-rhapsody-in-green (pull_request) Successful in 3m54s
treefmt / nix fmt (push) Successful in 4s
build_systems / build-portal-1 (push) Successful in 24s
pytest / pytest (push) Successful in 33s
build_systems / build-brain (push) Successful in 41s
test ebook search / test-ebook-search (push) Successful in 38s
build_systems / build-bob (push) Successful in 46s
build_systems / build-jeeves (push) Successful in 1m2s
build_systems / build-rhapsody-in-green (push) Successful in 1m5s
- add a performance-tuned media/containers dataset - store Docker and NixOS container state on the dataset - prepare storage directories after ZFS mounts - bind NixOS container state to its required path - configure snapshot retention for container storage
72 lines
1.8 KiB
Nix
72 lines
1.8 KiB
Nix
{ pkgs, ... }:
|
|
let
|
|
vars = import ./vars.nix;
|
|
in
|
|
{
|
|
virtualisation.docker.daemon.settings."data-root" = "${vars.containers}/docker";
|
|
|
|
# nixos-container hardcodes its state directory to /var/lib/nixos-containers,
|
|
# so route it to the shared container dataset with a bind mount.
|
|
fileSystems."/var/lib/nixos-containers" = {
|
|
device = "${vars.containers}/nixos-containers";
|
|
fsType = "none";
|
|
options = [ "bind" ];
|
|
};
|
|
|
|
systemd.services = {
|
|
prepare-docker-storage = {
|
|
description = "Create Docker storage directory";
|
|
requiredBy = [ "docker.service" ];
|
|
before = [ "docker.service" ];
|
|
requires = [ "zfs-mount.service" ];
|
|
after = [ "zfs-mount.service" ];
|
|
path = [
|
|
pkgs.coreutils
|
|
pkgs.util-linux
|
|
];
|
|
|
|
unitConfig = {
|
|
DefaultDependencies = false;
|
|
RequiresMountsFor = [ "/nix" ];
|
|
};
|
|
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
};
|
|
|
|
script = ''
|
|
mountpoint -q ${vars.containers}
|
|
install -d -m 0710 ${vars.containers}/docker
|
|
'';
|
|
};
|
|
|
|
prepare-nixos-container-storage = {
|
|
description = "Create NixOS container storage directory";
|
|
requiredBy = [ "var-lib-nixos\\x2dcontainers.mount" ];
|
|
before = [ "var-lib-nixos\\x2dcontainers.mount" ];
|
|
requires = [ "zfs-mount.service" ];
|
|
after = [ "zfs-mount.service" ];
|
|
path = [
|
|
pkgs.coreutils
|
|
pkgs.util-linux
|
|
];
|
|
|
|
unitConfig = {
|
|
DefaultDependencies = false;
|
|
RequiresMountsFor = [ "/nix" ];
|
|
};
|
|
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
};
|
|
|
|
script = ''
|
|
mountpoint -q ${vars.containers}
|
|
install -d -m 0755 ${vars.containers}/nixos-containers
|
|
'';
|
|
};
|
|
};
|
|
}
|