diff --git a/hosts/redmine/default.nix b/hosts/redmine/default.nix index a2f50b5..3a8ccba 100644 --- a/hosts/redmine/default.nix +++ b/hosts/redmine/default.nix @@ -1,60 +1,280 @@ -{ - config, - pkgs, - lib, - modulesPath, - ... -}: +{ config, pkgs, lib, ... }: { +#services.openssh.enable = true; imports = [ - "${modulesPath}/virtualisation/proxmox-lxc.nix" + + + ]; + + +############################ +#### NixOS +############################ + system.stateVersion = "22.11"; - networking = { - hostName = "pro"; - domain = "htw.stura-dresden.de"; - firewall.allowedTCPPorts = [ - 80 - 443 - ]; + 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; + + +############################ +#### System +############################ + + proxmoxLXC.manageHostName = true; + networking.hostName = "pro"; + networking.domain = "stura.htw-dresden.de"; + +# 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 = { + 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"; }; - 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; - }; - }; - }; - nginx = { - enable = true; - logError = "/dev/null emerg"; - appendHttpConfig = '' - access_log off; - ''; - 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; - }; - }; +#### 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 = '' + access_log off; + ''; + +#### Wir verwenden die fuer NixOS ueblichen Empfehlung fuer Nginx. + services.nginx.recommendedOptimisation = true; + services.nginx.recommendedGzipSettings = true; +##### Mit der Anwendung Nginx soll die Erreichbarkeit der Anwendung Redmine (standardmaessig an Port 3000) (auf erwartbaren Weg) moeglich machen. + 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; + +#### 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..default + default = true; + 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..default + locations."/" = { + proxyPass = "http://127.0.0.1:${toString config.services.redmine.port}"; + }; + forceSSL = true; + enableACME = true; + }; + +#### Die Verwendung von TLS braucht ein (valides) Zertifikat. +#### Beim StuRa verwenden wir den ((auch bei NixOS) standardmaessigen) Dienst von letsencrypt.org. +#### Bereitstellen der Informationen (Erreichbarkeit und Einwilligung) fuer letsencrypt.org + security.acme.defaults.email = "cert@stura.htw-dresden.de"; + security.acme.acceptTerms = true; + +# networking.firewall.allowedTCPPorts = [ 80 443 3000 ]; + networking.firewall.allowedTCPPorts = [ 22 80 443 ]; + + +############################ +#### 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 + +#### 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 { +# master = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/d21825f9cf895942e057230c56625e2290d1b149.tar.gz") { +# config = config.nixpkgs.config; +# }; +# }; +# }; +## environment.systemPackages = with pkgs; [ +## unstable.redmine +## ]; +## +# + 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 + } diff --git a/hosts/redmine/hardware-configuration.nix b/hosts/redmine/hardware-configuration.nix deleted file mode 100644 index b92ae55..0000000 --- a/hosts/redmine/hardware-configuration.nix +++ /dev/null @@ -1,38 +0,0 @@ -# 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"; -}