summaryrefslogtreecommitdiff
path: root/microvms/forgejo/forgejo.nix
diff options
context:
space:
mode:
Diffstat (limited to 'microvms/forgejo/forgejo.nix')
-rw-r--r--microvms/forgejo/forgejo.nix70
1 files changed, 70 insertions, 0 deletions
diff --git a/microvms/forgejo/forgejo.nix b/microvms/forgejo/forgejo.nix
new file mode 100644
index 0000000..965354f
--- /dev/null
+++ b/microvms/forgejo/forgejo.nix
@@ -0,0 +1,70 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
+{
+ services.forgejo = {
+ enable = true;
+ package = pkgs.forgejo;
+ useWizard = false;
+ database = {
+ type = "postgres";
+ createDatabase = true;
+ };
+ lfs.enable = true;
+ settings = {
+ DEFAULT.APP_NAME = "0xa's compilable shitposts";
+ actions.ENABLED = false;
+ database.LOG_SQL = false;
+ indexer.REPO_INDEXER_ENABLED = true;
+ mailer.ENABLED = false;
+ packages.ENABLED = false;
+ session.COOKIE_SECURE = true;
+ server = {
+ DOMAIN = "git.oxapentane.com";
+ SSH_DOMAIN = "git.oxapentane.com";
+ ROOT_URL = "https://git.oxapentane.com/";
+ PROTOCOL = "http";
+ START_SSH_SERVER = true;
+ BUILTIN_SSH_SERVER_USER = "git";
+ SSH_LISTEN_PORT = 2222;
+ };
+ repository = {
+ DEFAULT_REPO_UNITS = "repo.code,repo.releases,repo.issues,repo.pulls";
+ ENABLE_PUSH_CREATE_USER = true;
+ };
+ service = {
+ REGISTER_EMAIL_CONFIRM = false;
+ DISABLE_REGISTRATION = true;
+ };
+ oauth2_client = {
+ ENABLE_AUTO_REGISTRATION = true;
+ USERNAME = "nickname";
+ ACCOUNT_LINKING = "login";
+ };
+ };
+ };
+
+ # expose forgejo cli
+ environment.systemPackages =
+ let
+ cfg = config.services.forgejo;
+ forgejo-cli = pkgs.writeScriptBin "forgejo-cli" ''
+ #!${pkgs.runtimeShell}
+ cd ${cfg.stateDir}
+ sudo=exec
+ if [[ "$USER" != forgejo ]]; then
+ sudo='exec /run/wrappers/bin/sudo -u ${cfg.user} -g ${cfg.group} --preserve-env=GITEA_WORK_DIR --preserve-env=GITEA_CUSTOM'
+ fi
+ # Note that these variable names will change
+ export GITEA_WORK_DIR=${cfg.stateDir}
+ export GITEA_CUSTOM=${cfg.customDir}
+ $sudo ${lib.getExe cfg.package} "$@"
+ '';
+ in
+ [
+ forgejo-cli
+ ];
+}