{ config, pkgs, lib, ... }: with lib; let cfgBase = config.base; cfg = config.services.ppGitea; in { options.services.ppGitea = { baseModule = mkOption { type = types.str; default = builtins.fetchurl { url = "https://git.mineau.eu/histausse/nixos-modules/raw/branch/master/base.nix"; sha256 = "1iiz2igsklw8nhmng3gxpjgy47n9hivzlrpwmxy2rw8aziax1cgz"; }; description = "The base module to use"; }; domain = mkOption { type = types.str; default = "git.${cfgBase.domainName}"; example = "git.example.com"; description = "The domain of the server"; }; disableRegistration = mkOption { type = types.bool; default = true; description = "Must be set to `false` for the initial deployement"; }; customPackage = mkOption { type = types.package; default = pkgs.fetchgit { url = "https://git.mineau.eu/histausse/gitea_custom"; sha256 = "0r1kjkn0mkfyp2lb8j59frh1vnd1m54swpqwiasvg77r04ibfmn5"; }; description= "The package for custom configs like theme."; }; }; imports = [ cfg.baseModule ]; config = { services.gitea.appName = "git"; services.gitea.stateDir = "/var/lib/gitea"; # default value services.gitea.enable = true; services.gitea.rootUrl = "https://git.${cfg.domain}/"; services.gitea.settings.service.DISABLE_REGISTRATION = lib.mkForce cfg.disableRegistration; # Only set after initial deploy services.gitea.settings.session.COOKIE_SECURE = lib.mkForce true; # Why do I need to override this??? services.gitea.lfs.enable = true; services.gitea.domain = cfg.domain; # services.gitea.database.type = "postgres"; # Default is sqlite3, probably better for a small instance services.gitea.database.passwordFile = "/var/lib/gitea/gitea-dbpassword"; networking.firewall.allowedTCPPorts = [ 3000 ]; environment.systemPackages = with pkgs; [ gitea ]; systemd.services.gitea.environment.GITEA_CUSTOM = "${config.services.gitea.stateDir}/custom"; systemd.services.gitea.preStart = lib.mkAfter '' find ${config.services.gitea.stateDir}/ -type d -exec chmod u+w {} \; cp -f -s -r ${cfg.customPackage}/* ${config.services.gitea.stateDir}/custom/ ''; services.gitea.settings = { ui = { THEMES = "gitea,arc-green,plex,aquamarine,dark,dracula,hotline,organizr,space-gray,hotpink,onedark,overseerr,nord"; DEFAULT_THEME = "dark"; }; "ui.meta" = { DESCRIPTION = "Code everywhere"; }; }; }; }