{ config, pkgs, lib, mkDomain, ... }: { # Gitea # Git with a cup of tea services.gitea = rec { enable = true; settings.service.DISABLE_REGISTRATION = true; # disable after initial deploy #https://docs.gitea.io/en-us/config-cheat-sheet/ #settings = { # "cron.sync_external_users" = { # RUN_AT_START = true; # SCHEDULE = "@every 24h"; # UPDATE_EXISTING = true; # }; # mailer = { # ENABLED = true; # MAILER_TYPE = "sendmail"; # FROM = "do-not-reply@example.org"; # SENDMAIL_PATH = "${pkgs.system-sendmail}/bin/sendmail"; # }; # other = { # SHOW_FOOTER_VERSION = false; # }; #}; #appName = "gitea: spis meg"; appName = "gitea: private instance"; settings.server.DOMAIN = mkDomain "gitea"; #ssh.enable # default is true settings.server.ROOT_URL = "https://${settings.server.DOMAIN}/"; #ssh.clonePort # default is 22 #log.level = "Debug"; # default is "Info" #lfs.enable = true; # default is false settings.server.HTTP_PORT = 9675; # default is 3000 settings.server.HTTP_ADDR = "127.0.0.1"; # default is "0.0.0.0" #extraConfig #database.type # default is "sqlite3" settings.session.COOKIE_SECURE = true; # default is false, only send cookies over https #stateDir # default is "/var/lib/gitea" #mailerPasswordFile # Path to a file containing the SMTP password #repositoryRoot # default is "${config.services.gitea.stateDir}/repositories" #log.rootPath # TODO: move? #lfs.contentDir #dump.enable # default is false settings.server.STATIC_ROOT_PATH = pkgs.symlinkJoin { name = "gitea-static-root-data"; paths = let giteaModern = pkgs.fetchFromGitea { # https://codeberg.org/Freeplay/Gitea-Modern domain = "codeberg.org"; owner = "Freeplay"; repo = "Gitea-Modern"; rev = "0c0a05e6f0496521c166402dd56441a714487fd8"; sha256 = "q14E5ni2BvpGsmGOHWQgbCqD4lBh4bFtBFtIyNfAf0Q="; }; giteaEarlGray = pkgs.fetchFromGitHub { # https://github.com/acoolstraw/earl-grey owner = "acoolstraw"; repo = "earl-grey"; rev = "a6ca3dd3b9e6b48f6e45032b2aa691c2f16dc9bc"; sha256 = "55Piafc7kQ5hybwHQczx36AP+kX1AtWugxERYNdmqWk="; }; in [ config.services.gitea.package.data (pkgs.linkFarm "gitea-custom-dir" [ { name = "public/css/theme-gitea-modern.css"; path = "${giteaModern}/Gitea/theme-gitea-modern.css"; } { name = "public/css/theme-earl-grey.css"; path = "${giteaEarlGray}/theme-earl-grey.css"; } ]) ]; }; # https://docs.gitea.io/en-us/config-cheat-sheet/ settings.ui.THEMES = "gitea,arc-green,earl-grey,gitea-modern"; settings.ui.DEFAULT_THEME = "earl-grey"; }; services.nginx.virtualHosts.${mkDomain "gitea"} = lib.mkIf config.services.gitea.enable { forceSSL = true; # addSSL = true; enableACME = true; #useACMEHost = acmeDomain; locations."/" = { proxyPass = "http://127.0.0.1:${toString config.services.gitea.settings.server.HTTP_PORT}"; proxyWebsockets = true; }; }; }