Hermes Agent 2363d673c0 chore(hermes): approbations de commandes en mode off (plus de validation humaine)
Politique du 13/10/2026 : le shell n'attend plus de validation avant d'executer. « off » est un bypass teste AVANT les branches cron / single_query / unattended, donc il coupe aussi les refus par defaut en contexte headless. Restent actifs malgre off : la blocklist hardline code-shippee et les regles approvals.deny (vides ici).
2026-10-17 16:56:15 -04:00

nixos

Marc Partensky's NixOS + Home Manager + nix-darwin configuration, one flake for every machine: tower, laptop, deck, the anywhere VPS, the Mac, and the phone (nix-on-droid).

Machines

Flake output Type Description
nixosConfigurations.tower NixOS Main machine (AMD, ZFS). profiles/common + profiles/tower + services/ (all self-hosted services).
nixosConfigurations.laptop NixOS Laptop. profiles/common + profiles/laptop + services/.
nixosConfigurations.deck NixOS Steam Deck (via Jovian-NixOS). profiles/deck only, no services/.
nixosConfigurations.anywhere NixOS VPS (RackNerd): Pangolin, Traefik/Caddy, Stalwart mail, headscale. profiles/anywhere.
nixosConfigurations.laptop-iso / deck-iso NixOS Installer images (disko + hardware-configuration bundled).
nixosConfigurations.dev NixOS (microvm) Disposable dev VM, see vms/. Launched with just vm.
homeConfigurations.marc Home Manager standalone Marc's Linux profile (tower/laptop), not wired into any nixosConfigurations — managed independently.
homeConfigurations."marc@macos" Home Manager HM profile on the Mac (on top of nix-darwin).
homeConfigurations."marc@deck" Home Manager HM profile on the Deck.
darwinConfigurations.macos nix-darwin The Mac's system config.
nixOnDroidConfigurations.default nix-on-droid Android phone.

nixpkgs = nixos-26.05 (+ unstable for packages missing from 26.05, nixpkgs-darwin/nix-darwin-26.05 for the Mac).

Repo layout

flake.nix              every nixosConfigurations / homeConfigurations / darwinConfigurations
Justfile + .env        common commands (default HOST, HM, RUN)
profiles/<host>/       per-machine composition (imports, firewall, hostName, sops file)
  common/               base shared by tower+laptop (users, nixos modules, home-manager.users.root)
hosts/<name>/          disko.nix + hardware-configuration.nix per machine
modules/
  nixos/<name>/         unit NixOS modules (enabled = imported in profiles/common or profiles/<host>)
  home/<name>/           Home Manager modules (Linux), imported by users/marc/home.nix
  home-mac/<name>/       Mac-specific Home Manager modules
users/
  marc/                  home.nix + packages.nix (standalone profile, `just home`)
  root/                  home.nix wired via profiles/common (only HM profile inside nixosConfigurations)
  mac/, deck/            HM profiles for the other machines
services/<name>/       self-hosted services (one folder per service), registry = services/default.nix
  hermes/plugins/        Nix-managed plugins for the Hermes gateway
secrets/*.yml           sops-age encrypted secrets (see below)
vms/                    microvm.nix definitions for dev VMs

services/ is only imported by laptop and tower (see flake.nix): deck and anywhere don't have this registry.

Commands (Justfile)

.env sets the defaults: HOST=tower, HM=marc, RUN=nixos.

Command Effect
just just nixos (via RUN)
just nixos sudo nixos-rebuild switch --impure --flake .#$HOST
just home home-manager switch --flake .#$HM (run as marc, not hermes)
just mac nix-darwin switch --flake .#macos
just droid nix-on-droid switch --flake ~/.config/nixos#default
just vm [name=dev] build + launch a dev microvm (state in ~/.local/state/microvms/<name>/)
just vm-build [name=dev] build only, don't launch
just iso ISO image for $HOST-iso
just install disko + nixos-install (new machine)
just ventoy <disk> [size] Ventoy USB stick + Nix installer

Updating inputs: nix flake update before a rebuild (--upgrade has no effect on a flake, don't use it).

Eval check without building: nix eval .#nixosConfigurations.$HOST.config.system.build.toplevel.drvPath --impure.

Secrets (sops-nix)

  • secrets/*.yml, one file per domain (tower.yml, common.yml, anywhere.yml, zitadel.yml, gitea.yml, ...), encrypted with sops + age keys.
  • 4 keys in .sops.yaml: anywhere, tower, mac, deck. common.yml is decryptable by every machine; each profile sets sops.defaultSopsFile to its dedicated file.
  • Creating a new secret only needs the public keys already in .sops.yaml: nix run nixpkgs#sops -- -e --filename-override secrets/<name>.yml --output secrets/<name>.yml <plaintext>. Editing an existing file in place requires the private key (root only).

Self-hosted services (tower/laptop)

Registry in services/default.nix. Active on tower:

  • Infra / networking: newt (Pangolin tunnel), autossh, eternal-terminal, adguard, tor, wayvnc, cage-firefox.
  • Accounts / auth: zitadel (OIDC), vaultwarden.
  • Cloud / files: nextcloud (+ postgres), gitea.
  • Media: jellyfin, navidrome, audiobookshelf, radarr/sonarr/readarr/prowlarr/flaresolverr, qbittorrent/rqbit, media (shared /srv/media dataset).
  • Matrix bridges: matrix (Synapse), matrix-whatsapp, matrix-signal, matrix-discord, matrix-meta, matrix-linkedin.
  • Hermes agent: hermes (gateway + plugins), hermes-webui, hermes-dashboard, hermes-pocket (mobile app backend), discord-bot.
  • MCP servers (tools for Hermes): nextcloud-mcp, amazon-mcp, firefox-mcp, zitadel-mcp, roku, codeberg-mcp, ibkr-mcp, meetup-mcp, gitea-mcp, arr-mcp, mcp-nixos.
  • Other apps: jupyterhub.
  • Disabled in the registry (commented out, pending a fix or waiting on something): dnscrypt, minio, stalwart-mcp (cargoHash mismatch), gotify, kanidm, syncserver, matrix-telegram (waiting on api_id/api_hash), vaultwarden-mcp (missing input).

Conventions

  • Comments and commit messages in French, conventional commits format (feat(scope): ..., fix(scope): ..., chore(scope): ...), grouped by logical theme (not one commit per touched file).
  • A module is "enabled" by being added to its registry's import list (services/default.nix, profiles/common/default.nix, users/marc/home.nix, ...); commented out = disabled but kept as reference.
  • home-manager.users.marc must never be wired into any nixosConfigurations: Marc's profile stays standalone Home Manager (just home), only root goes through the NixOS module (profiles/common).
  • The repo is edited concurrently (multiple sessions/agents): check git status and that no nixos-rebuild is already running before triggering a switch.
S
Description
No description provided
Readme
1.8 MiB
Languages
Nix 90%
Python 5.4%
Shell 4%
CSS 0.2%
Lua 0.2%
Other 0.1%