nix-config/hosts/heather/docker.nix
mikl 220d1f651c heather: replace k3s with docker+arion+caddy+syncthing
- remove k3s.nix (1.3GB overhead unjustified for single-node)
- add docker.nix (docker + arion CLI, mikl in docker group)
- add caddy.nix (edge proxy, TLS via ACME staging, host-based routing)
- add syncthing.nix (sync daemon + strelaysrv via systemd, /srv/syncthing)
- add arion-compose.nix (forgejo first, others stubbed as TODO)
- add arion flake input + nixos module
- default.nix: wire up arion project as systemd service (serviceName=heather)

Architecture: Caddy (host) terminates TLS, routes to host services (syncthing)
and docker containers (arion, 127.0.0.1:PORT). Named volumes everywhere except
silverbullet (bind /srv/syncthing/herbarium).
2026-07-12 12:23:05 +03:00

29 lines
1.2 KiB
Nix

# heather — docker + arion (nix-native docker-compose)
#
# Заменило k3s (2026-07-12): k3s сжирал 1.3 GB (16% от 8 GB) на single-node
# без реальной выгоды. docker+arion даёт ~100 MB overhead и знакомую модель.
# Caddy на хосте терминирует TLS (см. ./caddy.nix), Traefik/ServiceLB не нужны.
#
# Arion: читает arion-compose.nix (nix-выражение), генерирует docker-compose,
# запускает как systemd-сервис через virtualisation.arion.projects.
# Контейнеры описаны в ./arion-compose.nix.
{ pkgs, ... }:
{
virtualisation.docker = {
enable = true;
# Хост-docker (не rootless): mikl в группе docker для `docker` CLI без sudo.
# arion-проект запускается от root через systemd (см. ниже).
};
# Arion: nix-native docker-compose. backend задаётся в default.nix
# (virtualisation.arion.backend = "docker"), проект — там же.
# mikl может управлять docker без sudo (docker group).
users.users.mikl.extraGroups = [ "docker" ];
environment.systemPackages = with pkgs; [
docker-compose
arion
];
}