From 72c60bd5e0150621ebadecb11e59bbdbd01bb8de Mon Sep 17 00:00:00 2001 From: DuN0z Date: Wed, 8 Oct 2025 11:03:57 +0200 Subject: [PATCH] ADD: autobuild hugo blog --- modules/sites/levr.porzh.me.nix | 49 +++++++++++++++------------------ 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/modules/sites/levr.porzh.me.nix b/modules/sites/levr.porzh.me.nix index cc1d9ed..787fbe6 100644 --- a/modules/sites/levr.porzh.me.nix +++ b/modules/sites/levr.porzh.me.nix @@ -1,27 +1,30 @@ _: { - # ----------------------------------------------------------------- - # 1️⃣ Caddy (reverse‑proxy / serveur web statique) - # ----------------------------------------------------------------- + environment.systemPackages = with pkgs; [ + hugo + ]; + systemd.services.hugo-build = { + description = "Auto build du blog hugo"; + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; + serviceConfig = { + Type = "oneshot"; + WorkingDirectory = "/srv/blog" ; + ExecStart = '' + ${pkgs.git}/bin/git pull origin master + ${pkgs.hugo}/bin/hugo --minify build -d /srv/blog/public + ''; + User = "lomig"; + }; + }; + systemd.timers.hugo-build = { + description = "Timer pour rebuild du blog"; + wantedBy = [ "timers.target" ]; + timerConfig.OnCalendar = "daily" ; + }; services.caddy = { enable = true; - - # Caddy démarre en tant qu’utilisateur « caddy ». - # On lui donne accès au répertoire du blog via les ACL créées plus haut. - # (Pas besoin de config supplémentaire côté OS.) - - # ----------------------------------------------------------------- - # 2️⃣ Sites gérés par Caddy (Caddyfile intégré) - # ----------------------------------------------------------------- virtualHosts = { "levr.porzh.me" = { - # Le domaine sera automatiquement provisionné avec TLS via ACME - # (Let's Encrypt) grâce à l’option `autoHTTPS = true` (défaut). - # Aucun certificat manuel n’est requis. - - # Le répertoire contenant les fichiers générés par Hugo - - # (Optionnel) Rediriger HTTP → HTTPS – Caddy le fait déjà, - # mais on le rend explicite pour la clarté. extraConfig = '' @http { protocol http @@ -37,12 +40,4 @@ _: { }; }; }; - - # ----------------------------------------------------------------- - # 3️⃣ Ouverture du firewall (ports 80 et 443) - # ----------------------------------------------------------------- - # networking.firewall.allowedTCPPorts = [ - # 80 # HTTP (pour la redirection ACME) - # 443 # HTTPS (site final) - # ]; }