diff --git a/configs/workhorse/gogs.nix b/configs/workhorse/gogs.nix index 96fab5f..e4a6e07 100644 --- a/configs/workhorse/gogs.nix +++ b/configs/workhorse/gogs.nix @@ -1,10 +1,42 @@ -{ config, lib, ... }: { +{ config, lib, pkgs, ... }: +let + + errorPages = pkgs.fetchgit { + url = "https://git.ingolf-wagner.de/palo/http-errors.git"; + rev = "74b8e4c1d9bbba3db6ad858b888e1867318af1f0"; + sha256 = "0czdzafx4k76q773lyf3vsjm74g1995iz542dhw15kpy5xbivsrg"; + }; + + error = { + extraConfig = '' + error_page 400 /errors/400.html; + error_page 401 /errors/401.html; + error_page 402 /errors/402.html; + error_page 403 /errors/403.html; + error_page 404 /errors/404.html; + error_page 405 /errors/405.html; + error_page 406 /errors/406.html; + error_page 500 /errors/500.html; + error_page 501 /errors/501.html; + error_page 502 /errors/502.html; + error_page 503 /errors/503.html; + error_page 504 /errors/504.html; + ''; + locations."^~ /errors/" = { + extraConfig = "internal;"; + root = "${errorPages}/"; + }; + }; + +in +{ services.nginx = { enable = true; statusPage = true; virtualHosts = { "git.${config.networking.hostName}.private" = { + extraConfig = error.extraConfig; locations."/" = { proxyPass = "http://${config.networking.hostName}.private:${ toString config.services.gogs.httpPort @@ -44,7 +76,6 @@ }; backup.all.restic.dirs = [ config.services.gogs.repositoryRoot ]; - #services.gitea = { # enable = true; # appName = "Git";