{ config, lib, ... }: with lib; let cfg = config.flock.docker; in { options = { flock.docker = { enable = mkEnableOption "Enable Docker"; dockerMount = mkEnableOption "Mount disk as Docker directory"; }; }; config = mkIf cfg.enable { # Add user to docker group. users.users.fern = { extraGroups = ["docker"]; }; # Enable docker. virtualisation.docker = { enable = true; autoPrune.enable = true; liveRestore = true; daemon.settings = { data-root = "/home/fern/docker/daemon"; default-address-pools = [ { base = "172.20.0.0/12"; size = 24; } ]; }; }; # Docker data directory fileSystems."/home/fern/docker" = mkIf (cfg.dockerMount) { device = "/dev/disk/by-label/docker"; fsType = "ext4"; }; }; }