diff --git a/nixosConfigurations/hyperforge/default.nix b/nixosConfigurations/hyperforge/default.nix index 2c64351..693a7a8 100644 --- a/nixosConfigurations/hyperforge/default.nix +++ b/nixosConfigurations/hyperforge/default.nix @@ -1,6 +1,8 @@ { imports = [ ./hardware.nix + ./forgejo.nix + ./nginx.nix ]; config = { diff --git a/nixosConfigurations/hyperforge/forgejo.nix b/nixosConfigurations/hyperforge/forgejo.nix new file mode 100644 index 0000000..51b86b3 --- /dev/null +++ b/nixosConfigurations/hyperforge/forgejo.nix @@ -0,0 +1,24 @@ +{ config, lib, ... }: +let + srv = config.services.forgejo.settings.server; +in +{ + services.forgejo = { + enable = true; + database.type = "sqlite3"; + lfs.enable = true; + + settings = { + server = { + DOMAIN = "forge.darkest.space"; + ROOT_URL = "https://${srv.DOMAIN}/"; + HTTP_PORT = 3000; + SSH_PORT = lib.head config.services.openssh.ports; + }; + service.DISABLE_REGISTRATION = true; + session.COOKIE_SECURE = true; + }; + }; + + services.openssh.enable = true; +} diff --git a/nixosConfigurations/hyperforge/nginx.nix b/nixosConfigurations/hyperforge/nginx.nix new file mode 100644 index 0000000..2faf8d9 --- /dev/null +++ b/nixosConfigurations/hyperforge/nginx.nix @@ -0,0 +1,32 @@ +{ config, ... }: +let + srv = config.services.forgejo.settings.server; +in +{ + security.acme = { + acceptTerms = true; + defaults.email = "acme@darkest.space"; + }; + + services.nginx = { + enable = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + + virtualHosts.${srv.DOMAIN} = { + enableACME = true; + forceSSL = true; + extraConfig = '' + client_max_body_size 512M; + ''; + locations."/".proxyPass = "http://127.0.0.1:${toString srv.HTTP_PORT}"; + }; + }; + + networking.firewall.allowedTCPPorts = [ + 80 + 443 + ]; +}