From 69d170c9653edefd2d729444120d786e39e98fe0 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Sat, 8 Feb 2025 11:42:45 +0100 Subject: [PATCH] feat: adds forgejo service --- modules/services/forgejo.nix | 55 ++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 modules/services/forgejo.nix diff --git a/modules/services/forgejo.nix b/modules/services/forgejo.nix new file mode 100644 index 0000000..ef9fde9 --- /dev/null +++ b/modules/services/forgejo.nix @@ -0,0 +1,55 @@ +{ lib, pkgs, config, ... }: +let + cfg = config.services.forgejo; + srv = cfg.settings.server; +in +{ + services.forgejo = { + enable = true; + # database.type = "postgres"; + # Enable support for Git Large File Storage + lfs.enable = true; + settings = { + server = { + DOMAIN = "code.liv.town"; + # You need to specify this to remove the port from URLs in the web UI. + ROOT_URL = "https://${srv.DOMAIN}/"; + HTTP_PORT = 3050; + }; + # You can temporarily allow registration to create an admin user. + service.DISABLE_REGISTRATION = true; + # Add support for actions, based on act: https://github.com/nektos/act + actions = { + ENABLED = true; + DEFAULT_ACTIONS_URL = "github"; + }; + # Sending emails is completely optional + # You can send a test email from the web UI at: + # Profile Picture > Site Administration > Configuration > Mailer Configuration + # mailer = { + # ENABLED = true; + # SMTP_ADDR = "mail.example.com"; + # FROM = "noreply@${srv.DOMAIN}"; + # USER = "noreply@${srv.DOMAIN}"; + # }; + }; + # mailerPasswordFile = config.age.secrets.forgejo-mailer-password.path; + }; + services = { + nginx.virtualHosts."code.liv.town" = { + forceSSL = true; + sslCertificate = "/var/lib/acme/liv.town/cert.pem"; + sslCertificateKey = "/var/lib/acme/liv.town/key.pem"; + locations."/" = { + proxyPass = "http://localhost:3050"; + proxyWebsockets = true; + }; + }; + }; + # systemd.services.forgejo.preStart = let + # adminCmd = "${lib.getExe cfg.package} admin user"; + # user = "liv"; + # in '' + # ${adminCmd} create --admin --email "liv@liv.town" --username ${user} --password "boopbeepboop123123123" || true + # ''; +}