forgejo.nix 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. { config, lib, ... }:
  2. with lib;
  3. let
  4. cfg = config.roles.server.forgejo;
  5. in {
  6. options.roles.server.forgejo = {
  7. enable = mkOption {
  8. default = false;
  9. type = types.bool;
  10. };
  11. domain = mkOption {
  12. default = config.roles.server.domain;
  13. type = types.str;
  14. };
  15. };
  16. config = mkIf cfg.enable {
  17. services = {
  18. forgejo = {
  19. enable = true;
  20. database.type = "postgres";
  21. settings = {
  22. mailer.ENABLED = false;
  23. repository.DEFAULT_BRANCH = "master";
  24. server = rec {
  25. DOMAIN = "git." + cfg.domain;
  26. LANDING_PAGE = "login";
  27. PROTOCOL = "http+unix";
  28. ROOT_URL = "https://${DOMAIN}/";
  29. };
  30. service.DISABLE_REGISTRATION = true;
  31. session.COOKIE_SECURE = true;
  32. };
  33. };
  34. nginx = {
  35. upstreams.forgejo.servers = { "unix:${config.services.forgejo.settings.server.HTTP_ADDR}" = {}; };
  36. virtualHosts.${config.services.forgejo.settings.server.DOMAIN} = {
  37. forceSSL = true;
  38. useACMEHost = cfg.domain;
  39. locations."/".proxyPass = "http://forgejo";
  40. };
  41. };
  42. };
  43. };
  44. }