diff --git a/machines/kcnhub/servers.nix b/machines/kcnhub/servers.nix index f9f382d..29e3668 100644 --- a/machines/kcnhub/servers.nix +++ b/machines/kcnhub/servers.nix @@ -4,6 +4,7 @@ ./servers/caddy.nix # Git Instances for WS-KCNHUB Projects ./servers/gitea.nix + ./servers/forgejo.nix # Online Remote Connectivity ./servers/guac.nix # Overleaf (Collaborative LaTeX) diff --git a/machines/kcnhub/servers/forgejo.nix b/machines/kcnhub/servers/forgejo.nix new file mode 100644 index 0000000..39fec16 --- /dev/null +++ b/machines/kcnhub/servers/forgejo.nix @@ -0,0 +1,68 @@ +{ pkgs, config, ...}: let + # Domain TBD + domain = "git2.ws.kcnhub.com"; +in { + services.forgejo = { + enable = true; + database = { + type = "postgres"; + socket = "/run/postgresql"; + }; + settings = { + server = { + HTTP_PORT = 5001; + ROOT_URL = "https://${domain}"; + }; + actions = { + ENABLED = true; + }; + service.DISABLE_REGISTRATION = true; + }; + }; + + # To allow forgejo to access /etc/shadow for PAM authentication + users.users.forgejo.extraGroups = [ "shadow" ]; + + # Services Runner running in nixos-container w/ host label + # This allows sharing of nix-store for caching actions builds + # ... Maybe I'll actually set this up. Some concern for clearing its + # cache and it overpopulating. Idk. We'll see. + # services.gitea-actions-runner.instances."nix-runner" = { + # enable = true; + # name = "nix-runner"; + # url = "http://localhost:${config.services.gitea.settings.server.HTTP_PORT}"; + # labels = [ + # # don't require docker/podman + # "native:host" + # ]; + # tokenFile = "/var/lib/gitea/runner_token"; + # }; + + services.postgresql = { + enable = true; + port = 5432; + # Ensures forejo user owns a db called forgejo + ensureDatabases = [ + "forgejo" + ]; + ensureUsers = [{ + name = "forgejo"; + ensureDBOwnership = true; + ensureClauses = { + createdb = true; + }; + }]; + }; + services.caddy.virtualHosts = { +# "ws.kcnhub.com" = { +# extraConfig = '' +# redir "https://git.ws.kcnhub.com/DavidC/WS-KCNHUB/wiki" +# ''; +# }; + "${domain}" = { + extraConfig = '' + reverse_proxy 127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT} + ''; + }; + }; +}