Compare commits

...

1 commit

Author SHA1 Message Date
526d91e10d
retry
Some checks are pending
/ lint (push) Waiting to run
2025-08-20 11:59:31 +02:00
13 changed files with 161 additions and 93 deletions

View file

@ -1,6 +1,11 @@
on: [push] on:
push:
branches:
- main
jobs: jobs:
test: build:
runs-on: docker runs-on: nixos-latest
steps: steps:
- run: echo All good! - uses: actions/checkout@v4
- run: nix develop
- run: colmena build -v --on @fili

7
.github/workflows/lint.yml vendored Normal file
View file

@ -0,0 +1,7 @@
on: [push]
jobs:
lint:
runs-on: nixos-latest
steps:
- uses: actions/checkout@v4
- run: nix fmt -- --check .

View file

@ -16,7 +16,6 @@ _: {
networkmanager.enable = true; networkmanager.enable = true;
}; };
nix.settings = { nix.settings = {
# users that can interact with nix # users that can interact with nix
trusted-users = [ trusted-users = [

View file

@ -1,4 +1,5 @@
{ baseUrl, clientId }: { { baseUrl, clientId }:
{
inherit clientId; inherit clientId;
userAuthUrl = "${baseUrl}/ui/oauth2"; userAuthUrl = "${baseUrl}/ui/oauth2";

View file

@ -1,9 +1,11 @@
{pkgs, config, ...}: let { pkgs, config, ... }:
let
lib = pkgs.lib; lib = pkgs.lib;
domain = "auth.donsz.nl"; domain = "auth.donsz.nl";
port = 3013; port = 3013;
backupsDir = "/var/lib/kanidm/backup"; backupsDir = "/var/lib/kanidm/backup";
in { in
{
services.kanidm.enableServer = true; services.kanidm.enableServer = true;
services.kanidm.package = pkgs.kanidm_1_6; services.kanidm.package = pkgs.kanidm_1_6;
services.kanidm.serverSettings = { services.kanidm.serverSettings = {
@ -26,12 +28,11 @@ in {
mkdir -p "${backupsDir}" mkdir -p "${backupsDir}"
''; '';
serviceConfig = { serviceConfig = {
SupplementaryGroups = SupplementaryGroups = [ config.security.acme.certs.${domain}.group ];
[ config.security.acme.certs.${domain}.group ];
}; };
}; };
environment.systemPackages = [pkgs.kanidm]; environment.systemPackages = [ pkgs.kanidm ];
services.nginx.virtualHosts.${domain} = { services.nginx.virtualHosts.${domain} = {
forceSSL = true; forceSSL = true;

View file

@ -1,12 +1,17 @@
{pkgs, config, ...}: { { pkgs, config, ... }:
{
sops.secrets.oauth2-proxy = { sops.secrets.oauth2-proxy = {
sopsFile = ../../../secrets/oauth2-proxy.env; sopsFile = ../../../secrets/oauth2-proxy.env;
}; };
services.oauth2-proxy = services.oauth2-proxy =
let let
auth = import ../../lib/auth.nix { baseUrl = "https://auth.donsz.nl"; clientId = "homeserver"; }; auth = import ../../lib/auth.nix {
in { baseUrl = "https://auth.donsz.nl";
clientId = "homeserver";
};
in
{
enable = true; enable = true;
provider = "oidc"; provider = "oidc";
@ -34,7 +39,7 @@
}; };
extraConfig = { extraConfig = {
whitelist-domain = ["*.donsz.nl"]; whitelist-domain = [ "*.donsz.nl" ];
}; };
nginx.domain = "oauth2.donsz.nl"; nginx.domain = "oauth2.donsz.nl";

View file

@ -1,4 +1,9 @@
{ lib, pkgs, config, ... }: {
lib,
pkgs,
config,
...
}:
let let
cfg = config.services.forgejo; cfg = config.services.forgejo;
srv = cfg.settings.server; srv = cfg.settings.server;
@ -6,7 +11,7 @@ in
{ {
sops.secrets.forgejo = { sops.secrets.forgejo = {
sopsFile = ../../secrets/forgejo.yaml; sopsFile = ../../secrets/forgejo.yaml;
key="email_password"; key = "email_password";
format = "yaml"; format = "yaml";
}; };
@ -33,7 +38,7 @@ in
lfs.enable = true; lfs.enable = true;
user = "forgejo"; user = "forgejo";
group = "forgejo"; group = "forgejo";
repositoryRoot="/storage/storage/git"; repositoryRoot = "/storage/storage/git";
database = { database = {
type = "postgres"; type = "postgres";
@ -43,8 +48,8 @@ in
settings = { settings = {
DEFAULT = { DEFAULT = {
APP_NAME="jana's git server"; APP_NAME = "jana's git server";
APP_SLOGAN="meow!"; APP_SLOGAN = "meow!";
}; };
server = { server = {
DOMAIN = "git.donsz.nl"; DOMAIN = "git.donsz.nl";
@ -62,7 +67,7 @@ in
DEFAULT_ACTIONS_URL = "github"; DEFAULT_ACTIONS_URL = "github";
}; };
repository = { repository = {
DEFAULT_PRIVATE="private"; DEFAULT_PRIVATE = "private";
}; };
mailer = { mailer = {
ENABLED = true; ENABLED = true;
@ -74,19 +79,48 @@ in
mailerPasswordFile = config.sops.secrets.forgejo.path; mailerPasswordFile = config.sops.secrets.forgejo.path;
}; };
users.groups.forgejo-runner = { };
users.users.forgejo-runner = {
isSystemUser = true;
group = "forgejo-runner";
};
sops.secrets.forgejo-runner = {
sopsFile = ../../secrets/forgejo-runner.yaml;
format = "yaml";
key = "token";
};
services.gitea-actions-runner = { services.gitea-actions-runner = {
package = pkgs.forgejo-runner; package = pkgs.forgejo-runner;
instances.fili = { instances.fili = {
enable = true; enable = true;
name = "forgejo-runner-01"; name = "forgejo-runner-01";
token = "SutcrCJ3ULoE5LBj9Tm8zkvTRDEJCpbvpe7FEJHC"; tokenFile = config.sops.secrets.forgejo-runner.path;
url = "https://git.donsz.nl/"; url = "https://git.donsz.nl/";
labels = [ labels = [
"node-22:docker://node:22-bookworm" "nix:host"
"nixos-latest:docker://nixos/nix" "docker:docker://node:16-bullseye"
"ubuntu-latest:docker://node:16-bullseye"
];
settings = { };
hostPackages = with pkgs; [
# default ones
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
# used in deployments
lix
openssh
]; ];
settings = {};
}; };
}; };

View file

@ -1,4 +1,5 @@
{pkgs, config, ...}: { { pkgs, config, ... }:
{
services.nginx = { services.nginx = {
enable = true; enable = true;
statusPage = true; statusPage = true;

View file

@ -1,4 +1,5 @@
{flakes, pkgs, ...}: { { flakes, pkgs, ... }:
{
services.nginx = { services.nginx = {
virtualHosts."donsz.nl" = { virtualHosts."donsz.nl" = {
forceSSL = true; forceSSL = true;

View file

@ -1,4 +1,5 @@
{flakes,...}: { { flakes, ... }:
{
# imports = [ # imports = [
# flakes.mapf.nixosModules.default # flakes.mapf.nixosModules.default
# ]; # ];

View file

@ -1,8 +1,6 @@
{ flakes, pkgs,... }: { flakes, pkgs, ... }:
let let
totpal = totpal = flakes.totpal.packages.${pkgs.system}.default;
flakes.totpal.packages.${pkgs.system}.default
;
in in
{ {
services.nginx = { services.nginx = {
@ -17,8 +15,7 @@ in
}; };
}; };
systemd.services.totpal = systemd.services.totpal = {
{
description = "totpal"; description = "totpal";
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";

View file

@ -0,0 +1,16 @@
token: ENC[AES256_GCM,data:GUcut3EuuL3Q1ZUERprXbbtCeyTeVAT0Xf8m6yQmyXxdBqPENgz65A==,iv:GQ0jm0OmC5oHIO3KNLo2/MkmWQkFwKfy4w3F3ExXyf4=,tag:kQTh3tP3pxxMT1HAK+DumQ==,type:str]
sops:
age:
- recipient: age1ygkcl4ss92z5ptzt3w5g4n98qx2c4kagyssm96m5z4c7t299c5wszjchxw
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZTEkxK1VPRTNJSE92YWpO
NFJ0cUxHZW9RekFJbEVjcEdFVUJvWWJERUUwClBvU3dhQ29mNXpTQlVFZDg1dHNT
NFptZ3ZXWlZvZ3psMWI1d0twQUg5aVUKLS0tIG9sU0NGSUY5ek1ZK1plZDJMcHlj
UG03bnlmb0xLNmRvVjczRnMwVUtMQkEK9wRT5YByZf1Fj6eYHmiHQJpbcH+al3yA
PC0SiWgl2yNWkonrzoa97ehL64ugdH+HfJboKNGvViiHdIElnHZwrQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-08-20T09:58:38Z"
mac: ENC[AES256_GCM,data:jJ/DE4gvDSUTAHFx0R5lLawH+PzoNRn48XyS3cRregwXuhfeKB6Zb5rb97JzMAIF0ovMb3+Tx2M4u1QS40tpOztC6oho+MdGEXooThASIbnPpwN5xrk56dejHXDzFpfYwc3J1PZT/YvoD1MQKqoK9RCVlqLOloGGnVXHRR/5Wso=,iv:EgbgESAcuEzuEABkBJDXOVBLyG4jbVvtaqI4OcLS2EM=,tag:JioeH2NqHuGuofPasCfuVg==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2