À propos du projet

Graft est un projet early-alpha permettant de déclarer de petites charges de travail conteneurisées en TOML typé et d'en réaliser l'exécution via Nix, Podman Quadlet et systemd. Le flux documenté est le suivant : intention TOML -> JSON résolu et validé -> rootfs construit par Nix -> fichier .container Quadlet -> service systemd -> conteneur Podman. L'objectif est d'éviter les Dockerfile, l'installation de packages au runtime et les fichiers Quadlet écrits à la main, en validant les concepts pris en charge plutôt qu'en acceptant des fragments arbitraires de Podman, Quadlet, systemd ou Nix. Le dépôt décrit un backend de stockage de rootfs pour deux portées : les conteneurs système/entiers NixOS et les conteneurs user-manager Home Manager. Les fonctionnalités signalées comme prises en charge incluent les packages, les commandes argv, l'identité, le répertoire de travail, l'environnement, les services longue durée, les tâches finies, les tâches de setup, le démarrage explicite, les dépendances typées entre charges de travail, la sélection du réseau des conteneurs, les mounts en lecture seule par défaut, les volumes gérés, les montages tmpfs bornés, les références qualifiées de ressources CDI, les contrôles de durcissement typés, la validation générée par schéma et le rejet fail-closed des champs réservés. La documentation sépare le TOML accepté dans une référence de configuration d'un état autoritatif des capacités couvrant les comportements actuels, planifiés, différés et interdits. Les sécurités par défaut incluent un rootfs en lecture seule, des capacités runtime supprimées et no-new-privileges, avec des assouplissements maintenus explicites. Graft n'ajoute ni politique de démarrage automatique ni de redémarrage, et ne configure pas silencieusement Podman, le support overlay rootless, le linger utilisateur systemd, les comptes, les règles firewall ou la politique DNS. Les conteneurs partagent le noyau de l'hôte et ne sont pas présentés comme une frontière de sécurité équivalente à celle d'une machine virtuelle. Le backend actuel expose uniquement la closure runtime Nix réalisée de chaque charge de travail via des mounts obligatoires en lecture seule sur le store, sans fallback vers un complete-store. Le README positionne Graft pour les petits services natifs Nix et les charges de travail de développement bénéficiant d'un TOML révisable et de la propriété systemd. Il liste des alternatives selon les besoins : Quadlet direct pour une couverture complète des options upstream, les outils Compose pour les workflows OCI/Compose, ou une frontière VM lorsque les charges de travail ne doivent pas partager le noyau hôte. Des quickstarts, une feuille de route, une vision, une politique de sécurité, un guide de contribution et des checks de développement sont liés, et le projet est sous licence Apache-2.0.