45 lines
916 B
Nix
45 lines
916 B
Nix
{
|
|
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;
|
|
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";
|
|
};
|
|
};
|
|
}
|