diff options
| author | Valentin <valentin@fricklerhandwerk.de> | 2025-12-09 17:48:21 +0100 |
|---|---|---|
| committer | Valentin <valentin@fricklerhandwerk.de> | 2025-12-20 17:44:07 +0100 |
| commit | 1a99a306ae044625e3f89e16d1d6f809ce8c12e0 (patch) | |
| tree | 3a04bfee536d0cfe885e27dc7b916fd353380d5a /www/caddy.nix | |
| parent | 9a5020deaed97df8ab1307068f34a382b2e24b31 (diff) | |
Website-Erzeugung aus Nixpkgs-Modul statt Paket
Die Dateien für die Website mit Nix zu erzeugen ist zur Zeit der kleinste Schritt, um repetitive Muster weg zu abstrahieren.
Alles andere bräuchte mehr Infrastruktur, während Nix bereits da ist und direkt verwendet werden kann.
Es erlaubt jetzt einen nahtlosen Übergang zu einer strukturierteren Darstellung.
Selbst falls das System sehr komplex wird, bevor es auf einen Anwendungsserver mit Datenbank usw. migriert werden kann, können im Prinzip Datentypen für die Sprache der Anwendung und sogar Nutzdaten im Zielformat aus den Modulsystem-Typen generiert werden.
Das würde diese spätere Migration zumindest abmildern.
Wichtig: Dateinamen dürfen keine Leerzeichen mehr enthalten, um genau zu sein siehe [0].
[0]: <https://github.com/NixOS/nix/commit/f1b4663805a9dbcb1ace64ec110092d17c9155e0>
Diffstat (limited to 'www/caddy.nix')
| -rw-r--r-- | www/caddy.nix | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/www/caddy.nix b/www/caddy.nix index 6721316..9a5bd50 100644 --- a/www/caddy.nix +++ b/www/caddy.nix @@ -1,16 +1,11 @@ { self, lib, ... }: -let - html = - with lib.fileset; - toSource { - root = ./html; - fileset = ./html; - }; -in { flake.machines.tharos = { nixos = - { lib, ... }: + { config, lib, ... }: + let + website = self.websites.${config.nixpkgs.hostPlatform.system}.${self.domain}; + in { services.caddy.virtualHosts.${self.domain} = { serverAliases = [ "www.${self.domain}" ]; @@ -18,13 +13,15 @@ in file_server root * /var/www/${self.domain} encode gzip + + ${website.redirects.caddy} ''; }; systemd.tmpfiles.rules = [ # Verzeichnis für Web-Inhalte sofort anlegen, da der Webserver sonst nicht startet, # aber nur wenn es noch nicht existiert. - "C /var/www/${self.domain} - - - - ${html}" + "C /var/www/${self.domain} - - - - ${website.result}" ]; }; vm = @@ -52,10 +49,14 @@ in pkgs, lib, system, + config, self', ... }: { + # Website aus Quellcode generiert + packages.html = self'.websites.${self.domain}.result; + # Website-Inhalte auf den Server hochladen packages.publish = pkgs.writeShellApplication { name = "publish"; @@ -66,9 +67,6 @@ in }; # Lokale Vorschau - packages.html = pkgs.runCommand "source" { } '' - cp -r ${html} $out - ''; packages.preview = pkgs.devmode.override { buildArgs = '' "$(${lib.getExe pkgs.git} rev-parse --show-toplevel)" -A packages.${system}.html -vv |
