/ nix / modules / docker.nix
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  }