Emitter: Switch to Forgejo
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
{ config, pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
    imports = [
 | 
			
		||||
        ./gitea.nix
 | 
			
		||||
        ./forgejo.nix
 | 
			
		||||
        ./tls_sni.nix
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
		 Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB  | 
| 
		 Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB  | 
| 
		 Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB  | 
| 
		 Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB  | 
| 
		 Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB  | 
| 
		 Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB  | 
| 
		 Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB  | 
| 
		 Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB  | 
| 
		 Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB  | 
| 
		 Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB  | 
| 
						 | 
				
			
			@ -2,18 +2,17 @@
 | 
			
		|||
 | 
			
		||||
let
 | 
			
		||||
    domain = "git.25120.org";
 | 
			
		||||
    giteaCustom = pkgs.callPackage ../packages/directory.nix {
 | 
			
		||||
        name = "gitea-custom";
 | 
			
		||||
        source = ./gitea-custom;
 | 
			
		||||
    forgejoCustom = pkgs.callPackage ../packages/directory.nix {
 | 
			
		||||
        name = "forgejo-custom";
 | 
			
		||||
        source = ./forgejo-custom;
 | 
			
		||||
    };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
    services.gitea = {
 | 
			
		||||
    services.forgejo = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        appName = "${domain}";
 | 
			
		||||
        database = {
 | 
			
		||||
            type = "postgres";
 | 
			
		||||
            passwordFile = "/secrets/gitea_db_password";
 | 
			
		||||
            passwordFile = "/secrets/forgejo_db_password";
 | 
			
		||||
            createDatabase = false;
 | 
			
		||||
        };
 | 
			
		||||
        repositoryRoot = "/data/git/repositories";
 | 
			
		||||
| 
						 | 
				
			
			@ -22,12 +21,13 @@ in
 | 
			
		|||
            contentDir = "/data/git/data/lfs";
 | 
			
		||||
        };
 | 
			
		||||
        settings = let
 | 
			
		||||
            python = pkgs.python311;
 | 
			
		||||
            docutils =
 | 
			
		||||
                pkgs.python310.withPackages (ps: with ps; [
 | 
			
		||||
                python.withPackages (ps: with ps; [
 | 
			
		||||
                docutils  # Provides rendering of ReStructured Text files
 | 
			
		||||
                pygments  # Provides syntax highlighting
 | 
			
		||||
            ]);
 | 
			
		||||
            nbconvert = pkgs.python310.withPackages (ps: with ps; [
 | 
			
		||||
            nbconvert = python.withPackages (ps: with ps; [
 | 
			
		||||
                jupyter
 | 
			
		||||
                ipykernel
 | 
			
		||||
                nbconvert
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ in
 | 
			
		|||
                input_file="$1"
 | 
			
		||||
 | 
			
		||||
                command="${nbconvert}/bin/jupyter nbconvert --stdout --to html --template basic"
 | 
			
		||||
                cache_directory="${config.services.gitea.stateDir}/markup_cache/jupyter"
 | 
			
		||||
                cache_directory="${config.services.forgejo.stateDir}/markup_cache/jupyter"
 | 
			
		||||
                max_cache_file_count="${toString max_cached_jupyter_notebooks}"
 | 
			
		||||
 | 
			
		||||
                cache_file="$cache_directory/$(md5sum "$input_file" | cut -d' ' -f1)"
 | 
			
		||||
| 
						 | 
				
			
			@ -64,6 +64,7 @@ in
 | 
			
		|||
            '';
 | 
			
		||||
        in
 | 
			
		||||
        {
 | 
			
		||||
            DEFAULT.APP_NAME = "${domain}";
 | 
			
		||||
            server = {
 | 
			
		||||
                SSH_PORT = lib.head config.services.openssh.ports;
 | 
			
		||||
                ROOT_URL = "https://${domain}/";
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +73,7 @@ in
 | 
			
		|||
            };
 | 
			
		||||
            service.DISABLE_REGISTRATION = true;
 | 
			
		||||
            session.COOKIE_SECURE = true;
 | 
			
		||||
            UI.DEFAULT_THEME = "forgejo-auto";
 | 
			
		||||
            "markup.restructuredtext" = {
 | 
			
		||||
                ENABLED = true;
 | 
			
		||||
                FILE_EXTENSIONS = ".rst";
 | 
			
		||||
| 
						 | 
				
			
			@ -103,11 +105,11 @@ in
 | 
			
		|||
    services.postgresql = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        authentication = ''
 | 
			
		||||
          local gitea all ident map=gitea-users
 | 
			
		||||
          local forgejo all ident map=forgejo-users
 | 
			
		||||
        '';
 | 
			
		||||
        # Map the gitea user to postgresql
 | 
			
		||||
        # Map the forgejo user to postgresql
 | 
			
		||||
        identMap = ''
 | 
			
		||||
            gitea-users gitea gitea
 | 
			
		||||
            forgejo-users forgejo forgejo
 | 
			
		||||
        '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,14 +126,14 @@ in
 | 
			
		|||
        };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # users.users.gitea.extraGroups = [ "keys" ];
 | 
			
		||||
    systemd.services.gitea = {
 | 
			
		||||
    # users.users.forgejo.extraGroups = [ "keys" ];
 | 
			
		||||
    systemd.services.forgejo = {
 | 
			
		||||
        serviceConfig = {
 | 
			
		||||
            ReadOnlyPaths = [ "/secrets" ];
 | 
			
		||||
        };
 | 
			
		||||
        preStart = ''
 | 
			
		||||
            cp -frT "${giteaCustom}/" "${config.services.gitea.stateDir}/custom/"
 | 
			
		||||
            find  "${config.services.gitea.stateDir}/custom/" -type d -exec chmod 0750 '{}' + -or -type f -exec chmod 0640 '{}' +
 | 
			
		||||
            cp -frT "${forgejoCustom}/" "${config.services.forgejo.stateDir}/custom/"
 | 
			
		||||
            find  "${config.services.forgejo.stateDir}/custom/" -type d -exec chmod 0750 '{}' + -or -type f -exec chmod 0640 '{}' +
 | 
			
		||||
        '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||