Migrate from gitea service to forgejo

While I'm at it, make it so I can use git@... at long last.
This commit is contained in:
TEC 2024-02-17 01:20:44 +08:00
parent ce0fbff904
commit 83eeb60424
Signed by: tec
SSH Key Fingerprint: SHA256:eobz41Mnm0/iYWBvWThftS0ElEs1ftBr6jamutnXc/A
3 changed files with 41 additions and 34 deletions

View File

@ -42,7 +42,7 @@ In future, the following may be set up too:
redir /tmio /tmio/ redir /tmio /tmio/
handle_path /tmio/* { handle_path /tmio/* {
file_server { file_server {
fs git /var/lib/gitea/repositories/tec/this-month-in-org.git html fs git ${config.services.forgejo.stateDir}/repositories/tec/this-month-in-org.git html
} }
} }
handle { handle {
@ -65,15 +65,15 @@ reverse_proxy ${config.services.syncthing.guiAddress} {
file_server file_server
''; '';
}) })
(mkIf config.services.gitea.enable {
virtualHosts."git.tecosaur.net".extraConfig = virtualHosts."git.tecosaur.net".extraConfig =
(mkIf config.services.forgejo.enable {
'' ''
@not_tec { @not_tec {
not path /tec/* not path /tec/*
not header Cookie *caddy_tec_redirect=true* not header Cookie *caddy_tec_redirect=true*
} }
handle @not_tec { handle @not_tec {
reverse_proxy localhost:${toString config.services.gitea.settings.server.HTTP_PORT} { reverse_proxy localhost:${toString config.services.forgejo.settings.server.HTTP_PORT} {
@404 status 404 @404 status 404
handle_response @404 { handle_response @404 {
header +Set-Cookie "caddy_tec_redirect=true; Max-Age=5" header +Set-Cookie "caddy_tec_redirect=true; Max-Age=5"
@ -86,7 +86,7 @@ handle @not_tec {
header Cookie *caddy_tec_redirect=true* header Cookie *caddy_tec_redirect=true*
} }
handle @tec_redirect { handle @tec_redirect {
reverse_proxy localhost:${toString config.services.gitea.settings.server.HTTP_PORT} { reverse_proxy localhost:${toString config.services.forgejo.settings.server.HTTP_PORT} {
@404 status 404 @404 status 404
handle_response @404 { handle_response @404 {
header +Set-Cookie "caddy_tec_redirect=true; Max-Age=0" header +Set-Cookie "caddy_tec_redirect=true; Max-Age=0"
@ -97,7 +97,7 @@ handle @tec_redirect {
} }
} }
handle { handle {
reverse_proxy localhost:${toString config.services.gitea.settings.server.HTTP_PORT} reverse_proxy localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}
} }
''; '';
}) })
@ -105,7 +105,7 @@ handle {
users.users.caddy = { users.users.caddy = {
extraGroups = extraGroups =
lib.optional config.services.syncthing.enable "syncthing" ++ lib.optional config.services.syncthing.enable config.services.syncthing.user ++
lib.optional config.services.gitea.enable "gitea"; lib.optional config.services.forgejo.enable config.services.forgejo.user;
}; };
} }

View File

@ -1,30 +1,35 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ let
age.secrets.postgres-gitea = { forgejo-user = "git";
owner = "gitea"; in {
age.secrets.postgres = {
owner = forgejo-user;
group = "users"; group = "users";
file = ../../secrets/postgres-gitea.age; file = ../../secrets/postgres.age;
}; };
age.secrets.fastmail = { age.secrets.fastmail = {
owner = "gitea"; owner = forgejo-user;
group = "users"; group = "users";
file = ../../secrets/fastmail.age; file = ../../secrets/fastmail.age;
}; };
services.gitea = { services.forgejo = {
package = pkgs.forgejo;
enable = true; enable = true;
user = "gitea"; user = forgejo-user;
appName = "Code by TEC"; group = forgejo-user;
stateDir = "/var/lib/forgejo";
database = { database = {
type = "postgres"; type = "postgres";
passwordFile = config.age.secrets.postgres-gitea.path; name = forgejo-user;
user = forgejo-user;
passwordFile = config.age.secrets.postgres.path;
}; };
lfs.enable = true; lfs.enable = true;
mailerPasswordFile = config.age.secrets.fastmail.path; mailerPasswordFile = config.age.secrets.fastmail.path;
settings = { settings = {
DEFAULT.APP_NAME = "Code by TEC";
server = { server = {
DOMAIN = "git.tecosaur.net"; DOMAIN = "git.tecosaur.net";
ROOT_URL = "https://git.tecosaur.net"; ROOT_URL = "https://git.tecosaur.net";
@ -56,6 +61,9 @@
# "repository.mimetype_mapping" = { # "repository.mimetype_mapping" = {
# ".org" = "text/org"; # ".org" = "text/org";
# }; # };
# actions = {
# ENABLED = true;
# };
ui = { ui = {
GRAPH_MAX_COMMIT_NUM = 200; GRAPH_MAX_COMMIT_NUM = 200;
DEFAULT_THEME = "auto"; DEFAULT_THEME = "auto";
@ -70,24 +78,23 @@
}; };
}; };
# users.users.gitea.uid = 997; users.users.${forgejo-user} = {
# users.enforceIdUniqueness = false; home = config.services.forgejo.stateDir;
# users.users.git = { useDefaultShell = true;
# uid = config.users.users.gitea.uid; group = forgejo-user;
# home = config.services.gitea.stateDir; isSystemUser = true;
# useDefaultShell = true; };
# group = "gitea";
# isSystemUser = true; users.groups.${forgejo-user} = {};
# };
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"L+ ${config.services.gitea.stateDir}/custom/templates/home.tmpl - - - - ${./template-home.tmpl}" "L+ ${config.services.forgejo.stateDir}/custom/templates/home.tmpl - - - - ${./template-home.tmpl}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/tree-greentea-themed.svg - - - - ${./images/tree-greentea-themed.svg}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/tree-greentea-themed.svg - - - - ${./images/tree-greentea-themed.svg}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/logo.svg - - - - ${./images/forgejo-icon-greentea-themed.svg}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/logo.svg - - - - ${./images/forgejo-icon-greentea-themed.svg}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/logo.png - - - - ${./images/forgejo-icon-greentea-themed.png}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/logo.png - - - - ${./images/forgejo-icon-greentea-themed.png}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/favicon.svg - - - - ${./images/forgejo-icon-greentea-themed.svg}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/favicon.svg - - - - ${./images/forgejo-icon-greentea-themed.svg}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/favicon.png - - - - ${./images/forgejo-icon-greentea-themed.png}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/favicon.png - - - - ${./images/forgejo-icon-greentea-themed.png}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/apple-touch-icon.png - - - - ${./images/forgejo-icon-greentea-themed.png}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/apple-touch-icon.png - - - - ${./images/forgejo-icon-greentea-themed.png}"
"L+ ${config.services.gitea.stateDir}/custom/public/assets/img/avatar_default.png - - - - ${./images/forgejo-square-greentea-themed.png}" "L+ ${config.services.forgejo.stateDir}/custom/public/assets/img/avatar_default.png - - - - ${./images/forgejo-square-greentea-themed.png}"
]; ];
} }