forked from aylac.top/nixcfg
this repo has no description

maybe forgejo is ok enough now

Changed files
+171 -9
hosts
modules
home
programs
nixos
services
snippets
aylac-top
+3 -3
flake.lock
···
"secrets": {
"flake": false,
"locked": {
-
"lastModified": 1755335838,
-
"narHash": "sha256-KaUVYpZKZlgh/MnH5hyedBo7hFJgCJkOz5VSNfITsNw=",
+
"lastModified": 1755372338,
+
"narHash": "sha256-mOexedldBK39zoF4rvIwRqV6Hv8ObSI1AtSgeV9chA8=",
"owner": "ayla6",
"repo": "secrets",
-
"rev": "70c60e8345db2f9a35b33309ef1bc7177330bb00",
+
"rev": "b54c85850ac5b516a928a8cc88beec2f25627ee6",
"type": "github"
},
"original": {
+4
hosts/nanpi/default.nix
···
webuiPort = config.mySnippets.tailnet.networkMap.qbittorrent.port;
openFirewall = true;
};
+
forgejo = {
+
enable = true;
+
db = "postgresql";
+
};
};
};
+5
hosts/nanpi/services.nix
···
default = "http_status:404";
ingress = {
"${config.mySnippets.aylac-top.networkMap.pds.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.pds.hostName}:${toString config.mySnippets.aylac-top.networkMap.pds.port}";
+
"${config.mySnippets.aylac-top.networkMap.vaultwarden.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.vaultwarden.hostName}:${toString config.mySnippets.aylac-top.networkMap.vaultwarden.port}";
+
"${config.mySnippets.aylac-top.networkMap.tangled-knot.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.tangled-knot.hostName}:${toString config.mySnippets.aylac-top.networkMap.tangled-knot.port}";
+
+
"${config.mySnippets.aylac-top.networkMap.forgejo.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.forgejo.hostName}:${toString config.mySnippets.aylac-top.networkMap.forgejo.port}";
+
"${config.mySnippets.aylac-top.networkMap.forgejo.sshVHost}" = "ssh://${config.mySnippets.aylac-top.networkMap.forgejo.hostName}:2222";
};
};
};
+9
modules/home/programs/git/default.nix
···
{
lib,
config,
+
pkgs,
...
}: {
options.myHome.programs.git.enable = lib.mkEnableOption "git version control";
···
push = {
autoSetupRemote = true;
default = "current";
+
};
+
credential = {
+
helper = lib.getExe pkgs.git-credential-manager;
+
credentialStore =
+
if config.myHome.desktop.enable
+
then "secretservice"
+
else "pgp";
+
"https://git.aylac.top".provider = "generic";
};
};
};
+1
modules/nixos/services/default.nix
···
./aria2
./caddy
./fail2ban
+
./forgejo
./gdm
./qbittorrent
./syncthing
+6
modules/nixos/services/fail2ban/default.nix
···
config = lib.mkIf config.myNixOS.services.fail2ban.enable {
environment.etc = {
+
"fail2ban/filter.d/forgejo.conf".text = ''
+
[Definition]
+
failregex = .*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from <HOST>
+
journalmatch = _SYSTEMD_UNIT=forgejo.service
+
'';
+
"fail2ban/filter.d/vaultwarden.conf".text = ''
[INCLUDES]
before = common.conf
+130
modules/nixos/services/forgejo/default.nix
···
+
{
+
config,
+
lib,
+
pkgs,
+
self,
+
...
+
}: {
+
options.myNixOS.services.forgejo = {
+
enable = lib.mkEnableOption "forĝejo git forge";
+
+
db = lib.mkOption {
+
description = "Database to use (sqlite or postgresql).";
+
default = "sqlite";
+
type = lib.types.str;
+
};
+
};
+
+
config = lib.mkIf config.myNixOS.services.forgejo.enable {
+
age.secrets = {
+
postgres-forgejo.file = "${self.inputs.secrets}/postgres/forgejo.age";
+
};
+
+
services = {
+
postgresql = lib.mkIf (config.myNixOS.services.forgejo.db
+
== "postgresql") {
+
enable = true;
+
package = pkgs.postgresql_16;
+
ensureDatabases = ["forgejo"];
+
+
ensureUsers = [
+
{
+
name = "forgejo";
+
ensureDBOwnership = true;
+
}
+
];
+
};
+
+
forgejo = {
+
enable = true;
+
+
database = lib.mkIf (config.myNixOS.services.forgejo.db
+
== "postgresql") {
+
createDatabase = true;
+
host = "127.0.0.1";
+
name = "forgejo";
+
passwordFile = config.age.secrets.postgres-forgejo.path;
+
type = "postgres";
+
user = "forgejo";
+
};
+
+
lfs.enable = true;
+
package = pkgs.forgejo;
+
+
settings = {
+
actions = {
+
ARTIFACT_RETENTION_DAYS = 15;
+
DEFAULT_ACTIONS_URL = "https://github.com";
+
ENABLED = false;
+
};
+
+
cron = {
+
ENABLED = true;
+
RUN_AT_START = false;
+
};
+
+
DEFAULT.APP_NAME = "Forĝejo";
+
federation.ENABLED = true;
+
indexer.REPO_INDEXER_ENABLED = true;
+
+
log = {
+
ENABLE_SSH_LOG = true;
+
LEVEL = "Debug";
+
};
+
+
mailer = {
+
ENABLED = false;
+
};
+
+
migrations = {
+
ALLOW_LOCALNETWORKS = true;
+
};
+
+
picture = {
+
AVATAR_MAX_FILE_SIZE = 5242880;
+
ENABLE_FEDERATED_AVATAR = true;
+
};
+
+
repository = {
+
DEFAULT_BRANCH = "main";
+
ENABLE_PUSH_CREATE_ORG = true;
+
ENABLE_PUSH_CREATE_USER = true;
+
PREFERRED_LICENSES = "GPL-3.0";
+
};
+
+
security.PASSWORD_CHECK_PWN = true;
+
+
server = {
+
DOMAIN = config.mySnippets.aylac-top.networkMap.forgejo.vHost;
+
HTTP_PORT = config.mySnippets.aylac-top.networkMap.forgejo.port;
+
LANDING_PAGE = "explore";
+
LFS_START_SERVER = true;
+
ROOT_URL = "https://${config.mySnippets.aylac-top.networkMap.forgejo.vHost}/";
+
DISABLE_SSH = true;
+
};
+
+
service = {
+
ALLOW_ONLY_INTERNAL_REGISTRATION = true;
+
DISABLE_REGISTRATION = true;
+
ENABLE_NOTIFY_MAIL = true;
+
};
+
+
session.COOKIE_SECURE = true;
+
+
storage = {
+
STORAGE_TYPE = "local";
+
PATH = "/var/lib/forgejo/data";
+
};
+
+
ui.DEFAULT_THEME = "forgejo-auto";
+
+
"ui.meta" = {
+
AUTHOR = "Ayla";
+
DESCRIPTION = "i can't set up ssh via cloudflare tunnels!";
+
KEYWORDS = "git,source code,forge,forĝejo,aylac";
+
};
+
};
+
};
+
};
+
};
+
}
+13 -6
modules/snippets/aylac-top/default.nix
···
description = "Hostnames, ports, and vHosts for aylac.top services.";
default = {
+
forgejo = {
+
hostName = "nanpi";
+
port = 3001;
+
sshVHost = "ssh.aylac.top";
+
vHost = "git.aylac.top";
+
};
+
pds = {
hostName = "nanpi";
port = 3000;
vHost = "pds.aylac.top";
};
+
tangled-knot = {
+
hostName = "nanpi";
+
port = 5555;
+
vHost = "knot.aylac.top";
+
};
+
vaultwarden = {
hostName = "nanpi";
port = 8222;
vHost = "vault.aylac.top";
-
};
-
-
tangled-knot = {
-
hostName = "nanpi";
-
port = 5555;
-
vHost = "knot.aylac.top";
};
};
};