docker.nix
1 # Docker daemon configuration 2 # ADR-001: NixOS host + Docker services hybrid architecture 3 4 { config, pkgs, lib, ... }: 5 6 { 7 virtualisation.docker = { 8 enable = true; 9 autoPrune = { 10 enable = true; 11 dates = "weekly"; 12 flags = [ "--all" "--volumes" ]; 13 }; 14 daemon.settings = { 15 # Use systemd cgroup driver for better resource management 16 "exec-opts" = [ "native.cgroupdriver=systemd" ]; 17 # Log limits to prevent runaway disk usage 18 "log-driver" = "json-file"; 19 "log-opts" = { 20 "max-size" = "50m"; 21 "max-file" = "3"; 22 }; 23 # Storage driver (default overlay2, explicit for clarity) 24 "storage-driver" = "overlay2"; 25 }; 26 }; 27 28 # ── Persistent data directories ───────────────────────────────────── 29 # Pre-create volume mount points with correct ownership 30 systemd.tmpfiles.rules = [ 31 "d /srv/bob 0755 root root -" 32 "d /srv/bob/vllm 0755 root root -" # model cache 33 "d /srv/bob/nats 0755 root root -" # JetStream data 34 "d /srv/bob/hass 0755 root root -" # HomeAssistant config 35 "d /srv/bob/oxigraph 0755 root root -" # RDF triplestore 36 "d /srv/bob/grafana 0755 root root -" # dashboard data 37 "d /srv/bob/prometheus 0755 root root -" # metrics 38 ]; 39 }