char/topaz-flake
git clone https://git.t4t.associates/char/topaz-flake
9eccc17
main
1{ pkgs , unstable-pkgs , ...} : 2let 3serve-esm = pkgs . fetchFromGitHub { 4owner = "char" ; 5repo = "serve-esm" ; 6rev = "bcfd5aa20c4aa4619eaca06f8c917b21c204e129" ; 7hash = "sha256-ZnVpgszRMg/v9ZtK+IyKyRMcG5C+rXRnp5BeA6hF9eg=" ; 8}; 9in 10{ 11users . users . serve-esm = { 12isSystemUser = true ; 13group = "serve-esm" ; 14home = "/var/lib/serve-esm" ; 15}; 16users . groups . serve-esm = { }; 17 18systemd . services . serve-esm = { 19description = "serve-esm" ; 20after = [ "network.target" ]; 21wantedBy = [ "multi-user.target" ]; 22path = [ pkgs . git ]; 23unitConfig . ConditionPathIsDirectory = "/srv/apps/serve-esm/repositories/citrus/.git" ; 24 25environment = { 26HOME = "/var/lib/serve-esm" ; 27TARGET_DIR = "/srv/apps/serve-esm/repositories" ; 28}; 29 30serviceConfig = { 31Type = "simple" ; 32User = "serve-esm" ; 33Group = "serve-esm" ; 34StateDirectory = "serve-esm" ; 35WorkingDirectory = " ${ serve-esm } " ; 36ExecStart = " ${ unstable-pkgs . deno } /bin/deno serve --host 127.0.0.1 --port 8525 --allow-env=TARGET_DIR --allow-read --allow-run=git ${ serve-esm } /src/main.ts" ; 37Restart = "on-failure" ; 38RestartSec = "5s" ; 39 40NoNewPrivileges = true ; 41PrivateTmp = true ; 42ProtectSystem = "strict" ; 43ProtectHome = true ; 44}; 45}; 46 47systemd . tmpfiles . rules = [ 48"d /srv/apps/serve-esm 0755 serve-esm serve-esm - -" 49"d /srv/apps/serve-esm/repositories 0755 serve-esm serve-esm - -" 50"d /var/cache/nginx/serve-esm 0750 nginx nginx - -" 51]; 52 53services . nginx = { 54proxyCachePath . serve-esm = { 55enable = true ; 56keysZoneName = "serve_esm" ; 57keysZoneSize = "32m" ; 58maxSize = "4g" ; 59inactive = "30d" ; 60}; 61 62virtualHosts . "esm.char.lt" = { 63forceSSL = true ; 64enableACME = true ; 65 66locations . "/" = { 67proxyPass = "http://127.0.0.1:8525" ; 68extraConfig = '' 69proxy_set_header Host $host; 70proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 71proxy_set_header X-Forwarded-Proto $scheme; 72 73proxy_cache serve_esm; 74proxy_cache_key $request_uri; 75proxy_cache_valid 200 301 302 30d; 76proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; 77proxy_cache_background_update on; 78proxy_cache_lock on; 79proxy_cache_revalidate on; 80add_header X-Cache-Status $upstream_cache_status; 81'' ; 82}; 83}; 84}; 85}