From 3bba3d3e233332836865d632572441b011275c54 Mon Sep 17 00:00:00 2001 From: nyanloutre Date: Sun, 16 Sep 2018 16:29:26 +0200 Subject: [PATCH] =?UTF-8?q?Automatisation=20mise=20=C3=A0=20jour=20site=20?= =?UTF-8?q?Max?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/site-max.nix | 47 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/services/site-max.nix b/services/site-max.nix index 8983501..2952f2f 100644 --- a/services/site-max.nix +++ b/services/site-max.nix @@ -28,14 +28,51 @@ in ${cfg.domaine} = { ip = "127.0.0.1"; port = cfg.port; auth = false; }; }; - services.nginx.virtualHosts = { - "max" = { - listen = [ { addr = "127.0.0.1"; port = cfg.port; } ]; - locations."/" = { - root = pkgs.site-max; + services.nginx = { + virtualHosts = { + "max" = { + listen = [ { addr = "127.0.0.1"; port = cfg.port; } ]; + locations."/" = { + root = "/run/site-max/result"; + }; }; }; }; + systemd.services.build-site-max = { + description = "Compilation du site de Max Spiegel"; + requires = ["network-online.target"]; + path = with pkgs;[ git nix ]; + environment = { HOME = "/var/lib/site-max"; NIX_PATH = "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs"; }; + + serviceConfig = { + DynamicUser = true; + RuntimeDirectory = "site-max"; + RuntimeDirectoryPreserve = "yes"; + CacheDirectory = "site-max"; + Type = "oneshot"; + ExecStart = "${pkgs.writeShellScriptBin "build.sh" '' + set -x + set -e + GIT_CLONE_DIR=/var/cache/site-max + + if [ ! -d $GIT_CLONE_DIR/.git ]; then + git clone --depth 1 https://github.com/nyanloutre/site-max.git $GIT_CLONE_DIR + else + git -C $GIT_CLONE_DIR pull + fi + + nix-build -o /run/site-max/result $GIT_CLONE_DIR + ''}/bin/build.sh"; + }; + }; + + systemd.timers.build-site-max = { + description = "Timer de compilation du site de Max"; + requires = ["network-online.target"]; + wantedBy = ["multi-user.target"]; + timerConfig = { OnCalendar = "*:0/5"; Unit = "build-site-max.service"; }; + }; + }; }