1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00
This commit is contained in:
2025-12-27 22:22:54 +01:00
parent cb0307e8bf
commit c3db0404b3
139 changed files with 2630 additions and 1976 deletions

View File

@@ -1,4 +1,9 @@
{ pkgs, config, inputs, ... }:
{
pkgs,
config,
inputs,
...
}:
let
postgrestPort = 3001;
alewPort = 3000;
@@ -6,8 +11,8 @@ in
{
systemd.services.postgrest = {
enable = true;
wantedBy = ["podman-alew.service"];
wants = ["postgresql.service"];
wantedBy = [ "podman-alew.service" ];
wants = [ "postgresql.service" ];
environment = {
PGRST_DB_ANON_ROLE = "alew_1";
PGRST_DB_SCHEMA = "alew_2022_05"; # alew_2023_09 for most recent (beta)
@@ -34,8 +39,8 @@ in
# $ rsync -rav --delete . ful:/var/lib/alew --exclude .git --exclude .nuxt --exclude node_modules
systemd.services.alew = {
enable = true;
wantedBy = ["multi-user.target"];
wants = ["postgrest.service"];
wantedBy = [ "multi-user.target" ];
wants = [ "postgrest.service" ];
path = [
pkgs.yarn
pkgs.python3
@@ -45,7 +50,7 @@ in
pkgs.gnumake
];
environment = {
NODE_OPTIONS= "--openssl-legacy-provider";
NODE_OPTIONS = "--openssl-legacy-provider";
POSTGREST_URL = "http://localhost:${toString postgrestPort}";
BETA = "0";
PORT = toString alewPort;
@@ -70,13 +75,13 @@ in
group = "alew";
};
users.extraGroups.alew = {};
users.extraGroups.alew = { };
environment.systemPackages = [pkgs.podman];
environment.systemPackages = [ pkgs.podman ];
services.postgresql = {
enable = true;
ensureDatabases = ["alew"];
ensureDatabases = [ "alew" ];
ensureUsers = [
{
name = "alew";

View File

@@ -3,7 +3,8 @@
pkgs,
lib,
...
}: {
}:
{
imports = [
./hardware-configuration.nix
./matomo.nix
@@ -27,8 +28,7 @@
niveum.passport = {
enable = true;
introductionHTML = ''
'';
introductionHTML = '''';
virtualHost = "ful.r";
services = [
@@ -70,7 +70,10 @@
};
networking = {
firewall.allowedTCPPorts = [80 443];
firewall.allowedTCPPorts = [
80
443
];
hostName = "ful";
interfaces.enp0s3.useDHCP = true;
retiolum = pkgs.lib.niveum.retiolumAddresses.ful;
@@ -95,7 +98,12 @@
users.users.root.hashedPasswordFile = config.age.secrets.root.path;
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
environment.systemPackages = [
pkgs.vim
pkgs.git
pkgs.tmux
pkgs.python3
];
# since 22.05 timeout fails?
# systemd.services.systemd-networkd-wait-online.enable = false;

View File

@@ -9,8 +9,14 @@ in
listenAddress = "127.0.0.1:${toString port}";
package = pkgs.go-webring;
members = [
{ username = "meteora"; site = "meteora.xn--kiern-0qa.de"; }
{ username = "huldra"; site = "huldras-halbtraum.com"; }
{
username = "meteora";
site = "meteora.xn--kiern-0qa.de";
}
{
username = "huldra";
site = "huldras-halbtraum.com";
}
];
homePageTemplate = ''
<!DOCTYPE html>

View File

@@ -4,7 +4,8 @@
pkgs,
modulesPath,
...
}: {
}:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
@@ -18,7 +19,10 @@
efi.canTouchEfiVariables = true;
};
initrd = {
availableKernelModules = ["virtio_pci" "usbhid"];
availableKernelModules = [
"virtio_pci"
"usbhid"
];
};
kernelModules = [
"console=ttyS0"
@@ -26,7 +30,7 @@
"nvme.shutdown_timeout=10"
"libiscsi.debug_libiscsi_eh=1"
];
extraModulePackages = [];
extraModulePackages = [ ];
};
fileSystems."/" = {
@@ -39,5 +43,5 @@
fsType = "vfat";
};
swapDevices = [];
swapDevices = [ ];
}

View File

@@ -2,7 +2,8 @@
config,
pkgs,
...
}: {
}:
{
services.hledger-web = {
enable = true;
allow = "edit";
@@ -16,8 +17,8 @@
systemd.services.hledger-backup = {
enable = false;
startAt = "hourly";
wants = ["network-online.target"];
wantedBy = ["multi-user.target"];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
script = ''
${pkgs.git}/bin/git config user.name "hledger-web"
${pkgs.git}/bin/git config user.email "hledger-web@${config.networking.hostName}"

View File

@@ -1,4 +1,5 @@
{pkgs, lib, ...}: {
{ pkgs, lib, ... }:
{
services.nginx = {
enable = true;
recommendedGzipSettings = true;
@@ -25,7 +26,7 @@
services.mysql = {
enable = true;
package = pkgs.mariadb;
ensureDatabases = ["matomo"];
ensureDatabases = [ "matomo" ];
ensureUsers = [
{
name = "matomo";
@@ -36,6 +37,6 @@
services.mysqlBackup = {
enable = true;
databases = ["matomo"];
databases = [ "matomo" ];
};
}

View File

@@ -3,16 +3,18 @@
pkgs,
lib,
...
}: let
}:
let
irc-xxx = pkgs.lib.panoptikon.kpaste-irc {
target = lib.escapeShellArg "#xxx";
retiolumLink = true;
};
matrix = {
server ? "matrix.4d2.org",
target,
}:
matrix =
{
server ? "matrix.4d2.org",
target,
}:
pkgs.writers.writeDash "matrix-reporter" ''
export RAW_MESSAGE="$(cat)"
export MESSAGE=$(printf '<b>%s</b><br><pre>%s</pre>' "$PANOPTIKON_WATCHER" "$RAW_MESSAGE")
@@ -26,9 +28,10 @@
matrix-kmein = matrix { target = "!zlwCuPiCNMSxDviFzA:4d2.org"; };
telegram-kmein = let
chatId = "-1001796440545";
in
telegram-kmein =
let
chatId = "-1001796440545";
in
pkgs.writers.writeDash "telegram-fulltext" ''
export TOKEN="$(cat "$CREDENTIALS_DIRECTORY/token")"
${pkgs.curl}/bin/curl -X POST "https://api.telegram.org/bot''${TOKEN}/sendMessage" \
@@ -43,7 +46,8 @@
nick = "panoptikon-kmein";
retiolumLink = false;
};
in {
in
{
age.secrets.telegram-token-kmein.file = ../../secrets/telegram-token-kmein.age;
age.secrets.matrix-token-lakai = {
file = ../../secrets/matrix-token-lakai.age;
@@ -64,83 +68,86 @@ in {
}
'';
} "https://api.github.com/meta";
reporters = [irc-xxx];
reporters = [ irc-xxx ];
};
lammla = {
script = pkgs.lib.panoptikon.url "http://lammla.info/index.php?reihe=30";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
kratylos = {
script = pkgs.lib.panoptikon.url "https://kratylos.reichert-online.org/current_issue/KRATYLOS";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
kobudo-tesshinkan = {
script = pkgs.lib.panoptikon.url "https://kobudo-tesshinkan.eu/index.php/de/termine-berichte/lehrgaenge/";
reporters = [telegram-kmein matrix-kmein];
reporters = [
telegram-kmein
matrix-kmein
];
};
zeno-free = {
script = pkgs.lib.panoptikon.urlSelector ".zenoCOMain" "http://www.zeno.org/Lesesaal/M/E-Books";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
carolinawelslau = {
script = pkgs.lib.panoptikon.urlSelector "#main" "https://carolinawelslau.de/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
humboldt-preis = {
script = pkgs.lib.panoptikon.urlSelector "#content-core" "https://www.hu-berlin.de/de/ueberblick/menschen/ehrungen/humboldtpreis";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
lisalittmann = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://lisalittmann.de/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
lisalittmann-archive = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://lisalittmann.de/archive/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
lisalittmann-projects = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://lisalittmann.de/projects/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
tatort = {
script = pkgs.lib.panoptikon.urlSelector ".linklist" "https://www.daserste.de/unterhaltung/krimi/tatort/sendung/index.html";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
warpgrid-idiomarium = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://warpgrid.de/idiomarium/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
warpgrid-futurism = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://warpgrid.de/futurism/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
warpgrid-imagiary = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://warpgrid.de/imagiary/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
warpgrid-alchemy = {
script = pkgs.lib.panoptikon.urlSelector "#site-content" "https://warpgrid.de/alchemy/";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
indogermanische-forschungen = {
script = pkgs.lib.panoptikon.urlSelector "#latestIssue" "https://www.degruyter.com/journal/key/INDO/html";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
ig-neuigkeiten = {
script = pkgs.lib.panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/aktuelles/neuigkeiten.html";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
ig-tagungen = {
script = pkgs.lib.panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
fu-distant = {
script = pkgs.lib.panoptikon.urlSelector "#current_events" "https://www.geschkult.fu-berlin.de/en/e/ma-distant/Termine/index.html";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
fu-aegyptologie = {
script = pkgs.lib.panoptikon.urlSelector "#current_events" "https://www.geschkult.fu-berlin.de/e/aegyptologie/termine/index.html";
reporters = [matrix-kmein];
reporters = [ matrix-kmein ];
};
};
};

View File

@@ -3,7 +3,8 @@
config,
lib,
...
}: let
}:
let
liquidsoapDirectory = "/var/cache/liquidsoap";
icecastPassword = "hackme";
refresh-qasaid = pkgs.writers.writeDashBin "refresh-qasaid" ''
@@ -25,10 +26,12 @@
'';
qasida-poem = pkgs.writers.writeDash "qasida.sh" ''
set -efu
${pkgs.jq}/bin/jq -c '.[]' < ${pkgs.fetchurl {
url = "https://c.krebsco.de/qasaid.json";
sha256 = "0vh1jzdrvjrdyq7dzya9k9g3jyli9jr0zfsqb2m1phm39psy4g2b";
}} \
${pkgs.jq}/bin/jq -c '.[]' < ${
pkgs.fetchurl {
url = "https://c.krebsco.de/qasaid.json";
sha256 = "0vh1jzdrvjrdyq7dzya9k9g3jyli9jr0zfsqb2m1phm39psy4g2b";
}
} \
| shuf -n1 \
| ${pkgs.jq}/bin/jq -r '"annotate:title=\"\(.poem) | https://www.hindawi.org/poems/\(.id)/\",artist=\"\(.author)\":https://downloads.hindawi.org/poems/\(.id)/\(.id).m4a"'
'';
@@ -94,7 +97,8 @@
"$(${pkgs.htmlq}/bin/htmlq -f "$html" --text h1)" \
"$opus"
'';
in {
in
{
# https://github.com/savonet/liquidsoap/issues/1043#issuecomment-593354427
services.liquidsoap.streams.radio = pkgs.writeText "lyrikline.liq" ''
set("protocol.external.curl","${pkgs.torsocks}/bin/torsocks ${pkgs.curl}/bin/curl")
@@ -124,14 +128,14 @@ in {
systemd.services.radio = {
environment.TMPDIR = liquidsoapDirectory;
wants = ["network-online.target"];
wants = [ "network-online.target" ];
serviceConfig = {
RuntimeMaxSec = "${toString (5 * 60 * 60)}s";
Restart = "always";
};
};
environment.systemPackages = [refresh-qasaid];
environment.systemPackages = [ refresh-qasaid ];
systemd.tmpfiles.rules = [
(pkgs.lib.niveum.tmpfilesConfig {