Add docker module
This commit is contained in:
parent
7cbf708ecf
commit
a8f637704a
9 changed files with 68 additions and 34 deletions
|
@ -65,7 +65,6 @@
|
||||||
# Raspberry Pi 4B.
|
# Raspberry Pi 4B.
|
||||||
(mkHost "weebill" {
|
(mkHost "weebill" {
|
||||||
suite = "server";
|
suite = "server";
|
||||||
docker = true;
|
|
||||||
platform = "aarch64-linux";
|
platform = "aarch64-linux";
|
||||||
hostModules = [
|
hostModules = [
|
||||||
nixos-hardware.nixosModules.raspberry-pi-4
|
nixos-hardware.nixosModules.raspberry-pi-4
|
||||||
|
@ -75,19 +74,16 @@
|
||||||
# VM running docker containers.
|
# VM running docker containers.
|
||||||
(mkHost "docker" {
|
(mkHost "docker" {
|
||||||
suite = "server/vm";
|
suite = "server/vm";
|
||||||
docker = true;
|
|
||||||
})
|
})
|
||||||
|
|
||||||
# VM running a Minecraft server.
|
# VM running a Minecraft server.
|
||||||
(mkHost "minecraft" {
|
(mkHost "minecraft" {
|
||||||
suite = "server/vm";
|
suite = "server/vm";
|
||||||
docker = true;
|
|
||||||
})
|
})
|
||||||
|
|
||||||
# VM running a Musicbrainz mirror + lidarr metadata server.
|
# VM running a Musicbrainz mirror + lidarr metadata server.
|
||||||
(mkHost "musicbrainz" {
|
(mkHost "musicbrainz" {
|
||||||
suite = "server/vm";
|
suite = "server/vm";
|
||||||
docker = true;
|
|
||||||
})
|
})
|
||||||
|
|
||||||
# VM for managing flock.
|
# VM for managing flock.
|
||||||
|
|
|
@ -10,7 +10,6 @@ with inputs.nixpkgs.lib; {
|
||||||
mkHost = hostname: {
|
mkHost = hostname: {
|
||||||
platform ? "x86_64-linux",
|
platform ? "x86_64-linux",
|
||||||
suite ? "",
|
suite ? "",
|
||||||
docker ? false,
|
|
||||||
hostModules ? [],
|
hostModules ? [],
|
||||||
}: let
|
}: let
|
||||||
# Secrets directory.
|
# Secrets directory.
|
||||||
|
@ -97,7 +96,6 @@ with inputs.nixpkgs.lib; {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
++ hostModules # Host-specific modules.
|
++ hostModules # Host-specific modules.
|
||||||
++ optionals (docker == true) [./suites/server/docker] # Enable docker if required.
|
|
||||||
++ (filesystem.listFilesRecursive ./modules); # Custom modules.
|
++ (filesystem.listFilesRecursive ./modules); # Custom modules.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,4 +34,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.fern.extraGroups = ["media"];
|
users.users.fern.extraGroups = ["media"];
|
||||||
|
|
||||||
|
flock.docker = {
|
||||||
|
enable = true;
|
||||||
|
dockerMount = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
{
|
{
|
||||||
|
flock.docker = {
|
||||||
|
enable = true;
|
||||||
|
dockerMount = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,4 +20,9 @@
|
||||||
User = "fern";
|
User = "fern";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
flock.docker = {
|
||||||
|
enable = true;
|
||||||
|
dockerMount = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,4 +66,8 @@ with lib; {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
flock.docker = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,4 +118,8 @@
|
||||||
allowedUDPPorts = [53 67]; # DHCP server.
|
allowedUDPPorts = [53 67]; # DHCP server.
|
||||||
allowedTCPPorts = [8080 548 80 7125]; # WebOne, Netatalk, nginx, moonraker.
|
allowedTCPPorts = [8080 548 80 7125]; # WebOne, Netatalk, nginx, moonraker.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
flock.docker = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
46
modules/docker/default.nix
Normal file
46
modules/docker/default.nix
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,28 +0,0 @@
|
||||||
{
|
|
||||||
# Docker data directory
|
|
||||||
fileSystems."/home/fern/docker" = {
|
|
||||||
device = "/dev/disk/by-label/docker";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue