Compare commits

..

No commits in common. "0ed15dcc51c9d3b7683871ec7cc9b9a3c5d48369" and "7aaf388456a1fbece602807ae4130efdaa27aaa5" have entirely different histories.

5 changed files with 81 additions and 1164 deletions

View file

@ -59,14 +59,6 @@ in
useXkbConfig = true; # use xkb.options in tty.
};
#### Wir verwenden die fuer NixOS ueblichen Empfehlung fuer Nginx.
services.nginx.recommendedOptimisation = true;
services.nginx.recommendedGzipSettings = true;
services.nginx.recommendedProxySettings = true;
#### Mit der Anwendung Nginx soll die (ausschließliche) Verwendung von https (http mit TLS), statt http ermoeglicht werden.
services.nginx.recommendedTlsSettings = true;
users.users = {
# erstmal nur mit root
# administration = {

View file

@ -1,309 +0,0 @@
{ config, pkgs, lib, modulesPath, ... }:
{
################# COMMON STUFF
# what do the config.nix files have in common comes here #
imports = [
"${modulesPath}/virtualisation/proxmox-lxc.nix"
];
# proxmox-lxc.nix hat fuer bestimmte optionen eigene defaulwerte
# diese koennen in dem dazugehoerigen nix file nachgelesen werden
system.stateVersion = "22.11";
# system.autoUpgrade.enable = true;
# system.autoUpgrade.allowReboot = true;
# # system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.11;
# nix.settings.auto-optimise-store = true;
# nix.optimise.automatic = true;
# nix.gc.automatic = true;
# nix.gc.options = "--delete-older-than 5d";
proxmoxLXC = {
# mach mal auf false
manageNetwork = true;
manageHostName = false;
};
networking = {
enableIPv6 = false;
};
#### 2024-04-14 vater
#### Nicht erfolgreicher Test zur Behebung vom Problem, dass wegen falsch gesetzten Umgebungsvariablen nichts - auch nichts fuer die Verwendung von NixOS - mit TLS geruntergeladen werden kann.
#### https://pro.stura.htw-dresden.de/issues/1822#note-5
#### environment.variables = {
#### SSL_CERT_DIR = "/etc/ssl/certs";
#### SSL_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt";
#### };
environment.systemPackages = [
pkgs.tmux
# pkgs.micro
pkgs.vim
#### 2024-04-14 vater
#### Nicht erfolgreicher Test zur Behebung vom Problem, dass wegen falsch gesetzten Umgebungsvariablen nichts - auch nichts fuer die Verwendung von NixOS - mit TLS geruntergeladen werden kann.
#### https://pro.stura.htw-dresden.de/issues/1822#note-5
#### pkgs.cacert
];
################# UNIQUE STUFF
# unique configuration for each container
networking = {
hostName = "cloud";
# domain = "stura.htw-dresden.de";
interfaces.eth0.ipv4.addresses = [
{
address = "141.56.51.16";
prefixLength = 24;
}
];
defaultGateway = "141.56.51.254";
nameservers = [
"141.56.1.1"
"141.56.1.2"
];
firewall.allowedTCPPorts = [
80
443
];
};
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
logError = ''
/dev/null emerg
'';
virtualHosts.${config.networking.fqdn} = {
forceSSL = true;
enableACME = true;
extraConfig = ''
access_log off;
'';
};
# virtualHosts."cloud.htw.stura-dresden.de" = {
# forceSSL = true;
# enableACME = true;
# locations = config.services.nginx.virtualHosts."${config.networking.fqdn}".locations;
# };
};
services.nextcloud = {
enable = true;
#### 2024-12-14 vat
#### Versuch der Aktualisierung
# package = pkgs.nextcloud27;
# package = pkgs.nextcloud28;
# package = pkgs.nextcloud29;
# package = pkgs.nextcloud30;
package = pkgs.nextcloud31;
# package = pkgs.nextcloud32;
hostName = "${config.networking.fqdn}";
maxUploadSize = "1G";
### 2025-06-09 Tan
### unter nextcloud.settings definiert
#logLevel = 4;
caching = {
apcu = false;
redis = true;
};
https = true;
settings = {
#extraOptions = {
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html
#### Einstellung, deren Festlegung von der Anwendung selbst "erwartet" wird
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#default-phone-region
# defaultPhoneRegion = "DE";
default_phone_region = "DE";
#### mail
# "mail_from_address" = "files";
# "mail_smtpmode" = "smtp";
# "mail_sendmailmode" = "smtp";
# "mail_domain" = "${config.networking.domain}";
# "mail_smtphost" = "mail.${config.networking.domain}";
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-domain
# mail_domain = "${config.networking.domain}";
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-from-address
# mail_from_address = "files";
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtpdebug
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtpmode
# mail_smtpmode = "smtp";
## mail_sendmailmode = "smtp";
mail_smtpmode = "sendmail";
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtphost
# mail_smtphost = "mail.${config.networking.domain}";
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtpport
# mail_smtpport = 25;
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#mail-smtptimeout
#### mail_smtptimeout = 10;
# mail_smtptimeout = 30;
# mail_smtptimeout = 60;
"memcache.local" = ''\OC\Memcache\Redis'';
"memcache.locking" = ''\OC\Memcache\Redis'';
redis = {
host = "/run/redis-nextcloud/redis.sock";
port = 0;
};
#### aehnlich wie services.nextcloud.settings.trusted_domains ?
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#trusted-domains
# extraTrustedDomains = [
# "www.${config.networking.fqdn}"
# ];
trusted_domains = [
# services.nextcloud.hostname
# "${config.networking.fqdn}"
"www.${config.networking.fqdn}"
"cloud.htw.stura-dresden.de"
];
#### 2025-06-23 admin@ (vat@)
#### ergibt sich ja aus services.nextcloud.https , oder?
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#overwriteprotocol
# overwriteProtocol = "https";
# overwriteprotocol = "https";
#### 2025-06-23 admin@ (vat@)
#### Wir wollen moeglichst wenig aufzeichnen (, wie auch beim web server).
#### https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#loglevel
# logLevel = 4;
loglevel = 4;
#### 2024-12-14 vater
#### https://pro.stura.htw-dresden.de/issues/1952#note-2
maintenance_window_start = 4;
};
config = {
adminuser = "administration";
adminpassFile = "/var/lib/nextcloud/adminpassFile";
### 2025-06-09 Tan
### unter nextcloud.settings definiert
#overwriteProtocol = "https";
dbtype = "pgsql";
dbname = "nextcloud";
dbhost = "/run/postgresql";
dbuser = "nextcloud";
### 2025-06-09 Tan
### unter nextcloud.settings definiert
#defaultPhoneRegion = "DE";
# ist unter nextcloud.setting
#extraTrustedDomains = [
# "www.${config.networking.fqdn}"
#];
};
# Im Zuge von Ticket #1878 wurde der Cache vergrößert
phpOptions."opcache.interned_strings_buffer" = "32";
####vb 2023-11-20
# Es gibt von Nix vorpaketierte Nextcloud Apps, diese sollen verwendet werden
extraApps = { inherit (config.services.nextcloud.package.packages.apps)
#####vb 2023-11-20
#### oea@ hatte die eigentlich triviale Anforderung fuer die Verwaltung von Kalendern. dirk@ wollte seine Erfahrungen zur Verwendung von Kalendern bei Nextcloud teilen. Dabei fiel auf, dass bei unserer Instanz Anwendung Nextcloud die Erweiterung (App) Calender gar nicht verwendet wird.
#### Bei der Bereitstellung der Anwendung Nextcloud wird - von vat@ und dirk@ - erwartet, dass die Funktionalitaet fuer die Verwaltung von Kalendern angeboten wird.
calendar
#####ve 2023-11-20
#####vb 2023-11-20
#### sm@ hatte die Anforderung zur Verwaltung von Aufgaben - auch mit Terminen - als Kanboard. Anstatt eine weitere eigenstaendige Instanz fuer eine Anwendung - etwa WeKan, Focalboard oder Kanboard - zu betreien sollte einfach bei der bestehenden Instanz Anwendung Nextcloud die Erweiterung (App) Deck genutzt werden.
deck
#####ve 2023-11-20
#####vb 2023-11-20
#### Pauschales Installieren von vermeintlich ueblichen Erweiterungen (Apps), insbesondere auch um die Erweiterung (App) Deck als "kompatibel" in Betrieb nehmen zu koennen.
#### Mit der Installation (und sich daraus ergebender automatischer Aktivierung) der pauschal installierten Erweiterungen (Apps) funktionierte ploetzlich auch die Erweiterung (App) Deck.
#### Die Erweiterung (App) Deck funktionierte - unerwarteter Weise - auch nach der Deaktivierung aller anderen Erweiterungen (Apps). w00t? Vielleicht war die notwendige Erweiterung (App) bereits standardmaessig installiert, aber nur nicht aktiviert.
#### Letztlich sollen aber alle vermeintlich ueblichen Erweiterungen (Apps) installiert (und aktiviert) bleiben koennen, da der "uebliche" erwartbare Umfang an Funktionalitaeten selbstverstaendlich angeboten werden soll.
tasks
#### 2024-12-14 vater
#### deaktiviert, da beim rebuild switch --upgrade bei NixOS Version 23.11 nicht gebaut werden konnte wegen
#### error: attribute 'news' missing
# news
notes
contacts;
#####ve 2023-11-20
};
####ve 2023-11-20
};
services.redis.servers.nextcloud = {
enable = true;
user = "${config.services.nextcloud.config.dbuser}";
port = 0;
};
services.postgresql = {
enable = true;
ensureDatabases = [
"${config.services.nextcloud.config.dbname}"
];
ensureUsers = [
{
name = "${config.services.nextcloud.config.dbuser}";
#### https://pro.stura.htw-dresden.de/issues/2093
#ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
}
];
};
systemd.services."nextcloud-setup" = {
requires = ["postgresql.service"];
after = ["postgresql.service"];
};
#### 2025-07-05 vat
#### vb
#### https://pro.stura.htw-dresden.de/issues/2330
#### https://pro.stura.htw-dresden.de/issues/2331
#### Die Anwendung Nextcloud soll Mails vesenden koennen, was anscheinend ohne eine weiteren Dienst nicht zu funktionieren scheint.
#### Eine erartungsgemaess vergleichsweise einfach Loesung mit der Anwenung msmtp konnte leider nicht (auf die Schnelle) gefunden werden. Eine solche Loesung waere aber wuenschenswert.
# programs.msmtp.enable = true;
#### Verwendung der Anwendung nullmailer als moeglichst einfacher Dienst zur Versendung von Mails durch den Dienst Postausgang (Mail) bei einer anderern Instanz.
services.nullmailer.enable = true;
services.nullmailer.config.remotes = "mail.stura.htw-dresden.de smtp --port=25";
services.nullmailer.config = {
allmailfrom = "files@stura.htw-dresden.de";
##### me = "${config.networking.hostName}";
};
##### services.nullmailer.config.defaultdomain = "${config.networking.fqdn}";
##### services.nullmailer.config.defaulthost = "${config.networking.fqdn}";
services.nullmailer.config.helohost = "${config.networking.fqdn}";
#### ve
}

View file

@ -1,277 +1,60 @@
{ config, pkgs, lib, modulesPath, ... }:
{
config,
pkgs,
lib,
modulesPath,
...
}:
{
#services.openssh.enable = true;
imports = [
"${modulesPath}/virtualisation/proxmox-lxc.nix"
];
############################
#### NixOS
############################
system.stateVersion = "22.11";
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = true;
# system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.11;
nix.settings.auto-optimise-store = true;
nix.optimise.automatic = true;
nix.gc.automatic = true;
# nix.gc.options = "--delete-older-than 5d";
nix.gc.options = "--delete-older-than 42d";
############################
#### Umgebung
############################
# environment.noXlibs = true;
services.xserver.enable = false;
services.openssh.enable = true;
############################
#### Netzwerk
############################
networking = {
enableIPv6 = false;
hostName = "pro";
domain = lib.mkForce "stura.htw-dresden.de";
firewall.allowedTCPPorts = [ 22 80 443 ];
interfaces.eth0.ipv4.addresses = [
{
address = "141.56.51.15";
prefixLength = 24;
}
domain = "htw.stura-dresden.de";
firewall.allowedTCPPorts = [
80
443
];
defaultGateway.address = "141.56.51.254";
defaultGateway.interface = "eth0";
# firewall.allowedTCPPorts = [ 80 443 3000 ];
};
############################
#### System
############################
proxmoxLXC.manageHostName = true;
# wird in der default nix auch gesetzt
# time.timeZone = "Europe/Berlin";
############################
#### Anwendung
############################
#### Aufgabenverwaltung StuRa HTW Dresden
#### Redmine
#### Beim StuRa braucht es einen Dienst zur Aufgabenverwaltung.
#### Beim StuRa wird (gefuehlt seit jeher) die Anwendung Redmine fuer den Dienst Aufgabenverwaltung verwendet.
#### https://search.nixos.org/options?show=services.redmine.enable
#### Verwenden der Anwendung Redmine
services.redmine.enable = true;
#### Standardmaessig verwendet die Anwendung Redmine den Port 3000.
#### Es ist aber ueblich, dass die Anwendung Redmine nicht direkt, sondern nur ueber eine eine uebliche Anwednung fuer den Dienst web server, erreichbar sein soll. networking.firewall.allowedTCPPorts = [ 3000 ];
#### https://search.nixos.org/options?show=services.redmine.settings
#### https://github.com/redmine/redmine/blob/master/config/configuration.yml.example
#### Standardmaessig ist keine Konfiguration fuer den Versand von Mails bei der Anwendung Redmine konfiguriert. Es ist kein Versand von Mails durch die Anwendung moeglich.
#### Der Dienst Aufgabenverwaltung soll aber Mails - um ueber Aenderungen beim der Aufgabenverwaltung informieren zu koennen - Mails versenden koennen.
#### #### Achtung! Die Inhalte der Konfiguration werden den Inhalten der sonstigen Inhalten der Konfiguration von in der Dateie fuer die Konfiguration der Anwendung Redmine vorangestellt.
services.redmine.settings.production.email_delivery = {
services = {
redmine = {
enable = true;
components.imagemagick = true;
components.minimagick_font_path = "${pkgs.liberation_ttf.outPath}/share/fonts/truetype/LiberationSans-Regular.ttf";
components.ghostscript = true;
settings.production.email_delivery = {
delivery_method = ":smtp";
smtp_settings = {
address = "mail.${config.networking.domain}";
port = 25;
};
#### Alternativ waere vielleicht auch das Versand von Mails durch das Programm sendmail (als lokale Installation) moeglich.
#### Getestet wurde das aber noch nicht.
##### delivery_method = ":sendmail";
};
#### https://www.redmine.org/projects/redmine/wiki/RedmineAdminInformation#ImageMagick-convert-available
services.redmine.components.imagemagick = true;
services.redmine.components.minimagick_font_path = "${pkgs.liberation_ttf.outPath}/share/fonts/truetype/LiberationSans-Regular.ttf";
#### https://www.redmine.org/projects/redmine/wiki/RedmineAdminInformation#ImageMagick-PDF-support-available
services.redmine.components.ghostscript = true;
#### Die Anwendung Redmine kann mit sogenannten Plugins erweitert werden.
#### Beim StuRa brauchen wir keine Erweiterungen fuer die Anwendung Redmine.
#### Zum Test der Verwendung von Erweiterungen fuer die Anwendung Redmine installieren wir "zufaellige" Erweiterungen.
# services.redmine.plugins = {
# issue_recurring = builtins.fetchurl {
# url = "https://github.com/cryptogopher/issue_recurring/archive/refs/tags/1.7.zip";
# sha256 = "1s729gyh2wsa9yljm6gvk76z3qxnp1vhaydypvda8miw69csvs34";
# };
#### siehe instanz 137 (srs-test-pve)
#### https://10.1.0.17:8006/#v1:0:=lxc%2F137:4:::::::
# redmine_kanban = builtins.fetchurl {
## url = "https://github.com/happy-se-life/kanban/archive/refs/heads/master.zip";
# url = "https://github.com/happy-se-life/kanban/archive/refs/heads/tags0.0.11.zip";
# sha256 = "01ymd25169dhyc4ksdx67w5h9rba09hrvmfw7bc6y71lsrxlg4sr";
# };
# };
#### weitere Inhalte zur Konfiguration
#### ls -l /var/lib/redmine/config/
#### Die Anwendung Redmine soll nicht direkt, sondern ueber eine uebliche Anwendung fuer den Dienst web server, erreichbar sein.
#### Es braucht einen (nahezu beliebigen) web server.
#### Beim StuRa HTW Dresden verwenden wir als web server moeglichst Nginx.
#### Verwenden der Anwendung Nginx als web server (Proxy)
services.nginx.enable = true;
#### Der StuRa speichert nicht!
services.nginx.logError = ''/dev/null emerg'';
services.nginx.appendHttpConfig = ''
};
nginx = {
enable = true;
logError = "/dev/null emerg";
appendHttpConfig = ''
access_log off;
'';
#### Anscheinend kann mit nix nur die Konfiguration fuer eine konkrete (manuelle) Konfiguration fuer den Dienst web server.
services.nginx.virtualHosts."${config.networking.fqdn}" = {
#### https://search.nixos.org/options?show=services.nginx.virtualHosts.<name>.default
default = true;
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
virtualHosts = {
"pro.htw.stura-dresden.de" = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.redmine.port}";
};
forceSSL = true;
enableACME = true;
};
services.nginx.virtualHosts."pro.htw.stura-dresden.de" = {
#### https://search.nixos.org/options?show=services.nginx.virtualHosts.<name>.default
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.redmine.port}";
};
forceSSL = true;
enableACME = true;
};
############################
#### Probleme
############################
# services.redmine.package = unstable.redmine;
# services.redmine.packages = pkgs.redmine.override { rubyPackages.rails = pkgs.ruby_2_7; };
#### Problem Verweigerung der Akualisierung wegen unsicherenen Paket redmine
#### 2025-06-09 vat
#### Durch die Aktualisierung auf Redmine Version 6 durch die Aktualisierung auf NixOS Version 25.05 scheint das Problem ueberwunden (siehe Ticket #2475) zu sein.
##### Ausnahme für upgrade von der Instanz
##### siehe Ticket #2241
#### nixpkgs.config.permittedInsecurePackages = [
######## 2025-05-16 vat@
######## Die Aktualisierung lief nicht, da nun 5.1.8 verwendet wird.
##### "redmine-5.1.7"
#### "redmine-5.1.8"
#### ];
#### Problem - wie bei allen Instanzen mit NixOS auf PVE - fehlende Bereitstellung der Daten fuer locale
#### ich glaub das hier kann weg wenn man sich per ssh einloggt bekommt man ne richtige shell mit korrekten umgebungsvariablen
#### 2025-06-27 vat@ && tan@
#### gescheiterter Versuch um fehlermeldungen nach
#### pct enter 100
#### . /etc/profile
####sh: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
####sh: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
#### zu vermeiden.
## i18n.extraLocales = [
## "all"
## ];
# i18n.extraLocaleSettings = {
# LC_CTYPE = "en_US.UTF-8";
# LC_COLLATE = "en_US.UTF-8";
## LC_CTYPE = "en_US.utf8";
## LC_COLLATE = "en_US.utf8";
### LC_ALL = "en_US.UTF-8";
# };
# i18n.localeCharsets = {
# LC_CTYPE = "en_US.UTF-8";
# LC_COLLATE = "en_US.utf8";
# };
# i18n.defaultLocale = "en_US.UTF-8";
# i18n.glibcLocales = pkgs.glibcLocales;
# i18n.glibcLocales = pkgs.glibcLocalesUtf8;
# environment.systemPackages = with pkgs; [
# glibcLocales
# glibcLocalesUtf8
# ];
# environment.variables = {
# LC_CTYPE = "en_US.UTF-8";
# LC_COLLATE = "en_US.UTF-8";
# };
#### ve
############################
#### Problem Anwendung Redmine startet nicht, weil beim Bauen vom Paket Inhalte aus einem Gemfile nicht richtig behandelt werden
############################
#### https://pro.stura.htw-dresden.de/issues/2510
############################
#### nixpkgs
############################
#### 2025-07-11 vat
#### vb
#### https://wiki.nixos.org/wiki/FAQ/Pinning_Nixpkgs#Pinning_an_unstable_service
# nixpkgs.config = {
## allowUnfree = true;
# packageOverrides = pkgs: {
## unstable = import <nixpkgs-unstable> {
# master = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/d21825f9cf895942e057230c56625e2290d1b149.tar.gz") {
# config = config.nixpkgs.config;
# };
# };
# };
## environment.systemPackages = with pkgs; [
## unstable.redmine
## ];
##
#
# mittlerweile in nixpkgs
#services.redmine.package =
# let
##### fixing commit
##### https://github.com/NixOS/nixpkgs/commit/d21825f9cf895942e057230c56625e2290d1b149
## pkgs_master_redmine_fixed = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/d21825f9cf895942e057230c56625e2290d1b149.tar.gz") {
## config = config.nixpkgs.config;
## };
##### https://github.com/NixOS/nixpkgs/commits/nixos-25.05/pkgs/by-name/re/redmine
##### breaking commit
##### https://github.com/NixOS/nixpkgs/commit/1105b34ec2b88e82fe35be9e6ba5c547487824b2
# pkgs_redmine_25-05_before-broken = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/c80c8f5ba65ceab4c7ec266293a2ce20a663d245.tar.gz") {
# config = config.nixpkgs.config;
# };
# in
## pkgs_master_redmine_fixed.redmine;
# pkgs_redmine_25-05_before-broken.redmine;
#### https://github.com/NixOS/nixpkgs/pull/424140
#### https://github.com/NixOS/nixpkgs/pull/424285
#### ve
};
}

View file

@ -0,0 +1,38 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
# fileSystems."/" =
# {
# device = "/dev/sda1";
# fsType = "ext4";
# };
# swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View file

@ -1,587 +0,0 @@
{ config, pkgs, modulesPath, ... }:
{
system.stateVersion = "21.11";
# system.stateVersion = "22.05";
imports = [
"${modulesPath}/virtualisation/proxmox-lxc.nix"
# /etc/nixos/goe.nix
# /etc/nixos/vat.nix
# /etc/nixos/pv.nix
];
proxmoxLXC = {
#### mit dieser konfiguration wird network stuff durch nix gemanaged
manageNetwork = true;
manageHostName = true;
};
systemd.suppressedSystemUnits = [
# "dev-mqueue.mount"
"sys-kernel-debug.mount"
# "sys-fs-fuse-connections.mount"
];
# environment.noXlibs = true;
# services.xserver.enable = false;
networking.enableIPv6 = false;
networking.useDHCP = false;
networking.interfaces.eth0.ipv4.addresses = [
{
address = "141.56.51.13";
prefixLength = 24;
}
];
networking.defaultGateway = "141.56.51.254";
networking.nameservers = [
"141.56.1.1"
"141.56.1.2"
];
networking.hostName = "wiki";
# networking.domain = "stura.htw-dresden.de";
# networking.fqdn = "${networking.hostName}.${networking.domain}";
# networking.fqdn = "wiki.stura.htw-dresden.de";
#### 2022-04-02 vater
#### Das MediaWiki laeuft auf "manuell" gesetzt auf der Zeitzone fuer Germany.
#### Die Datenbank wirft Fehlermeldungen unter Angabe der Zeitzone fuer UTC.
#### Daher wird versucht die Zeit fuer das System - und damit auch fuer die Datenbank - zu vereinheitlichen.
time.timeZone = "Europe/Berlin";
#### 2022-04-03 vater
#### andere klaegliche Versuche
# services.phpfpm.phpOptions = "date.timezone = \"Europe\/Berlin\"\n";
# services.httpd.phpOptions = "date.timezone = \"Europe\/Berlin\"\n";
#### https://nixos.org/manual/nixos/stable/#sec-upgrading-automatic
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = true;
# system.autoUpgrade.channel = https://nixos.org/channels/nixos-22.05;
#### https://nixos.wiki/wiki/Storage_optimization#Automatic
# nix.autoOptimiseStore = true;
nix.settings.auto-optimise-store = true;
nix.optimise.automatic = true;
nix.gc.automatic = true;
# nix.gc.options = "--delete-older-than 7";
#### 2022-10-31 vater: vermutlich hat das goeranh hinzugefuegt, da goeranh das haben will.
programs.tmux.enable = true;
#### 2022-11-01 vater: Ich hoerte bei der gestrigen Einarbeitung, dass PV gern (neo)vim benutzt.
programs.neovim.enable = true;
environment.systemPackages = with pkgs; [
#### Installation vom Paket imagemagick, um bei MediaWiki die Anpassung $wgUseImageMagick zu ermoeglichen
imagemagick
vim
];
services.mediawiki.enable = true;
#### todo setzen auf lts
#### services.mediawiki.package = pkgs.mediawiki-143;
services.mediawiki.passwordFile = "/var/lib/mediawiki/mediawiki-password";
services.mysql.enable = true;
services.mysql.package = pkgs.mariadb;
services.mysql.ensureDatabases = [ "mediawiki" ];
services.mysql.ensureUsers = [ { name = "mediawiki"; ensurePermissions."mediawiki.*" = "ALL PRIVILEGES"; } ];
services.mediawiki.database.tablePrefix = "sturawiki";
services.mediawiki.database.createLocally = false;
# services.mediawiki.database.passwordFile = "/run/keys/mediawiki-dbpassword";
services.mediawiki.database.passwordFile = "/var/lib/mediawiki/mediawiki-dbpassword";
#### 2024-02-17 vater:
#### trace: warning: The option `services.mediawiki.virtualHost' defined in `/etc/nixos/configuration.nix' has been renamed to `services.mediawiki.httpd.virtualHost'.
# services.mediawiki.virtualHost.hostName = "wiki.stura.htw-dresden.de";
# services.mediawiki.httpd.virtualHost.hostName = "wiki.stura.htw-dresden.de";
# services.mediawiki.virtualHost.hostName = "${config.networking.fqdn}";
# services.mediawiki.httpd.virtualHost.hostName = "${config.networking.fqdn}";
services.mediawiki.httpd.virtualHost.hostName = "wiki.htw.stura-dresden.de";
# services.mediawiki.virtualHost.adminAddr = "wiki@stura.htw-dresden.de";
# services.mediawiki.httpd.virtualHost.adminAddr = "wiki@stura.htw-dresden.de";
# services.mediawiki.virtualHost.adminAddr = "${config.networking.hostName}@${config.networking.domain}";
services.mediawiki.httpd.virtualHost.adminAddr = "${config.networking.hostName}@${config.networking.domain}";
# services.mediawiki.virtualHost.forceSSL = true;
services.mediawiki.httpd.virtualHost.forceSSL = true;
# services.mediawiki.virtualHost.enableACME = true;
services.mediawiki.httpd.virtualHost.enableACME = true;
#### 2024-10-07T13:37 admin@ (vat@)
#### https://pro.stura.htw-dresden.de/issues/1999#note-6
#### Der unfertige (offensichtlich nicht einmal auf die wesentlichen Funktionalitaeten gepruefte) "Versuch" soll mit der Deaktivierung erst einmal abgebrochen werden, um die Funktionaliaet wieder herzustellen.
## Definiert den Webserver für das Mediawiki|default apache
# services.mediawiki.webserver = "nginx";
#### 2024-10-07T23:42 admin@ (vat@)
#### Der Vorgaenger (Aktualisierung 24.05) ist nun durch. Daher teste ich mal die Option nginx. :-)
# services.mediawiki.webserver = "nginx";
## services.nginx.virtualHosts."${config.networking.fqdn}".forceSSL = true;
## services.nginx.virtualHosts."${config.networking.fqdn}".enableACME = true;
## services.nginx.virtualHosts."${config.networking.fqdn}" = {
# services.nginx.virtualHosts."wiki.stura.htw-dresden.de" = {
# forceSSL = true;
# enableACME = true;
# };
## services.mediawiki.nginx.hostName = "${config.networking.fqdn}";
# services.nginx.recommendedOptimisation = true;
# services.nginx.recommendedTlsSettings = true;
# services.nginx.recommendedProxySettings = true;
# services.nginx.recommendedGzipSettings = true;
##services.nginx.recommendedZstdSettings
##services.nginx.recommendedBrotliSettings
services.mediawiki.extensions = {
#### https://extdist.wmflabs.org/dist/extensions/
#### https://github.com/NixOS/nixos-wiki-infra/blob/main/modules/nixos-wiki/update-extensions.py
#### Hinzufuegen der Erweiterung Lockdown fuer die Moeglichkeit zum Einschraenken des Zugriffs auf Namensraeume nach Gruppen
#### https://www.mediawiki.org/wiki/Extension:Lockdown
#### https://www.mediawiki.org/wiki/Special:ExtensionDistributor/Lockdown
Lockdown = pkgs.fetchzip {
# url = "https://extdist.wmflabs.org/dist/extensions/Lockdown-REL1_43-7ac8966.tar.gz";
# url = "https://extdist.wmflabs.org/dist/extensions/Lockdown-REL1_44-af1f4df.tar.gz";
url = "https://extdist.wmflabs.org/dist/extensions/Lockdown-REL1_45-a46dbea.tar.gz";
sha256 = "sha256-zTTpbQiqudLILPSzmKGjKr6wZjh0YUttGmqwjPpAToc=";
};
#### Hinzufuegen der Erweiterung ConfirmEdit fuer eine zusaetzliche Bestaetigung bei Bearbeitungen, etwa um Herausforderungen (aka CAPTCHA) zu stellen
#### https://www.mediawiki.org/wiki/Extension:ConfirmEdit
#### Die Funktionalitaet der Erweiterung Interwiki ist anscheinend standardmaessiger Bestandteil (von MediaWiki (ab der Version 1.18)).
#### Hinzufuegen der Erweiterung QuestyCaptcha als eine Zusatz der Erweiterung ConfirmEdit fuer die Herausforderungen (aka CAPTCHA) zur textlichen Beanwortung von bestimmten Fragen
#### https://www.mediawiki.org/wiki/Extension:QuestyCaptcha
#### Der Zusatz QuestyCaptcha ist anscheinend standardmaessiger Bestandteil der Erweiterung ConfirmEdit.
#### ConfirmEdit = pkgs.fetchzip {
#### url = "https://extdist.wmflabs.org/dist/extensions/ConfirmEdit-REL1_43-6e00b43.tar.gz";
#### url = "https://extdist.wmflabs.org/dist/extensions/ConfirmEdit-REL1_44-e9c961f.tar.gz";
#### };
#### Hinzufuegen der Erweiterung ContributionScores fuer eine Statistik von Beitraegen nach Beitragenden
#### https://www.mediawiki.org/wiki/Extension:ContributionScores
ContributionScores = pkgs.fetchzip {
url = "https://extdist.wmflabs.org/dist/extensions/ContributionScores-REL1_45-cd4c94b.tar.gz";
sha256 = "sha256-8ClNtEQ66deKM1DsRYaaZ3KlRl4yCt6UhpXcozRQzQ8=";
};
#### Hinzufuegen der Erweiterung Interwiki fuer das Verwenden von Verweisen als eine Art Namensraum, wie beispielweise auf Wikipedia oder selbst festgelegte Verweise
#### https://www.mediawiki.org/wiki/Extension:Interwiki
#### Die Funktionalitaet der Erweiterung Interwiki ist anscheinend standardmaessiger Bestandteil (von MediaWiki (ab der Version 1.44)).
#### Interwiki = pkgs.fetchzip {
#### url = "https://extdist.wmflabs.org/dist/extensions/Interwiki-REL1_43-5512dd0.tar.gz";
#### };
#### Hinzufuegen der Erweiterung Cite fuer das Verwenden von Referenzen wie in der Wikipedia
#### https://www.mediawiki.org/wiki/Extension:Cite
#### Die Funktionalitaet der Erweiterung Interwiki ist anscheinend standardmaessiger Bestandteil (von MediaWiki (ab der Version 1.21)).
#### Cite = pkgs.fetchzip {
#### url = "https://extdist.wmflabs.org/dist/extensions/Cite-REL1_41-809bc89.tar.gz";
#### };
#### Hinzufuegen der Erweiterung UserMerge fuer das (Zusammenfueren und das) Loeschen von Konten (etwa durch SPAM)
#### https://www.mediawiki.org/wiki/Extension:UserMerge
UserMerge = pkgs.fetchzip {
# url = "https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-ed4a689.tar.gz";
url = "https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_45-446566b.tar.gz";
sha256 = "sha256-DTDKlzet3lThh/sRLucyb8b9lhK5FYZ+dMgwrThFFBM=";
};
};
services.mediawiki.extraConfig = ''
# TODO be
# Abgleich mit https://github.com/NixOS/nixpkgs/blob/nixos-22.05/nixos/modules/services/web-apps/mediawiki.nix
# Ueberfluessige Inhalte auskommentieren
# TODO en
########
#### Uhrzeit
########
#### https://www.mediawiki.org/wiki/Manual:$wgLocaltimezone
$wgLocaltimezone = 'Europe/Berlin';
########
#### Datenbank
########
#### (verpflichtender Eintrag fuer ein) Passwort fuer die Datenbank vom MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgDBpassword
$wgDBpassword = "PpKlIts";
#### (optionaler, aber bei der Einrichtung wohl verwendeter Eintrag fuer einen) zusaetzlicher Praefix vom MediaWiki fuer den Namen der Tabellen in der Datenbank, um Kollision bei der Bezeichnung mit anderen Anwendungen, die Datenbank nutzen zu vermeiden
#### https://www.mediawiki.org/wiki/Manual:$wgDBprefix
#### $wgDBprefix = ;
$wgDBprefix = "sturawiki";
########
#### Funktionalitaeten
########
#### https://www.mediawiki.org/wiki/Category:Path_variables
#### https://www.mediawiki.org/wiki/Manual:$wgDiff3
#### $wgDiff3 = "/usr/bin/diff3";
#### #### wenn es mal Probleme gibt
#### #### #### which diff3
#### $wgDiff3 = "/run/current-system/sw/bin/diff3";
#### https://www.mediawiki.org/wiki/Manual:$wgDiff
#### $wgDiff3 = "/usr/bin/diff";
#### #### wenn es mal Probleme gibt
#### #### #### which diff
#### $wgDiff = "/run/current-system/sw/bin/diff";
# TODO be
#### https://www.mediawiki.org/wiki/Manual:$wgFFmpegLocation
#### https://www.mediawiki.org/wiki/Manual:$wgFFprobeLocation
# TODO en
# TODO be
# braucht es das noch?
#### https://www.mediawiki.org/wiki/Manual:$wgLocalInterwikis
#### $wgLocalInterwiki = $wgSitename;
# TODO en
########
#### Allgemein
########
#### Aenderung der Bezeichnung vom Titel vom MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgSitename
#### $wgSitename = "MediaWiki";
$wgSitename = "Wiki StuRa HTW Dresden";
#### Aenderung der Bezeichnung vom standardmaessigen Namensraum der Seiten zum Projekt im MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgMetaNamespace
#### $wgMetaNamespace = "MediaWiki";
$wgMetaNamespace = "StuRa_HTW_Dresden";
#### $wgMetaNamespace = false;
#### Aenderung der Bezeichnung vom standardmaessigen Namensraum der Seiten fuer die Diskussion zu den Seiten zum Projektes im MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgMetaNamespaceTalk
#### $wgMetaNamespaceTalk = "MediaWiki_Diskussion";
$wgMetaNamespaceTalk = "StuRa_HTW_Dresden_Diskussion";
#### $wgMetaNamespaceTalk = false;
#### Aenderung vom Logo im MediaWiki
#### #### seit Version 1.35 veraltete Art zur Angabe der Quelle fuer das Logo im MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgLogo
#### $wgLogo = "/resources/assets/change-your-logo.svg";
// $wgLogo = "/var/lib/mediawiki/images/logo.png";
// $wgLogo = "/var/lib/mediawiki/customization/logo.png";
#### #### Angabe der Quelle fuerr das Logo im MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgLogos
#### $wgLogos = false;
$wgLogos = [
'1x' => "/images/logo.png",
'svg' => "/images/logo.svg",
];
// $wgLogos = "/var/lib/mediawiki/customization/logo.svg";
#### Hinzufuegen von einem Favicon fuer MediaWiki
#### #### Angabe der Quelle für das Favicon
#### https://www.mediawiki.org/wiki/Manual:$wgFavicon
$wgFavicon = "/images/favicon.png";
// $wgFavicon = "/var/lib/mediawiki/customization/favicon.png";
#### 2024-10-08 vat@
#### um das "neue" - MediaWiki Version 41 - standardmaessige Erscheinungsbild (vector-2022) vorerst durch das hinherige Erscheinungsbild (vector) zu ersetzen
#### https://www.mediawiki.org/wiki/Manual:$wgDefaultSkin
#### https://www.mediawiki.org/wiki/Manual:Skin_configuration
$wgDefaultSkin = 'vector';
#### Sprache vom MediaWiki
#### https://www.mediawiki.org/wiki/Manual:$wgLanguageCode
#### $wgLanguageCode = "en";
$wgLanguageCode = "de";
#### https://www.mediawiki.org/wiki/Manual:$wgEmergencyContact
$wgEmergencyContact = "wiki@stura.htw-dresden.de";
#### https://www.mediawiki.org/wiki/Manual:$wgPasswordSender
$wgPasswordSender = "wiki@stura.htw-dresden.de";
#### https://www.mediawiki.org/wiki/Manual:$wgUseInstantCommons
#### $wgUseInstantCommons = false;
$wgUseInstantCommons = true;
#### https://www.mediawiki.org/wiki/Manual:$wgEnotifUserTalk
#### $wgEnotifUserTalk = false;
$wgEnotifUserTalk = true;
#### https://www.mediawiki.org/wiki/Manual:$wgEnotifWatchlist
#### $wgEnotifWatchlist = false;
$wgEnotifWatchlist = true;
#### Option zum Erlauben vom Einbinden von Bildern von externen Quellen
#### https://www.mediawiki.org/wiki/Manual:$wgAllowExternalImages
$wgAllowExternalImages = true;
#### Option zum Erlauben vom Hochladen von Dateien
#### https://www.mediawiki.org/wiki/Manual:$wgEnableUploads
#### $wgEnableUploads = false;
$wgEnableUploads = true;
#### Option zum Erlauben vom Anpassen der Groesse von Bildern
#### https://www.mediawiki.org/wiki/Manual:$wgUseImageResize
# $wgUseImageResize = true;
$wgUseImageResize = true;
# TODO be
#### https://www.mediawiki.org/wiki/Manual:$wgUseImageMagick
#### $wgUseImageMagick = false;
$wgUseImageMagick = true;
#### https://www.mediawiki.org/wiki/Manual:$wgImageMagickConvertCommand
#### $wgImageMagickConvertCommand = "/usr/local/bin/convert";
$wgImageMagickConvertCommand = "/run/current-system/sw/bin/convert";
# TODO en
# TODO be
#### https://www.mediawiki.org/wiki/Category:MediaWiki_configuration_settings_still_in_use
#### https://www.mediawiki.org/wiki/Manual:$wgAdvertisedFeedTypes
# TODO en
# TODO be
#### https://www.mediawiki.org/wiki/Manual:$wgLocalInterwiki
// $wgLocalInterwiki = $wgSitename;
# TODO en
########
#### Erweiterungen
########
#### Erweiterung zum Stellen von einer Herausforderung, um unerwünschte Änderungen durch automaisierte Systeme zu verhindern
#### https://www.mediawiki.org/wiki/Extension:ConfirmEdit
#### Erweiterung zum Stellen von einer Herausforderung durch das Stellen von Fragen
#### https://www.mediawiki.org/wiki/Extension:QuestyCaptcha
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);
#### 2025-06-20 vat
#### Es heißt, dass $wgCaptchaClass direkt angegeben werden muss.
#### https://www.mediawiki.org/wiki/Extension:ConfirmEdit#CAPTCHA_types
$wgCaptchaClass = 'QuestyCaptcha';
$wgCaptchaTriggers['edit'] = true;
$wgCaptchaTriggers['create'] = true;
$wgCaptchaTriggers['createtalk'] = true;
$wgCaptchaTriggers['addurl'] = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin'] = true;
$wgCaptchaQuestions = [
#### 2025-06-21 vat
#### Wir haben ein Problem mit SPAM!
#### Weitere moeglich Fragen und Antworten, wenn die Anforderungen zur Loesung hoeher weden muessen.
# "Nachname der Leitung vom Prorektorat Lehre und Studium seit 2025?" => "Franze",
# "Vorname der Leitung vom Prorektorat Lehre und Studium seit 2025?" => "Andreas",
# "Raum (im StuRa) mit einem Herd?" => "A103",
# "Raum (im StuRa) mit einem Billard-Tisch?" => "A001",
## "Raum (im StuRa) mit einigen Servern?" => "A008",
# "Raum (im StuRa) vor dem Sitzungsraum?" => [
# 'A104',
# 'A107'
# ],
#### Zum Test werden alle Verfahren, deren Loesung eine einzelne Zahl ist, deaktiviert. (Das ist ein erster troeger Versuch.)
# "Welche Anzahl an Fakultäten hat unsere Hochschule geschaffen (als Zahl, nicht als Wort)?" => "8",
"Welche Anzahl an Referaten hat unser StuRa geschaffen (als Zahl, nicht als Wort)?" => "11",
# "Welche Anzahl an Mitgliedern im Vorstand hat unser StuRa geschaffen (als Zahl, nicht als Wort)?" => "3",
# "Welche Anzahl an Mitgliedern im Präsidium hat unser StuRa geschaffen (als Zahl, nicht als Wort)?" => [
# '3',
# '4',
# '5'
# ],
"Welche Hausnummer hat das Gebäude in dem unser StuRa sitzt (als Zahl, nicht als Wort)?" => "23"
];
#### Erweiterung zum (Zusammenfuehren und zum) Loeschen von Konten
#### https://www.mediawiki.org/wiki/Extension:ContributionScores
wfLoadExtension( 'UserMerge' );
$wgGroupPermissions['bureaucrat']['usermerge'] = true;
$wgUserMergeProtectedGroups = [
'sysop',
'bureaucrat'
];
// $wgGroupPermissions['sysop']['deletelogentry'] = true;
$wgGroupPermissions['bureaucrat']['deletelogentry'] = true;
// $wgGroupPermissions['sysop']['deleterevision'] = true;
$wgGroupPermissions['bureaucrat']['deleterevision'] = true;
#### (standardmaessige) Erweiterung Interwiki fuer das Verwenden von Verweisen als eine Art Namensraum, wie beispielweise auf Wikipedia oder selbst festgelegte Verweise
#### https://www.mediawiki.org/wiki/Extension:Interwiki
wfLoadExtension( 'Interwiki' );
#### uebliche Loesung fuer das Ermoeglichen der Verwaltung von Eintraegen fuer Interwiki durch das Berechtigen der standardmaessigen administrativen Gruppe sysop fuer interwiki
$wgGroupPermissions['sysop']['interwiki'] = true;
#### (standardmaessige) Erweiterung Cite fuer das Verwenden von Referenzen wie in der Wikipedia
#### https://www.mediawiki.org/wiki/Extension:Cite
wfLoadExtension( 'Cite' );
#### Erweiterung zum Bewertung der Beitragenden im MediaWiki
#### https://www.mediawiki.org/wiki/Extension:ContributionScores
wfLoadExtension( 'ContributionScores' );
$wgContribScoreIgnoreBots = true;
#### #2506
# $wgContribScoreIgnoreBlockedUsers = true;
$wgContribScoreIgnoreBlockedUsers = false;
$wgContribScoreIgnoreUsernames = [];
$wgContribScoresUseRealName = true;
$wgContribScoreDisableCache = false;
$wgContribScoreUseRoughEditCount = false;
$wgContribScoreReports = [
[ 7, 50 ],
[ 30, 50 ],
[ 0, 50 ]
];
########
#### Namensraeume
########
### standardmaessiger Namensraum fuer den StuRa mit Diskussion
define("NS_STURA", 100);
$wgExtraNamespaces[NS_STURA] = "StuRa";
define("NS_STURA_TALK", 101);
$wgExtraNamespaces[NS_STURA_TALK] = "StuRa_Diskussion";
### erganzender Namensraum fuer interne (nicht oeffentliche) Inhalte des StuRa mit Diskussion
define("NS_INTERN", 102);
$wgExtraNamespaces[NS_INTERN] = "Intern";
define("NS_INTERN_TALK", 103);
$wgExtraNamespaces[NS_INTERN_TALK] = "Intern_Diskussion";
### erganzender Namensraum fuer administrative Inhalte (vom Wiki) mit Diskussion
define("NS_ADMIN", 104);
$wgExtraNamespaces[NS_ADMIN] = "Admin";
define("NS_ADMIN_TALK", 105);
$wgExtraNamespaces[NS_ADMIN_TALK] = "Admin_Diskussion";
### erganzender Namensraum fuer Inhalte zu einzelnen Personen (nicht oeffentliche) mit Diskussion
define("NS_PERSON", 106);
$wgExtraNamespaces[NS_PERSON] = "Person";
define("NS_PERSON_TALK", 107);
$wgExtraNamespaces[NS_PERSON_TALK] = "Person_Diskussion";
### erganzender Namensraum fuer Inhalte von faranto mit Diskussion
define("NS_FARANTO", 108);
$wgExtraNamespaces[NS_FARANTO] = "Faranto_e._V.";
define("NS_FARANTO_TALK", 109);
$wgExtraNamespaces[NS_FARANTO_TALK] = "Faranto_e._V._Diskussion";
### begin Namensraeume fuer die Fachschaft ET
define("NS_ET", 212);
$wgExtraNamespaces[NS_ET] = "ET";
define("NS_ET_TALK", 312);
$wgExtraNamespaces[NS_ET_TALK] = "ET_Diskussion";
define("NS_ET_INTERN", 412);
$wgExtraNamespaces[NS_ET_INTERN] = "ET_intern";
define("NS_ET_INTERN_TALK", 512);
$wgExtraNamespaces[NS_ET_INTERN_TALK] = "ET_intern_Diskussion";
### end Namensraeume fuer die Fachschaft ET
### begin Namensraeume fuer die Fachschaft LUC
define("NS_LUC", 216);
$wgExtraNamespaces[NS_LUC] = "LaUCh";
define("NS_LUC_TALK", 316);
$wgExtraNamespaces[NS_LUC_TALK] = "LaUCh_Diskussion";
define("NS_LUC_INTERN", 416);
$wgExtraNamespaces[NS_LUC_INTERN] = "LaUCh_intern";
define("NS_LUC_INTERN_TALK", 516);
$wgExtraNamespaces[NS_LUC_INTERN_TALK] = "LaUCh_intern_Diskussion";
### end Namensraeume fuer die Fachschaft LUC
### end Namensraueme fuer einzelne Gruppen
########
#### Gruppen und Berechtigungen
########
### ergaenzende Gruppen intern fuer das Zuweisen vom Recht zur Benutzung des Namensraumes NS_INTERN und NS_INTERN_TALK begin
// Implicit group for intern (copy of group user)
$wgGroupPermissions['intern']['move'] = true;
$wgGroupPermissions['intern']['move-subpages'] = true;
$wgGroupPermissions['intern']['move-rootuserpages'] = true; // can move root userpages
//$wgGroupPermissions['intern']['movefile'] = true; // Disabled for now due to possible bugs and security concerns
$wgGroupPermissions['intern']['read'] = true;
$wgGroupPermissions['intern']['edit'] = true;
$wgGroupPermissions['intern']['createpage'] = true;
$wgGroupPermissions['intern']['createtalk'] = true;
$wgGroupPermissions['intern']['writeapi'] = true;
$wgGroupPermissions['intern']['upload'] = true;
$wgGroupPermissions['intern']['reupload'] = true;
$wgGroupPermissions['intern']['reupload-shared'] = true;
$wgGroupPermissions['intern']['minoredit'] = true;
$wgGroupPermissions['intern']['purge'] = true; // can use ?action=purge without clicking "ok"
$wgGroupPermissions['intern']['sendemail'] = true;
### ergaenzende Gruppen intern fuer das Zuweisen vom Recht zur Benutzung des Namensraumes NS_ET_INTERN und NS_ET_INTERN_TALK begin
#### triviales Kopieren und Anpassen der Gruppe intern
$wgGroupPermissions['ET']['move'] = true;
$wgGroupPermissions['ET']['move-subpages'] = true;
$wgGroupPermissions['ET']['move-rootuserpages'] = true; // can move root userpages
//$wgGroupPermissions['ET']['movefile'] = true; // Disabled for now due to possible bugs and security concerns
$wgGroupPermissions['ET']['read'] = true;
$wgGroupPermissions['ET']['edit'] = true;
$wgGroupPermissions['ET']['createpage'] = true;
$wgGroupPermissions['ET']['createtalk'] = true;
$wgGroupPermissions['ET']['writeapi'] = true;
$wgGroupPermissions['ET']['upload'] = true;
$wgGroupPermissions['ET']['reupload'] = true;
$wgGroupPermissions['ET']['reupload-shared'] = true;
$wgGroupPermissions['ET']['minoredit'] = true;
$wgGroupPermissions['ET']['purge'] = true; // can use ?action=purge without clicking "ok"
$wgGroupPermissions['ET']['sendemail'] = true;
### ergaenzende Gruppen intern fuer das Zuweisen vom Recht zur Benutzung des Namensraumes NS_LUC_INTERN und NS_LUC_I
#### triviales Kopieren und Anpassen der Gruppe intern
$wgGroupPermissions['LUC']['move'] = true;
$wgGroupPermissions['LUC']['move-subpages'] = true;
$wgGroupPermissions['LUC']['move-rootuserpages'] = true; // can move root userpages
//$wgGroupPermissions['LUC']['movefile'] = true; // Disabled for now due to possible bugs and security
$wgGroupPermissions['LUC']['read'] = true;
$wgGroupPermissions['LUC']['edit'] = true;
$wgGroupPermissions['LUC']['createpage'] = true;
$wgGroupPermissions['LUC']['createtalk'] = true;
$wgGroupPermissions['LUC']['writeapi'] = true;
$wgGroupPermissions['LUC']['upload'] = true;
$wgGroupPermissions['LUC']['reupload'] = true;
$wgGroupPermissions['LUC']['reupload-shared'] = true;
$wgGroupPermissions['LUC']['minoredit'] = true;
$wgGroupPermissions['LUC']['purge'] = true; // can use ?action=purge without clicking "ok"
$wgGroupPermissions['LUC']['sendemail'] = true;
### ergaenzende Gruppen intern fuer das Zuweisen vom Recht zur Benutzung des Namensraumes NS_ET_INTERN und NS_ET_INTERN_TALK end
// To grant sysops permissions to edit interwiki data
$wgGroupPermissions['sysop']['interwiki'] = true;
########
#### Namensraeume und Einschraenkungen
########
$wgNamespacePermissionLockdown[NS_INTERN]['*'] = array('intern');
$wgNamespacePermissionLockdown[NS_INTERN_TALK]['*'] = array('intern');
$wgNamespacePermissionLockdown[NS_PERSON]['*'] = array('intern');
$wgNamespacePermissionLockdown[NS_PERSON_TALK]['*'] = array('intern');
$wgNamespacePermissionLockdown[NS_ET_INTERN]['*'] = array('ET');
$wgNamespacePermissionLockdown[NS_ET_INTERN_TALK]['*'] = array('ET');
$wgNamespacePermissionLockdown[NS_LUC_INTERN]['*'] = array('LUC');
$wgNamespacePermissionLockdown[NS_LUC_INTERN_TALK]['*'] = array('LUC');
# TODO be
#### coe foo
# $wgShowExceptionDetails = true;
# $wgDebugToolbar = true;
# $wgShowDebug = true;
# $wgDevelopmentWarnings = true;
# $wgShowSQLErrors = true;
# $wgShowDBErrorBacktrace = true;
# TODO en
'';
#### login zeit verlängern goeranh 10.12.2023
services.phpfpm.phpOptions = "session.cookie_lifetime = 10800";
networking.firewall.allowedTCPPorts = [
80
443
];
# security.acme.email = "cert@stura.htw-dresden.de";
security.acme.defaults.email = "cert@stura.htw-dresden.de";
security.acme.acceptTerms = true;
}