staging.inyokaproject.org

Neueste Artikel

gestern

Wer in MMO-20044 eine Forschung startet und eine Stunde später zurückkommt, findet seinen Forscher seit 40 Minuten untätig vor. Die Forschung war längst fertig, der nächste Schritt wartet auf einen Klick. So funktioniert es bisher: eine Aktion zur Zeit, manuell weiterschalten.

Eine erste Ingame-Umfrage hat ergeben, dass 60 Prozent der Spieler Forschung und Reisen gern parallel laufen lassen würden. Jetzt geht es um die Frage, wie genau das aussehen soll. Drei Varianten stehen zur Wahl.

Variante 1: Status quo
Alles bleibt wie es ist. Eine Aktion zur Zeit, manuell nachsteuern. Wer reist, kann nicht forschen. Wer fertig ist, muss selbst Hand anlegen.

Variante 2: Vollständige Warteschlange
Bis zu vier Aktionen lassen sich vorplanen. Flotte (Reisen, Besiedeln) und Labor (Forschung) haben je eine eigene Schlange und laufen unabhängig voneinander. Eine Reisekette und drei Forschungen lassen sich in einem Zug einreihen, der Rest läuft automatisch durch.

Variante 3: Nur parallel, keine Vorplanung
Forschung und Reise dürfen gleichzeitig laufen, aber ohne Warteschlange. Kein gegenseitiges Blockieren mehr, aber den nächsten Schritt muss man weiterhin selbst starten.

Der Unterschied zwischen Variante 2 und 3 liegt im Komfort: bei Variante 2 kann man mehrere Schritte im Voraus einreihen und das Spiel arbeitet allein weiter, bei Variante 3 muss man trotzdem regelmäßig vorbeischauen.

Die Abstimmung läuft im Spiel unter dem Menüpunkt “Abstimmungen”. Jeder angemeldete Spieler hat eine Stimme, das Ergebnis ist erst nach Ablauf sichtbar.

12. Juni 2026

Ein modernes Linux-Phone im vertrauten Design der ersten iPhones? Mithilfe von iGTK ist es möglich ein postmarkesOS Gerät mit der GNOME Oberfläche in ein Retro-Handy zu verwandeln.



Mein erstes Smartphone war tatsächlich ein iPhone. Damals präsentierte es ein einmaliges Konzept und war das erste Handy, welches ausschließlich über den Touchscreen bedient wurde. Auch die Qualität der Hardware überzeugte und mein altes iPhone habe ich tatsächlich immer noch und es befindet sich in einem neuwertigem Zustand. Zuletzt hatte ich es gejailbreaked um überhaupt noch Software darauf installieren zu können. Wirklich nutzbar, ausser für eine Runde Angry Birds, ist es heute natürlich nicht mehr.

Umso eher aber mein Pixel 3a, das in den letzten Monaten eine sehr gute Unterstützung durch postmarketOS erfahren hat. Und sogar bei Ubuntu Touch werkelt Alfred aktuell an einer Portierung auf eine aktuellere Android-Basis, um VoLTE-Support zu ermöglichen.

Doch heute widmen wir uns einem anderen Abenteuer. Mein Ziel war es, das Pixel 3a mit GNOME (nicht Phosh, das habe ich nicht getestet), möglichst so aussehen zu lassen wie mein altes iPhone. Ermöglicht hat mir dies der unermüdliche Einsatz von Krafting der seine Fortschritte in einem Git-Repository mit uns teilt.

Als Basis habe ich postmarketOS mit GNOME in der Version 26.06 gewählt. Die Installation der Theme ist denkbar einfach und wird ausführlich im Git-Repository beschrieben.

Alternativer Video-Link: https://fediserve.de/preview.php?v=SjGUN6pJe5w

Das Ergebnis kann sich wirklich sehen lassen. Zu beachten ist, dass es sich um eine stetig voranschreitende Entwicklung handelt. So wird beispielsweise gerade an einer passenden Shell Theme gearbeitet.

Für mich sind es Projekte wie dieses, die das Herz von Freier Software und Linux verkörpern. Die Möglichkeit das eigene System bis ins letzte Detail an die eigenen Wünsche anzupassen, ist sonst nur schwer zu finden.

Wie ist es mit dir? Hast du auch schon Stunden damit verbracht, dein System zu themen? Oder hast du schon die Möglichkeiten der unterschiedlichen m Desktop-Umgebungen auf einem Linux-Handy ausgetestet? Teile deine Erfahrungen gerne in den Kommentaren und im Fediverse.


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

In meinem letzten Beitrag der NixOS-Reihe zeige ich, wie man einen einzelnen Rechner aus dem gemeinsamen Setup herauslöst und individuell konfiguriert – ohne die anderen Rechner auch nur zu berühren.



Wer meiner Reihe gefolgt ist, hat mittlerweile vielleicht mehrere Rechner mit identischer Konfiguration am Laufen. Eine configuration.nix für alle, eine home.nix für alle – sauber, simpel, reproduzierbar. Das ist bereits beeindruckend und für viele Anwendungsfälle völlig ausreichend.

Aber die Realität ist eben manchmal: drei Rechner, drei unterschiedliche Charaktere.

Es gibt viele Gründe und Szenarien für eine abweichende Konfiguration - als Beispiel nehme ich hier einfach mal meine Situation - das Vorgehen ist aber exemplarisch und vollständig auf andere Szenarien übertragbar.

Rücksicht nehmen muss ich auf einen geliebten alten Wegbegleiter, ein alter Lenovo mit nur 8 GB und einem schwachen Pentium Prozessor. Er ist das schwächste Glied in meiner kleinen Flotte und leidet unter der identischen Konfiguration, die meine leistungsfähigen Dell-Rechner problemlos stemmen. Fotoverwaltung mit tausenden RAW-Dateien - oder gar deren Entwicklung? Auf dem Lenovo undenkbar. Synchronisation mit mehreren Cloud-Speichern im Hintergrund? Verschwendete Ressourcen. Und der LanguageTool-Server mit seiner Java-Implementierung, die gerne mal fast 2 GB RAM schluckt – den will ich auf dem schwächsten Rechner erst recht nicht.

Dazu kommt: Der Lenovo ist ein Detachable, also ein Gerät das ich meist als Tablet weitab einer Steckdose nutze. Da möchte ich einen Energieverwaltungs-Button der wirklich funktioniert - manchmal muss ich die volle Power nämlich auch im Akkubetrieb zuschalten können. Mit TLP ist der Energieverwaltungs-Button bekanntlich wirkungslos, weil absichtlich lahm gelegt. TLP übernimmt nämlich die Kontrolle vollautomatisch über die CPU-Taktung und ignoriert was ich z.B. über GNOME einstellen möchte.

Jetzt könnte man auf die Idee kommen, die configuration.nix mit Bedingungen zu pflastern: "wenn Lenovo, dann dies, sonst das". Das ist aber der Weg in die Unübersichtlichkeit - und Unübersichtlichkeit ist nicht "Nix-like", wie du dir anhand des bisher Dargestellten sicher denken kannst. NixOS hat eine elegantere Antwort parat.


Das Prinzip: additive Module

In NixOS lassen sich mehrere Konfigurationsdateien zu einem System zusammensetzen. Statt eine einzige große configuration.nix mit Ausnahmen vollzustopfen, addiert man für den Lenovo einfach eine weitere kleine Datei obendrauf. Die configuration.nix bleibt vollständig unangetastet. Die Dell-Rechner bemerken von alldem nichts.

Das Ergebnis sieht so aus:

/etc/nixos/
├── flake.nix                          ← angepasst
├── configuration.nix                  ← unverändert (gilt für alle)
├── home.nix                           ← unverändert (gilt für meine zwei Dell)
├── lenovo-system.nix                  ← NEU: Lenovo-spezifisch (System)
├── home-lenovo.nix                    ← NEU: Lenovo-spezifisch (Benutzer)
├── hardware-configuration-dell5320.nix
├── hardware-configuration-dellpro.nix
└── hardware-configuration-lenovo.nix

Zwei neue Dateien. Mehr nicht.


Schritt 1: lenovo-system.nix erstellen

Diese Datei enthält ausschließlich die Dinge, die auf dem Lenovo anders sein sollen als in der configuration.nix. Alles andere – GNOME, Drucker, Sprache, Pakete – bleibt unverändert aus der gemeinsamen Konfiguration.

Die folgenden Dateien spiegeln meine eigene Konfiguration wider, sind also nur als Beispiele zu sehen. Das Grundprinzip sollte dir dadurch aber klar werden und dich zu einer individuellen Umsetzung auf deine Rahmenbedingungen befähigen.

Ich habe mich entschlossen meine Konfigurationsdateien weitgehend ungekürzt hier wiederzugeben. Das ist für die Lesbarkeit des Artikels zwar ungünstig, aber hilfreich für alle, welche damals meine Setup-Dateien als Ausgangspunkt für die eigene Konfiguration genutzt haben.

sudo nano /etc/nixos/lenovo-system.nix
# ============================================================
# Lenovo-spezifische Systemkonfiguration
# Ergänzt und überschreibt configuration.nix nur dort,
# wo der Lenovo andere Einstellungen benötigt.
# ============================================================

{ config, pkgs, lib, ... }:

{
  # ─────────────────────────────────────────
  # TLP deaktivieren – es überschreibt den GNOME-Energieprofil-Button.
  # lib.mkForce ist nötig um den Wert aus configuration.nix zu überschreiben.
  # ─────────────────────────────────────────
  services.tlp.enable = lib.mkForce false;

  # ─────────────────────────────────────────
  # Power Profiles Daemon aktivieren – er steuert die CPU-Leistungsstufen
  # und integriert sich vollständig in GNOME. Der Energieprofil-Button
  # oben rechts in GNOME funktioniert damit wieder.
  # ─────────────────────────────────────────
  services.power-profiles-daemon.enable = lib.mkForce true;

  # ─────────────────────────────────────────
  # Intel Thermaldienst
  # Schützt die CPU vor Überhitzung auf schwacher Hardware.
  # ─────────────────────────────────────────
  services.thermald.enable = true;
}

Wie wirkt hier lib.mkForce? Wenn zwei NixOS-Module dieselbe Option setzen, gibt es normalerweise einen Konflikt. lib.mkForce sagt NixOS: "Diese Datei gewinnt – egal was andere Module sagen." Das ist genau das richtige Werkzeug um Einstellungen aus der gemeinsamen configuration.nix für einen einzelnen Rechner zu überschreiben.


Schritt 2: home-lenovo.nix erstellen

Hier liegt der eigentliche Hebel für die Ressourcenschonung. Statt die gemeinsame home.nix mit Ausnahmen zu belasten, erstellen wir eine eigene, schlanke Variante.

Wie gesagt, hier nochmal meine (fast) vollständige originale home.nix mit allen Skripten - jetzt ergänzt mit Markierungen zu den Stellen, die sich geändert haben und den entsprechenden Auskommentierungen.

sudo nano /etc/nixos/home-lenovo.nix
# ============================================================
# Home Manager Konfiguration – Lenovo)
# Schlanke Version ohne LanguageTool, Fotosoftware und Clouds.
# ============================================================

{ config, pkgs, pkgs-unstable, ... }:

{
  home.username      = "dein-username";    # anpassen!
  home.homeDirectory = "/home/dein-username";    # anpassen!

  # Nie die Erstinstallations-Version ändern, auch nicht nach Versionssprung!
  home.stateVersion = "25.11";

  programs.home-manager.enable = true;

  # ─────────────────────────────────────────
  # Benutzerprogramme – schlanke Auswahl
  # ─────────────────────────────────────────
  home.packages = [

    # ── Büro (unstable) ───────────────────
    pkgs-unstable.libreoffice-fresh    # Office-Suite
    pkgs-unstable.hunspell             # Rechtschreibprüfung
    pkgs-unstable.hunspellDicts.de_DE  # Deutsches Wörterbuch
    pkgs-unstable.mythes               # Thesaurus
    # languagetool  ← bewusst weggelassen: Java-Server, ~2 GB RAM

    # ── Kommunikation (unstable) ──────────
    pkgs-unstable.thunderbird          # E-Mail
    pkgs-unstable.nextcloud-client
    # weitere Clouddienste         ← nicht benötigt

    # ── Notizen (unstable) ────────────────
    pkgs-unstable.obsidian             # Markdown-Notizen (unfree)

    # ── Datensicherung (unstable) ─────────
    # pkgs-unstable.pika-backup    ← bewusst weggelassen

    # ── Fotografie ────────────────────────
    # pkgs-unstable.rapidraw  ← nicht benötigt
    # pkgs-unstable.digikam   ← nicht benötigt

    # ── Shell & Tools (stable) ────────────
    pkgs.starship
    pkgs.nix-output-monitor
    pkgs.nvd

  ];

  # LanguageTool-Dienst bewusst nicht gestartet
  # (spart ~2 GB RAM auf schwacher Hardware)

  # ─────────────────────────────────────────
  # Git – Benutzerkonfiguration
  # ─────────────────────────────────────────
  programs.git = {
    enable = true;
    settings = {
      user.email = "deine.mail@für.codeberg";    # anpassen!
      user.name  = "dein-username";    # anpassen!
    };
  };

  # ─────────────────────────────────────────
  # SSH – Konfiguration für Codeberg
  # ─────────────────────────────────────────
  programs.ssh = {
    enable              = true;
    enableDefaultConfig = false;
    matchBlocks."codeberg.org" = {
      hostname     = "codeberg.org";
      user         = "git";
      identityFile = "~/.ssh/id_ed25519";
    };
  };

  # ─────────────────────────────────────────
  # GTK-Theme (Arc)
  # ─────────────────────────────────────────
  gtk = {
    enable = true;
    theme       = { name = "Arc";     package = pkgs.arc-theme; };
    iconTheme   = { name = "Papirus"; package = pkgs.papirus-icon-theme; };
    cursorTheme = { name = "Adwaita"; size = 24; };
  };

  # ─────────────────────────────────────────
  # XDG User Directories – Ordner auf Deutsch
  # ─────────────────────────────────────────
  xdg.userDirs = {
    enable            = true;
    createDirectories = true;
    desktop     = "${config.home.homeDirectory}/Schreibtisch";
    documents   = "${config.home.homeDirectory}/Dokumente";
    download    = "${config.home.homeDirectory}/Downloads";
    music       = "${config.home.homeDirectory}/Musik";
    pictures    = "${config.home.homeDirectory}/Bilder";
    publicShare = "${config.home.homeDirectory}/Öffentlich";
    templates   = "${config.home.homeDirectory}/Vorlagen";
    videos      = "${config.home.homeDirectory}/Videos";
  };

  # ─────────────────────────────────────────
  # Fish Shell
  # ─────────────────────────────────────────
  programs.fish = {
    enable = true;

    interactiveShellInit = ''
      starship init fish | source
    '';

    shellAliases = {
      ".."          = "cd ..";
      "..."         = "cd ../..";
      ll            = "ls -lah";
      nix-clean-all = "sudo nix-collect-garbage -d";
    };

    functions = {

      rebuild = {
        description = "System auf diesem Rechner neu bauen";
        body = ''
          sudo nixos-rebuild switch --flake /etc/nixos#(hostname) 2>&1 | nom
        '';
      };

      update-push = {
        description = "NixOS aktualisieren und auf Codeberg sichern";
        body = ''
          echo "────────────────────────────────────────────"
          echo "  NixOS Update + Store bereinigen + Git Push"
          echo "────────────────────────────────────────────"

          cd /etc/nixos

          if test -e result
            sudo rm -f result
          end
          if test -f .gitignore
            grep -q '^result$' .gitignore
            or echo "result" | sudo tee -a .gitignore >/dev/null
          else
            echo "result" | sudo tee .gitignore >/dev/null
          end
          sudo git rm -r --cached result 2>/dev/null
          or true

          echo ""
          echo "→ Schritt 1/5: flake.lock aktualisieren..."
          sudo nix flake update
          or return 1

          echo ""
          echo "→ Schritt 2/5: System bauen und aktivieren..."
          set old_system (readlink -f /run/current-system)
          sudo nixos-rebuild switch --flake /etc/nixos#(hostname) 2>&1 | nom
          if test $pipestatus[1] -ne 0
            echo "✗ Fehler beim Rebuild."
            return 1
          end

          echo ""
          echo "→ Schritt 3/5: Paketänderungen anzeigen..."
          nvd diff $old_system /run/current-system

          echo ""
          echo "→ Schritt 4/5: Nix-Store bereinigen..."
          sudo nix-collect-garbage --delete-older-than 30d
          or return 1

          echo ""
          echo "→ Schritt 5/5: Auf Codeberg sichern..."
          sudo git add -A
          sudo git commit -m "System aktualisiert "(date +%Y-%m-%d)
          or true
          sudo git push origin master
          and begin
            echo "✓ Fertig!"
            return 0
          end

          echo "✗ Push fehlgeschlagen. Bitte später erneut versuchen."
          return 1
        '';
      };

      pull-update = {
        description = "Konfiguration von Codeberg holen und System bauen";
        body = ''
          echo "──────────────────────────────────────"
          echo "  Git Pull + NixOS Rebuild + Cleanup  "
          echo "──────────────────────────────────────"

          cd /etc/nixos

          if test -e result
            sudo rm -f result
          end
          if test -f .gitignore
            grep -q '^result$' .gitignore
            or echo "result" | sudo tee -a .gitignore >/dev/null
          else
            echo "result" | sudo tee .gitignore >/dev/null
          end
          sudo git rm -r --cached result 2>/dev/null
          or true

          echo ""
          echo "→ Schritt 1/4: Konfiguration von Codeberg holen..."
          sudo git fetch origin
          or return 1
          sudo git reset --hard origin/master
          or return 1

          echo ""
          echo "→ Schritt 2/4: System bauen und aktivieren..."
          set old_system (readlink -f /run/current-system)
          sudo nixos-rebuild switch --flake /etc/nixos#(hostname) 2>&1 | nom
          if test $pipestatus[1] -ne 0
            echo "✗ Fehler beim Rebuild."
            return 1
          end

          echo ""
          echo "→ Schritt 3/4: Paketänderungen anzeigen..."
          nvd diff $old_system /run/current-system

          echo ""
          echo "→ Schritt 4/4: Nix-Store bereinigen..."
          sudo nix-collect-garbage --delete-older-than 30d
          or return 1

          echo ""
          echo "✓ Fertig!"
        '';
      };

    };
  };

  # ─────────────────────────────────────────
  # GNOME-Einstellungen via dconf
  # ─────────────────────────────────────────
  dconf.settings = {

    "org/gnome/desktop/interface" = {
      color-scheme = "default";
      cursor-theme = "Adwaita";
    };

    "org/gnome/desktop/wm/preferences" = {
      button-layout = "appmenu:minimize,maximize,close";
    };

    "org/gnome/settings-daemon/plugins/color" = {
      night-light-enabled            = false;
      night-light-schedule-automatic = false;
      night-light-schedule-from      = 22.0;
      night-light-schedule-to        = 7.0;
      night-light-temperature        = 4000;
    };

    "org/gnome/desktop/peripherals/touchpad" = {
      tap-to-click   = true;
      natural-scroll = true;
    };

    "org/gnome/mutter" = {
      experimental-features = [ "scale-monitor-framebuffer" ];
    };

    "org/gnome/shell" = {
      disable-user-extensions = false;
      enabled-extensions = [
        pkgs.gnomeExtensions.appindicator.extensionUuid
        "dash-to-dock@micxgx.gmail.com"
        "no-overview@fthx"
      ];
    };

  };
}

Schritt 3: flake.nix anpassen

Das ist der entscheidende Schritt. Bisher zeigt die flake.nix für alle Rechner auf dieselbe home.nix. Das muss für den Lenovo geändert werden – und gleichzeitig muss lenovo-system.nix als zusätzliches Modul eingebunden werden.

Dazu wandert home-manager.users.dein-username aus den gemeinsamen Modulen heraus und wird stattdessen je Rechner einzeln eingetragen. Bitte lies alle Kommentierungen in der Datei, damit müsste es klar werden.

Die flake.nix hier nur als Ausschnitt. Bitte beachten: ich habe überall meinen Usernamen und die Hostnamen meiner Rechner depersonalisiert - das sind viele Stellen an denen nun entweder "dein-username" oder "dein-hostname" steht - bitte detektivisch genau aufspüren.

sudo nano /etc/nixos/flake.nix

{
  outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... }:
  let
    system = "x86_64-linux";
    pkgs-unstable = import nixpkgs-unstable {
      inherit system;
      config.allowUnfree = true;
    };

    # Gemeinsame Basis – gilt für alle Rechner.
    # home-manager.users.dein-username ist hier bewusst NICHT mehr enthalten,
    # da jeder Rechner seine eigene home.nix bekommt.
    common-modules = [
      ./configuration.nix
      home-manager.nixosModules.home-manager
      {
        home-manager.useGlobalPkgs            = true;
        home-manager.useUserPackages          = true;
        home-manager.backupFileExtension      = "backup";
        home-manager.extraSpecialArgs         = { inherit pkgs-unstable; };
        # ← home-manager.users.dein-username wurde hier entfernt
      }
    ];
  in {
    nixosConfigurations = {

      # Dell 5320 – unverändert, nutzt die gemeinsame home.nix
      dein-hostname = nixpkgs.lib.nixosSystem {
        inherit system;
        specialArgs = { inherit pkgs-unstable; };
        modules = common-modules ++ [
          ./hardware-configuration.nix
          { networking.hostName = "dein-hostname"; }
          { home-manager.users.dein-username = import ./home.nix; }  # gemeinsame home.nix
        ];
      };

      # Dell Pro Plus – unverändert, nutzt die gemeinsame home.nix
      dein-hostname = nixpkgs.lib.nixosSystem {
        inherit system;
        specialArgs = { inherit pkgs-unstable; };
        modules = common-modules ++ [
          ./hardware-configuration-dein-hostname.nix
          { networking.hostName = "dein-hostname"; }
          { home-manager.users.dein-username = import ./home.nix; }  # gemeinsame home.nix
        ];
      };

      # Lenovo – individuelle Konfiguration:
      # lenovo-system.nix überschreibt ausgewählte Systemeinstellungen,
      # home-lenovo.nix ersetzt die Benutzerumgebung komplett.
      lenovo = nixpkgs.lib.nixosSystem {
        inherit system;
        specialArgs = { inherit pkgs-unstable; };
        modules = common-modules ++ [
          ./hardware-configuration-lenovo.nix
          { networking.hostName = "dein-hostname"; }
          ./lenovo-system.nix                                        # ← Systemoverrides
          { home-manager.users.dein-username = import ./home-lenovo.nix; } # ← schlanke home.nix
        ];
      };

    };
  };
}


Schritt 4: Alle Dateien Git bekannt machen und bauen

Flakes ignorieren Dateien die Git nicht kennt – das kennen wir bereits. Daher erst registrieren:

cd /etc/nixos
sudo git add lenovo-system.nix home-lenovo.nix flake.nix
sudo git commit -m "Lenovo individualisiert: schlanke home.nix, Power Profiles Daemon"

Dann auf dem Lenovo einmalig manuell bauen:

sudo nixos-rebuild switch --flake /etc/nixos#lenovo

Und auf Codeberg sichern:

sudo git push origin master

Ab jetzt läuft auf dem Lenovo update-push und pull-update (direkt einmal danach ausführen) wie gewohnt.


Meine deklarativ gesetzte Wunsch-Konfiguration

Dell 5320 Dell Pro Plus Lenovo
Systemkonfiguration configuration.nix configuration.nix configuration.nix + lenovo-system.nix
Benutzerumgebung home.nix home.nix home-lenovo.nix
Energieverwaltung TLP TLP Power Profiles Daemon ✅
GNOME-Energieprofil-Button wirkungslos wirkungslos funktioniert ✅
LanguageTool (~2 GB RAM) ✅ läuft ✅ läuft ❌ gespart
Fotosoftware ❌ nicht nötig
mehrere Cloud-Dienste synchronisieren ❌ nicht nötig

Die Dell-Rechner laufen weiterhin völlig unverändert. In den gemeinsamen configuration.nix und home.nix wurde kein einziger Buchstabe angefasst. Alles was der Lenovo anders macht, steht in seinen eigenen zwei Dateien.

Dazu, cool wie immer: Änderungen pflege ich für meine ganze Flotte an dem Rechner, an dem ich zufällig gerade sitze - die flake.nix (bzw. flake.lock) im Zusammenspiel mit Codeberg verteilt es dann an alle anderen. Und Systempflege weiterhin mit nur einem einzigen Befehl.

Ich finde gerade heute zeigte sich NixOS mal wieder von seiner besten Seite. Es war zum Abschluss nochmal ein schönes Beispiel für das Potenzial des Paradigmenwechsels durch den konsequent und logisch durchdachten deklarativen Ansatz.

Abgesehen vom geringen Aufwand für die Systempflege gefällt mir nach den Monaten mit NixOS am besten, dass ich erstmals das Gefühl habe wirklich Herr meines Systems zu sein. Nichts versteckt sich hinter Eingabemasken oder Linux-Befehlen welche ich nicht genau entschlüsseln kann. Bei NixOS weiß ich ganz genau, an welcher Stelle in den wenigen Konfigurationsdatein welche Systemeinstellung beschrieben ist - in normalen Textdateien und in einer einheitlichen Sprache, welche über die Dokumentation (zentral, an einer Stelle - siehe Teil 2) gelernt und entschlüsselt werden kann.

So, das war's von meiner Seite. Aber das muss nicht alles gewesen sein. Wenn du spannende und hilfreiche Aspekte oder News zu NixOS weitergeben möchtest, dann setz dich gerne an die Tastatur und reiche deinen Artikelvorschlag direkt hier auf der Page unter "Mitschreiben" ein.

Ich würde mich sehr über konstruktive Kritik zu der NixOS-Reihe in den Kommentaren freuen! Gebt dort gerne auch eure eigenen Erfahrungen mit NixOS weiter.

Tschüss einstweilen!

Artikel der NixOS-Reihe


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

11. Juni 2026

In den Kommentaren kam die berechtigte Frage auf, wo man selbst gelandet ist: Die Rangliste im Spiel zeigte nur die Top 7 plus die eigene Nachbarschaft, und der Screenshot im Season-1-Fazit ebenso. Hier ist die komplette Abschlusstabelle, rekonstruiert aus dem Datenbank-Backup der letzten Nacht von Season 1.

Links die offizielle Wertung nach der alten Season-1-Formel, rechts zum Vergleich, wie dieselbe Season mit der neuen Season-2-Formel ausgegangen wäre:

 #  Spieler        Rasse     Punkte   Pl  Te  Si Gen  | neue Formel (Platz)
 1  Kaon           Nomade     22.857  11  10   3   5  |  17.900   (3)
 2  alf            Mensch     21.761   1   2   4   0  |   3.900  (17)
 3  Coyitie        Mensch     21.722   1   0   1   0  |   3.000  (21)
 4  C4PO           Cyborg     21.685   3   6   2   0  |   5.700  (13)
 5  VirulenZ       Mensch     20.845   2   3   1   0  |   4.250  (15)
 6  Mchef          Cyborg     20.710  10  11   3   5  |  17.250   (4)
 7  Wh1sper        Ashar      20.671  15  12   8   5  |  22.400   (2)
 8  Slash          Cyborg     18.961   1   1   2   0  |   3.350  (18)
 9  Lord-Bane      Kael       18.881   1   5   2   0  |   3.950  (16)
10  onli           Kael       18.088   9  10   2   4  |  15.100   (5)
11  Korvax         Threx      17.644   2   5   0   0  |   4.350  (14)
12  femur          Velhari    17.621  16  11   5   5  |  22.450   (1)
13  JohnnyRocket   Nomade     17.473   4  10   2   2  |   9.100   (7)
14  Lamby          Kael       16.208   3  10   2   0  |   6.300  (11)
15  K:Wall         Mensch     15.153   1   2   1   0  |   3.300  (19)
16  Moskito        Nomade     14.619   3   8   1   1  |   6.800  (10)
17  BombadilsAxt   Ashar      12.347   3  12   4   2  |   9.000   (8)
18  Hoppy          Ashar      11.866   1   3   0   0  |   3.250  (20)
19  M0n1y          Cyborg      8.523   2  12   5   1  |   7.400   (9)
20  dergrauemann   Mensch      8.326   4  12   7   3  |  10.126   (6)
21  comLar         Mensch      8.184   1  12   1   1  |   5.800  (12)

Die Tabelle ist das beste Argument für die neue Formel, das ich liefern kann: femur, der die Season mit dem ersten Genesis-Planeten auf Stufe 5 tatsächlich gewonnen hat, steht in der alten Wertung auf Platz 12. Mit der neuen Formel wäre er Platz 1. Auch Wh1sper, onli und dergrauemann, die viel besiedelt, geforscht und gekämpft haben, rücken weit nach vorn. Wer nur Ticks gesammelt hat, rutscht ins hintere Drittel.

Zur Methodik: Grundlage ist das nächtliche Backup vom letzten Spieltag, ergänzt um die Tick-Stände und Genesis-Level vom Season-Ende. Die Punkte der Top 7 stimmen exakt mit dem offiziellen Endstand überein. Einzige Unschärfe: Korvax und femur trennen nur 23 Punkte, diese beiden Plätze könnten vertauscht sein.

Damit diese Frage in Season 2 gar nicht erst aufkommt: Die Rangliste im Spiel hat jetzt einen Link "Komplette Liste anzeigen", der alle Spieler zeigt.

Mitspielen: https://zockertown.de/mmo/

Season 2 von MMO-20044 ist gestartet. Die Galaxie wurde komplett neu gewürfelt: neue Systeme, neue Koordinaten, neue Planeten. Vorwissen aus Season 1 hilft niemandem, alle starten bei null.

Was sich gegenüber Season 1 ändert und warum, steht ausführlich im Season-1-Fazit. Die Kurzfassung: Die Punkteformel belohnt jetzt aktives Spielen statt Tick-Horten, und auf der Reiseseite steht vor dem Abflug, welche Spieler im Zielsystem Planeten besitzen.

Dazu kommen einige Korrekturen aus dem Spieler-Feedback:

  • Dieselbe Technologie kann nicht mehr doppelt gleichzeitig erforscht werden
  • Bei der Besiedlung zählt der Planet, den man angeklickt hat, nicht der erstbeste im System
  • Der Passwortwechsel in den Einstellungen funktioniert jetzt

Auf der Rangliste gibt es seit dieser Runde eine Hall of Fame. Den ersten Platz darin hat sich femur gesichert: als erster Spieler auf Genesis-Stufe 5 ist er der Sieger von Season 1 und bleibt dort dauerhaft verewigt.

Der Raumpirat treibt übrigens weiter sein Unwesen. Wer zu viele Ticks hortet, könnte Besuch bekommen.

Mitspielen: https://zockertown.de/mmo/

Firefox zeigt während der Fußball-Weltmeisterschaft optionale WM-Widgets auf seiner Startseite an, um die Ergebnisse des Turniers verfolgen zu können. Das Feature steht sowohl am Desktop als auch auf Android und iOS zur Verfügung.

Heute startet die Fußball-Weltmeisterschaft in Kanada, Mexiko und den USA. Passend dazu wird Mozilla WM-Widgets für die Firefox-Startseite ausrollen. Auch das Firefox-Logo auf der Startseite ist mit aktiviertem Widget angepasst und es stehen zusätzliche Hintergrundbilder mit Fußball-Motiven zur Auswahl. Selbstverständlich ist all dies optional und muss nicht genutzt werden.

Firefox WM 2026 Widget

Über das Widget lassen sich die Spiele der WM 2026 verfolgen. Das bedeutet einen Ausblick auf kommende Spiele, aber auch Ergebnisse, die während der Spiele live aktualisiert werden. Auf Wunsch lassen sich bestimmte Nationen verfolgen und nur die Spiele dieser Nationen anzeigen. Während der Spiele gibt es außerdem eine Anzeige, welche TV-Sender das jeweilige Spiel live übertragen. Standardmäßig werden die Sender des Landes angezeigt, in dem sich der Anwender befindet, es können aber auch internationale Sender angezeigt werden.

Firefox WM 2026 Widget Firefox WM 2026 Widget Firefox WM 2026 Widget Firefox WM 2026 Widget
Firefox WM 2026 Widget
Firefox WM 2026 Widget Firefox WM 2026 Widget

Der Beitrag Firefox mit WM-Widgets während der Fußball-Weltmeisterschaft erschien zuerst auf soeren-hentzschel.at.

10. Juni 2026

Firefox besitzt ein integriertes VPN, welches den Anwender nichts kostet. Normalerweise gibt es hierfür eine Auswahl aus fünf Standorten und ein Nutzungslimit von 50 GB pro Monat. Bis zum 31. August entfällt das Nutzungslimit und es kann ein Standort aus 28 Ländern gewählt werden.

Firefox besitzt eine kostenlose VPN-Integration für Windows, macOS und Linux. Dabei stehen 50 GB pro Monat zur Verfügung, um die echte IP-Adresse zu verbergen und den Internetverkehr über einen sicheren Proxy-Server zu leiten. Die Nutzung wird an jedem Monatsersten zurückgesetzt. Einzige Voraussetzung ist ein kostenfreies Mozilla-Konto. Zur Auswahl stehen Server in Deutschland, Großbritannien, Frankreich, USA und Kanada.

Ab sofort und bis zum 31. August 2026 entfällt das Nutzungslimit, Firefox-Nutzer können das VPN in der Zeit also unbegrenzt verwenden. Außerdem wurde die Standortauswahl auf 28 Länder erweitert. Die zusätzlichen Länder sind: Australien, Belgien, Bulgarien, Chile, Dänemark, Finnland, Irland, Italien, Kolumbien, Malaysia, Mexiko, Neuseeland, Niederlande, Norwegen, Österreich, Polen, Portugal, Schweden, Schweiz, Singapur, Spanien, Südafrika und Thailand.

Ab dem 1. September 2026 wird dann wieder das Nutzungslimit von 50 GB pro Monat und die bisherige Auswahl von fünf Standorten greifen. Wer dauerhaft unlimitierten Zugang, eine Auswahl aus ca. 500 Servern in über 30 Ländern und einen systemweiten Schutz haben möchte, der nicht nur in Firefox greift, findet mit dem kostenpflichtigen Mozilla VPN eine Lösung.

Der Beitrag Kostenloses VPN in Firefox: Vorübergehend unlimitierte Bandbreite und 28 Standorte erschien zuerst auf soeren-hentzschel.at.

9. Juni 2026

Mozilla hat mit Firefox 151.0.4 sein wöchentliches Korrektur-Update veröffentlicht. Dieser Artikel beschreibt die Änderungen des neuesten Updates.

Download Mozilla Firefox 151.0.4

Ein Problem wurde behoben, bei dem Firefox bei bestimmten sehr alten GPU-Modellen nicht länger die Hardwarebeschleunigung nutzte.

Eine Absturzursache in Zusammenhang mit Barrierefreiheits-Diensten wurde korrigiert, von der aussschließlich deutlich veraltete Versionen von Windows 10 betroffen waren.

Firefox auf Windows reagierte unter Umständen nicht mehr nach Verwendung der Zurück- und Vorwärtsschaltflächen.

Diverse Anpassungen für das in Firefox integrierte VPN wurden vorgenommen.

Außerdem gab es Verbesserungen der Webkompatibilität.

Der Beitrag Mozilla veröffentlicht Firefox 151.0.4 erschien zuerst auf soeren-hentzschel.at.

8. Juni 2026

Google und andere Anbieter fragen den genauen Standort ab, auch wenn man dies im Browser deaktiviert hat. Wie du das verhindern kannst, erkläre ich dir hier.



Was ich hier beschreibe, habe ich vor einigen Tagen am Computer erlebt und es hat mich sowohl in Staunen versetzt als auch erschrocken. Ich nutze am PC den Firefox Browser, ausgestattet mit diversen Add-Ons wie uBlock Origin, den Privacy Badger und CookieBlock. Ausserdem habe ich in den Einstellungen wichtige Privatsphäre Regeln definiert. Damit es für euch einfacher ist, habe ich dies bereits einmal in einem Video dokumentiert.

Der Computer hat kein GPS und so kann der Standort eigentlich nur anhand der IP-Adresse ermittelt werden. Diese zeigt auf den Standort meines Providers, in meinem Fall auf den schönen Ort Lupfig im Kanton Aargau in der Schweiz. Für euch könnt ihr das ebenfalls prüfen, in dem ihr eine Geolocation-Datenbank abfragt. Die Ergebnisse gelten als 95 % akkurat und ich kann dies aus meiner Erfahrung heraus bestätigen.

Soweit so gut, dies sollten die maximalen Informationen sein, die eine Webseite über mich ermitteln kann, sofern ich kein VPN verwende, das meinen Standort verschleiert.

Umso erstaunter war ich, als ich auf Google Maps gesurft bin und die Webseite meinen richtigen Standort mit sehr hoher Genauigkeit erkannt hat. Dabei wurde ich weder vom Browser gefragt, ob ich den Standort freigeben möchte noch wurde mir ein Hinweis angezeigt, wie denn mein Standort so detailliert ermittelt werden konnte.

Auch eine Nachfrage bei meinem Provider ergab keine Klarheit, immerhin bestätigte dieser mir, dass von dessen Seite keine Weitergabe von Standort-Daten an Google oder andere Anbieter erfolgt.

Ich war also ratlos. Wie konnte das passieren? Die einzige Möglichkeit, die ich mir vorstellen könnte, wäre, dass die Webseite in irgendeiner Form an die umliegenden WLAN-Netzwerke gelangt. Damit lässt sich der Standort immerhin sehr genau ermitteln und das ist auch der Grund warum ich persönlich an meine WLAN-Netzwerknamen (SSIDs) immer ein _nomap anhänge, damit keine Datenerfassung erfolgt. Es ist übrigens ein Trugschluss zu glauben, dass die WLAN-Netze von Google-Fahrzeugen erfasst werden. Das war vielleicht in der Vergangenheit einmal der Fall. Heute jedoch trägt jede_r Android-Nutzer zur Erfassung mit bei, sofern in den Einstellungen nicht die Punkte "WLAN Suche" und "Bluetooth Suche" deaktiviert sind. Wer von euch am Handy eine Karten-App wie Co-Maps verwendet und diese Funktionen einmal deaktiviert hat, weiss wie ungenau die Standortermittlung wird.

Mir war aber immer noch nicht klar, wie ich die Standortübermittlung an Google verhindern kann, oder was diese genau diese auslöst. In den Einstellungen vom Firefox habe ich sogar unter Datenschutz und Sicherheit / Berechtigungen / Standort den Punkt "Neue Anfragen für den Zugriff auf den Standort blockieren" gesetzt. Ohne Auswirkungen. Zumal der Browser ja vor der Standortübermittlung nicht mal fragt, ob dies gestattet werden soll. Die Daten werden einfach ungefragt im Hintergrund übertragen.

Als Nächstes habe ich versucht in den erweiterten Einstellungen (about:config in der Adressleiste eingeben) die Punkte geo.enabled auf false zu setzen und die geo.provider.network.url zu leeren, denn diese zeigt verdächtigerweise auf einen Geolocation-Server von Google!

All diese Versuche waren leider erfolglos. Google, und meiner Erfahrung nach nur Google konnte dennoch meinen Standort genauer ermitteln als alle Anderen. Webseiten wie der KI Chatbot Perplexity nutzen auch ungefragt den Standort um "bessere Ergebnisse" liefern zu können, doch dort wurde dort der Standort anhand der IP-Geolocation ermittelt.

Nach einiger Recherche, als ich schon fast kapitulieren wollte (Nein, das mache ich nicht!) habe ich das Spoof Geolocation Add-on für den Firefox gefunden.

Damit ist es möglich, einen Fake Standort zu setzen und diesen zu übertragen. Laut der Add-on-Dokumentation befüllt das Plugin das "navigator.geolocation" Objekt mit dem Fake Standort und überträgt dieses an die Webseite.

Nachdem ich Spoof Geolocation eingerichtet habe, wurde mir dann endlich auch in Google Maps der gefakte Standort angezeigt und das Symbol der Erweiterung wurde blau. Man kann sich das Symbol auch an die Adressleiste anpinnen. Dazu muss man nur auf das Puzzleteil klicken und "An Symbolleiste anheften" wählen.

Noch besser ist es aber, wenn man die Standortübermittlung ganz verweigert. Dazu klickt man auf das Erweiterungssymbol und deaktiviert den Haken bei "Share Location".

Das hat noch den schönen Nebeneffekt, dass bei jeder Standortanfrage das Add-On-Symbol rot wird. Ihr werdet überrascht sein, wie viele Webseiten den Standort abfragen, ohne euch darüber zu informieren.

Die Nutzung des Standortes kann durchaus sinnvoll sein, zum Beispiel am Handy bei der Verwendung einer Freien Karten-App wie Co-Maps. Aber auch hier möchte ich entscheiden welche App den Standort wie lange verwenden kann und standardmässig möchte ich den Standort mit keiner App oder Webseite teilen.

Bei dem Freien Android Custom-ROM /e/OS ist das gut gelöst, denn dort ist Location-Spoofing bereits auf Systemebene integriert und ich kann einzelne Apps auswählen, mit denen ich meinen echten Standort teilen möchte.

In diesem Sinne, Location, Location, Location ist wichtig, aber bitte unter unserer eigenen Kontrolle.


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

6. Juni 2026

Der Enterprise Policy Generator richtet sich an Administratoren von Unternehmen und Organisationen, welche Firefox konfigurieren wollen. Nun wurde der Enterprise Policy Generator 10.0 veröffentlicht. Die neueste Version erlaubt nun sogar den Import bestehender policies.json-Dateien, um diese im Enterprise Policy Generator weiter bearbeiten zu können.

Enterprise Policy Generator

Download Enterprise Policy Generator für Firefox

Der Enterprise Policy Generator hilft bei der Erstellung der Datei „policies.json” für die Konfiguration von Firefox. Der Vorteil dieser Konfigurationsdatei gegenüber Group Policy Objects (GPO) ist, dass diese Methode nicht nur auf Windows, sondern plattformübergreifend auf Windows, Apple macOS sowie Linux funktioniert. Dank dieser Erweiterung ist kein tiefergehendes Studium der Dokumentation und aller möglichen Optionen notwendig und Administratoren können sich die gewünschten Richtlinien einfach zusammenklicken.

Neuerungen vom Enterprise Policy Generator 10.0

Erst im April erschien mit dem Enterprise Policy Generator 8.0 nach über sechs Monaten Entwicklung das größte Update seit Bestehen der Erweiterung, welches die Erweiterung unter der Haube von Grund auf neu entwickelte und viele Neuerungen brachte. Der Enterprise Policy Generator 9.0 brachte ein komplett neues Design und weitere nützliche Verbesserungen, welche die Benutzererfahrung signifikant verbesserten. Und dank der neuen Architektur war es möglich, ein weiteres Mal nachzulegen und den Enterprise Policy Generator 10.0 mit einer bedeutenden Neuerung zu veröffentlichen, welche mit der alten Code-Basis nicht umsetzbar gewesen wäre.

Import der Datei policies.json

Bereits in der Vergangenheit war es möglich, mit dem Enterprise Policy Generator erstellte Konfigurationen zu speichern, wieder zu laden und auch, diese zu exportieren und wieder zu importieren. Hierfür wird ein eigenes Dateiformat genutzt, sodass in den exportierten Konfigurationen genau festgehalten werden kann, welche Felder in der Oberfläche wie gesetzt worden sind, sowie weitere Meta-Informationen wie der Name der Konfiguration oder der Zeitpunkt der Erstellung.

Ein häufig gewünschtes Feature war es, bereits vorhandene policies.json-Dateien importieren zu können, wie sie von Firefox genutzt werden. Die Schwierigkeit hierbei ist, dass Firefox respektive die Datei policies.json keinerlei Informationen über den Aufbau des Enterprise Policy Generators besitzt. Der Enterprise Policy Generator 10.0 führt ein intelligentes System ein, welches den Weg von der Richtlinie zur passenden Erweiterungs-Option rückwärts nachbildet.

Das Beste für den Anwender: Dieser muss sich beim Import keine Gedanken darüber machen, ob nun eine .policy-Datei vom Enterprise Policy Generator oder eine Datei policies.json hochgeladen wird. Der Enterprise Policy Generator erkennt automatisch das Format und wählt den entsprechenden Pfad der Erweiterung.

Enterprise Policy Generator 10.0 Enterprise Policy Generator 10.0

Und sollte eine Datei policies.json einmal eine Richtlinie oder eine Option beinhalten, die der Enterprise Policy Generator nicht erkennt, ist dies kein Problem. Dann werden einfach alle bekannten Richtlinien und Optionen importiert und ein Bericht zeigt an, was nicht importiert werden konnte.

Enterprise Policy Generator 10.0

Warnung vor unsicheren Richtlinien

Bestimmte Richtlinien wie die zur Deaktivierung von Firefox-Updates können die Sicherheit gefährden. Aus diesem Grund zeigt der Enterprise Policy Generator bei ausgewählten Richtlinien nun eine Warnung an, bei denen bereits die Aktivierung ein potenzielles Sicherheits-Risiko darstellt. Richtlinien, bei denen die Sicherheit von der ausgewählten Einstellung abhängt, zeigen in dieser Version noch keine Warnung an. Dies wäre eine denkbare Verbesserung für die Zukunft.

Enterprise Policy Generator 10.0

Große Verbesserungen der Developer Experience

Ein großer Fokus in dieser Version lag auch auf der Verbesserung der sogenannten Developer Experience, um es vor allem anderen Entwicklern zu erleichtern, zu zukünftigen Updates beizutragen.

So gibt es nun erstmals eine ausführliche Dokumentation zur Ergänzung neuer Richtlinien und Richtlinien-Optionen.

Bereits in der Vergangenheit gab es im Projekt sogenanntes „Linting” zur statischen Code-Analyse von HTML, CSS, JavaScript, JSON inklusive Validierung der Richtlinien-Konfiguration gegen ein definiertes JSON-Schema. Dieses wurde um einen weiteren Linter ergänzt, um auf fehlende Übersetzungen oder unterschiedliche Bezeichnungen in Übersetzungs-Dateien aufmerksam zu werden.

Außerdem wurde eine umfangreiche Test-Suite entwickelt, welche Fehler in der weiteren Entwicklung aufdecken soll. Dafür gibt es eine Sammlung, bestehend aus vielen unterschiedlichen policies.json-Dateien, die alle möglichen Szenarien abdeckt. Der Test-Runner importiert die jeweilige policies.json-Datei in ein temporäres Firefox-Profil, generiert daraus die JSON-Ausgabe in der Erweiterung, speichert und lädt die Konfiguration und führt anschließend noch einen Export und Import der EPG-Konfiguration durch. Damit werden auf Basis von jeweils einer Datei alle Code-Pfade abgedeckt. Vollkommen automatisch im Hintergrund, das dafür erzeugte Firefox-Profil wird nach dem Durchlauf automatisch gelöscht.

Schließlich wurde noch die Konfiguration von URL-Feldern überarbeitet, um die Konfiguration erlaubter Protokolle zu vereinheitlichen und vereinfachen.

Fehler-Korrektur

Auch ein Fehler wurde im Enterprise Policy Generator 10.0 behoben. So ist in der WebsiteFilter-Richtlinie der Wert für Blockierungen und Ausnahmen erlaubt. Durch das Syntax-Highlighthing (nur bei Verwendung von Firefox 148 oder höher) kam es hierbei aber zu einem Fehler im erzeugten JSON.

Neue Unternehmensrichtlinien im Enterprise Policy Generator 10.0

Unterstützung für die Richtlinie DisableRemoteSettingsAndAcceptSecurityConsequences wurde hinzugefügt, um die Anwendung entfernter Einstellungen zu unterbinden.

Die FirefoxHome-Richtlinie wurde um die Weather-Option erweitert, um die Anzeige des Wetters auf der Firefox-Startseite zu kontrollieren.

Die ManagedBookmarks-Richtlinie wurde einmal erweitert, um auch javascript:-URIs für Lesezeichen zu erlauben, zum anderen wurde die favicon-Option ergänzt.

Die ExtensionSettings-Richtlinie wurde um die Optionen runtime_allowed_hosts sowie runtime_blocked_hosts erweitert.

Damit unterstützt der Enterprise Policy Generator 10.0 alle Richtlinien, die von Firefox bis einschließlich des kommenden Firefox 153 unterstützt werden.

Entwicklung unterstützen

Wer die Entwicklung des Add-ons unterstützen möchte, kann dies tun, indem er der Welt vom Enterprise Policy Generator erzählt und die Erweiterung auf addons.mozilla.org bewertet. Auch würde ich mich sehr über eine kleine Spende freuen, welche es mir ermöglicht, weitere Zeit in die Entwicklung des Add-on zu investieren, um zusätzliche Features und neue Richtlinien zu implementieren.

Der Beitrag Enterprise Policy Generator 10.0 für Firefox ermöglicht Import von policies.json-Dateien erschien zuerst auf soeren-hentzschel.at.

5. Juni 2026

Thunderbird steht nicht mehr nur für einen E-Mail-Client. Mit Thunderbird Pro steht ein kostenpflichtiges Zusatzangebot in den Startlöchern. Erste Nutzer haben mittlerweile einen Zugang erhalten. Dieser Artikel bietet ausführliche erste Einblicke in Thunderbird Pro.

Das ist Thunderbird Pro

Thunderbird ist vor allem für seinen kostenlosen E-Mail-Client für Windows, macOS und Linux bekannt. Seit November 2024 gibt es Thunderbird auch für Android, Thunderbird für iOS ist in Entwicklung. Doch dabei soll es nicht bleiben: Die MZLA Technologies Corporation möchte ein Ökosystem aus Clients und Diensten als Alternative zu denen der Tech-Giganten wie Google Mail und Microsoft Office 365 etablieren, welches Open Source ist.

Thunderbird Pro besteht aktuell aus drei Produkten: Thundermail ist ein eigener E-Mail-Dienst, Thunderbird Appointment ist ein Dienst zur gemeinsamen Terminfindung und Thunderbird Send ist ein Dienst zum Versenden von Dateien.

Thunderbird Pro

Kosten von Thunderbird Pro

Thunderbird Pro wird jährlich abgerechnet und kostet 72 Euro im Jahr – das entspricht sechs Euro im Monat. Zumindest für Nutzer, die jetzt eine Einladung erhalten haben, wurde direkt im Warenkorb ein Rabatt für das erste Jahr angerechnet. So wurden nur 57,60 Euro abgebucht. Wahrscheinlich handelt es sich hierbei um eine Vergünstigung speziell für die frühen Tester.

Thundermail

Thundermail unterstützt neben den traditionellen Protokollen IMAP und SMTP auch das modernere JMAP. Das Protokoll POP3 wird hingegen nicht unterstützt. Der Server-Standort ist Deutschland, mit entsprechenden Vorteilen für den Datenschutz.

Für E-Mails stehen 30 GB Speicherplatz zur Verfügung und es können bis zu 15 E-Mail-Adressen angelegt werden. Dabei handelt es sich jeweils um Alias-Adressen, es können also nicht mehrere Postfächer mit einem Account genutzt werden. Als Domain können @thundermail.com sowie @tb.pro verwendet werden. Außerdem können bis zu drei benutzerdefinierte Domains verknüpft werden.

Die Thundermail-Oberfläche zeigt den verbrauchten Speicherplatz sowie Anweisungen zur Einrichtung im E-Mail-Client der Wahl an. Eine Weboberfläche gibt es aktuell noch nicht, daran wird aber für die Zukunft gearbeitet.

Es gibt eine Einstellung zur Konfiguration des Anzeige-Namens sowie die Möglichkeit, ein App-Passwort für E-Mail-Clients ohne Thundermail-Login zu vergeben.

Thundermail

Die Einrichtung erfolgt in Thunderbird besonders einfach, da es hier eine eigene Schaltfläche zur Anmeldung mit einem Thundermail-Konto gibt. Dies trifft sowohl in Kürze auf Thunderbird für den Desktop als auch jetzt schon auf Thunderbird für Android zu. Grundsätzlich kann Thundermail aber mit jedem E-Mail-Client genutzt werden.

Thundermail-Login in Thunderbird

Thunderbird Appointment

Thunderbird Appointment bietet direkt zum Start die Möglichkeit an, einen Thundermail-Kalender, einen CalDAV-Kalender oder einen Google-Kalender zu verbinden. Danach werden grundlegende Informationen zur Verfügbarkeit abgefragt. In einem nächsten Schritt kann noch eine Verknüpfung mit der Meeting-App Zoom hergestellt werden.

Thundrbird Appointment Thundrbird Appointment Thundrbird Appointment Thundrbird Appointmentq

Danach landet der Benutzer im Dashboard, worüber alle Termin-Buchungen zu sehen sind. Auch zum Ändern der Verfügbarkeiten, bestehender Buchungen sowie zum Kopieren des Buchungslinks gibt es hier schnelle Möglichkeiten.

Thunderbird Appointment

Die Verfügbarkeiten lassen sich noch einmal detaillierter konfigurieren, inklusive einem anpassbaren Buchungslink.

Thunderbird Appointment

In den Einstellungen von Thunderbird Appointment lässt sich unter anderem einstellen, mit welchem Tag die Woche beginnt, das Farbschema sowie die Sprache. Neben Englisch wird auch schon Deutsch unterstützt.

Die Buchungslinks können von jedem genutzt werden, auch von Nutzern, die selbst kein Nutzer von Thunderbird Pro sind.

Thunderbird Appointment Thunderbird Appointment Thunderbird Appointment Thunderbird Appointment

Thunderbird Send

Thunderbird Send nutzt eine Ende-zu-Ende-Verschlüsselung, sodass niemand außer Absender und Empfänger die versendeten Dateien betrachten kann. Aus diesem Grund besteht der erste Schritt darin, einen Wiederherstellungsschlüssel zu generieren.

Thunderbird Send

Wie bei Thundermail zeigt auch Thunderbird Send im Dashboard ganz oben den belegten Speicherplatz an. Hier stehen 60 GB zur Verfügung.

Thunderbird Send

Standardmäßig werden die Dateien nach 14 Tagen gelöscht, man kann aber auch kürze oder längere Zeiträume auwählen – oder Dateien dauerhaft zur Verfügung stellen. Optional ist es außerdem möglich, den Download mit einem Passwort zu schützen.

Thunderbird Send

Der Download ist natürlich auch wieder für Nutzer möglich, die kein Thunderbird Pro verwenden.

Thunderbird Send

Wird die dazugehörige Erweiterung für Thunderbird installiert, ist es außerdem möglich, Anhänge in E-Mails direkt aus Thunderbird heraus in einen Link für Thundermail umzuwandeln.

Thunderbird Send in Thunderbird

Flächendeckende Verfügbarkeit

Aktuell muss man sich noch auf eine Warteliste setzen lassen. Thunderbird Pro soll noch in diesem Jahr für alle interessierten Nutzer geöffnet werden.

Der Beitrag Ausführliche erste Einblicke in Thunderbird Pro erschien zuerst auf soeren-hentzschel.at.

Ein Major-Update steht an. Zudem binden wir Programme aus dem Rolling-Release-Zweig ein – und nutzen Software, ohne sie überhaupt zu installieren.



Es ist eine sehr günstige Fügung, dass in die noch laufende Artikelserie auch ein Major-Upgrade von NixOS fällt. Diese Steilvorlage nehme ich natürlich direkt auf.

Wer der Reihe gefolgt ist, hat mittlerweile ein solides NixOS-Setup auf einem oder sogar mehreren Rechnern. Das System läuft stabil, die Kommunikation mit Codeberg klappt reibungslos, und die zwei Skripte update-push und pull-update erledigen die Verwaltung mit einem einzigen Befehl. Eigentlich könnte man sich entspannt zurücklehnen.

Aber manchmal nervt es dann doch, wenn ein bestimmtes Programm in der stabilen Version ziemlich hinterherhinkt. Gerade beim Browser und meiner Fotosoftware machen ein paar Versionen manchmal einen echten Unterschied. Zum Glück hat NixOS auch dafür eine elegante Antwort parat.

Und dann gibt es noch die andere Seite: Was ist, wenn ich Chrome kurz für einen Test brauche, das Programm aber eigentlich nicht auf meinem System haben möchte? Auch dafür hat NixOS etwas Feines im Köcher.

Major Upgrade: Auf NixOS 26.05 wechseln

NixOS erscheint zweimal jährlich – im Mai und im November. Das Versionsschema ist dabei denkbar einfach: Jahr.Monat. Wir kommen gerade von 25.11 und wechseln auf 26.05.

Wichtig zu verstehen: update-push und pull-update führen zwar regelmäßig nix flake update aus – aber das aktualisiert nur die Pakete innerhalb des festgelegten Kanals. Solange nixos-25.11 in der flake.nix steht, bleibt man auf 25.11 – egal wie oft man updatet. Ein Versionssprung ist eine bewusste Entscheidung und passiert nie automatisch im Hintergrund. Das ist gewollt: kein ungewolltes Major-Upgrade, kein böses Erwachen am Montagmorgen.

Der Wechsel selbst ist erfreulich unspektakulär. Zwei Zeilen in der flake.nix ändern:

inputs = {
  # Von nixos-25.11 auf nixos-26.05
  nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";

  nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";

  home-manager = {
    # Auch home-manager auf release-26.05 anheben
    url = "github:nix-community/home-manager/release-26.05";
    inputs.nixpkgs.follows = "nixpkgs";
  };
};

Danach:

update-push

Das war's. NixOS baut das System neu, GNOME, Kernel und alle stabilen Pakete kommen auf den Stand von 26.05. Läuft etwas schief, ist ein Rollback wie immer mit einem Befehl erledigt – oder durch Auswahl einer älteren Generation im Bootmenü.

Tipp: Es empfiehlt sich, ein paar Wochen nach dem offiziellen Release zu warten. In dieser Zeit werden die meisten Kinderkrankheiten gemeldet und behoben. NixOS macht das Warten aber entspannter als anderswo – dank Rollback kann man auch früh wechseln ohne wirklich etwas riskieren zu müssen.

Wichtiger Hinweis zur home.stateVersion: In der home.nix gibt es eine Zeile home.stateVersion = "25.11". Diese darf beim Versionssprung nicht geändert werden – sie beschreibt den Stand zum Zeitpunkt der Erstinstallation und dient Home Manager zur internen Kompatibilität. Das ist eine der wenigen Zeilen in NNixOS, dieman wirklich in Ruhe lassen sollte!


Pakete aus unstable einbinden

In den vorherigen Teilen haben wir nixos-26.05 als unseren stabilen Kanal eingerichtet. Stabil heißt hier: die Paketversionen sind eingefroren und ändern sich bis zum nächsten NixOS-Release nicht mehr wesentlich. Das ist sicher, aber manchmal auch etwas angestaubt.

Daneben gibt es nixos-unstable – den Rolling-Release-Zweig. "Unstable" klingt beängstigender als es ist. Alle Pakete durchlaufen auch dort die automatisierte NixOS-Testsuite (Hydra), bevor sie im Unstable-Zweig landen. In der Praxis ist nixos-unstable auf dem Desktop sehr gut verwendbar. Der Unterschied zum stabilen Kanal: die Pakete sind aktueller, manchmal tagesaktuell.

Die Idee: das Beste aus beiden Welten

Ich möchte nicht das gesamte System auf unstable umstellen – das wäre für GNOME, Kernel und Systemdienste weder nötig noch sinnvoll. Was ich möchte, ist: für ausgewählte Programme die neueste Version, für den Rest die bewährte Stabilität.

NixOS macht das möglich indem man einfach beide Kanäle gleichzeitig einbindet und dann je Paket entscheidet, welcher Kanal verwendet werden soll.

Schritt 1: flake.nix anpassen

In der flake.nix den unstable-Kanal als zweiten Input hinzufügen:

inputs = {
  # Stabiler Kanal – für System, GNOME, Kernel
  nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";

  # Unstable-Kanal – für ausgewählte Programme
  nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";

  home-manager = {
    url = "github:nix-community/home-manager/release-26.05";
    inputs.nixpkgs.follows = "nixpkgs";
  };
};

Dann müssen die unstable-Pakete dem Rest des Systems bekannt gemacht werden. Das passiert über specialArgs (für die configuration.nix) und extraSpecialArgs (für die home.nix):

outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... }:
let
  system = "x86_64-linux";

  # Unstable-Pakete als eigene Variable – allowUnfree nicht vergessen
  pkgs-unstable = import nixpkgs-unstable {
    inherit system;
    config.allowUnfree = true;
  };

  common-modules = [
    ./configuration.nix
    home-manager.nixosModules.home-manager
    {
      home-manager.useGlobalPkgs        = true;
      home-manager.useUserPackages      = true;
      home-manager.backupFileExtension  = "backup";

      # pkgs-unstable an home.nix weitergeben
      home-manager.extraSpecialArgs = { inherit pkgs-unstable; };

      home-manager.users.DEIN-USERNAME = import ./home.nix;
    }
  ];
in {
  nixosConfigurations = {
    DEIN-HOSTNAME = nixpkgs.lib.nixosSystem {
      inherit system;
      # pkgs-unstable auch an configuration.nix weitergeben
      specialArgs = { inherit pkgs-unstable; };
      modules = common-modules ++ [
        ./hardware-configuration.nix
        { networking.hostName = "DEIN-HOSTNAME"; }
      ];
    };
  };
};

Schritt 2: home.nix anpassen

Die home.nix muss pkgs-unstable als Argument empfangen:

# Erste Zeile anpassen:
{ config, pkgs, pkgs-unstable, ... }:

Danach kann man je Paket wählen: stabiler Kanal oder unstable? Das Prinzip ist denkbar einfach – statt pkgs.paketname schreibt man pkgs-unstable.paketname:

home.packages = [

  # Aus stable – ändert sich selten, läuft zuverlässig
  pkgs.git
  pkgs.starship

  # Aus unstable – immer die neueste Version
  pkgs-unstable.libreoffice-fresh    # Office-Suite
  pkgs-unstable.thunderbird          # E-Mail
  pkgs-unstable.obsidian             # Notizen (unfree)

];

Hinweis: Da pkgs-unstable explizit mit allowUnfree = true initialisiert wurde, funktionieren auch proprietäre Pakete wie Obsidian ohne weitere Konfiguration – vorausgesetzt nixpkgs.config.allowUnfree = true steht ebenfalls in der configuration.nix.

Schritt 3: System neu bauen

update-push

Beim ersten Mal dauert es etwas länger – Nix lädt jetzt zwei Kanäle und baut die unstable-Pakete erstmalig. Danach ist es wie gewohnt.

Was passiert beim Update?

Hier liegt eine wichtige Nuance. Das Skript update-push führt nix flake update aus – das aktualisiert die flake.lock für beide Kanäle. Stable-Pakete bekommen ihre regulären Sicherheits-Updates, unstable-Pakete rücken auf die tagesaktuellen Versionen vor. Das Beste aus beiden Welten, genau wie versprochen.

Sonderfall: Module aus unstable beziehen

Wer meiner Reihe aufmerksam gefolgt ist, stellt jetzt vielleicht fest: Firefox steht in der home.nix gar nicht als pkgs-unstable.firefox – Firefox ist bei uns als NixOS-Modul installiert. Und Module funktionieren anders als einfache Pakete.

Ein Modul wie programs.firefox ist tief ins System integriert. Es lässt sich nicht einfach auf pkgs-unstable umbiegen, weil das Modul intern auf das stabile pkgs.firefox zeigt. Der Trick heißt Overlay – man sagt NixOS: „Wenn du firefox aus pkgs holst, nimm bitte die unstable-Version."

Das passiert in der configuration.nix:

# pkgs-unstable wird via specialArgs übergeben (siehe flake.nix)
{ config, pkgs, pkgs-unstable, ... }:

{
  # Overlay: firefox aus pkgs wird durch die unstable-Version ersetzt
  nixpkgs.overlays = [
    (final: prev: {
      firefox = pkgs-unstable.firefox;
    })
  ];

  # Das Modul selbst bleibt unverändert – es greift nun automatisch
  # auf die unstable-Version zu
  programs.firefox = {
    enable        = true;
    languagePacks = [ "de" ];
  };
}

Das Schöne daran: Das Modul programs.firefox muss überhaupt nicht angefasst werden. Es merkt durch den Overlay nicht einmal, dass es jetzt eine andere Firefox-Version verwendet – es fragt einfach nach pkgs.firefox, und der Overlay liefert still und leise die unstable-Version.

Das gleiche Prinzip funktioniert für jedes andere Modul – überall wo pkgs.paketname im Hintergrund steht, kann man durch einen Overlay die unstable-Version einschleusen.


Wegwerf-Pakete – Software ohne Installation

Nixos hat noch einen Trick auf Lager, der mich beim ersten Mal wirklich begeistert hat. Die Frage: Was tun, wenn ich ein Programm einmalig brauche, es aber nicht dauerhaft installieren möchte?

Klassische Antwort: installieren, benutzen, deinstallieren – und dabei hoffen, dass keine Spuren zurückbleiben. Genau das ist unter normalen Linux-Systemen oft mühsam, weil Deinstallation selten wirklich vollständig ist.

NixOS-Antwort: einfach gar nicht erst installieren.

nix-shell – die Wegwerf-Umgebung

Der Befehl nix-shell -p paketname öffnet eine temporäre Shell in der das gewünschte Programm verfügbar ist. Verlässt man die Shell, ist das Programm wieder weg – aus dem PATH zumindest. Der Nix-Store räumt beim nächsten Garbage-Collection-Lauf auch den Rest auf.

Das Paradebeispiel ist Chrome. Google Chrome möchte ich nicht dauerhaft auf meinem System haben – aber manchmal brauche ich ihn kurz, um etwas in einem anderen Browser zu testen oder eine Seite zu besuchen, die Firefox partout nicht mag.

NIXPKGS_ALLOW_UNFREE=1 nix-shell -p google-chrome --impure

Die Umgebungsvariable NIXPKGS_ALLOW_UNFREE=1 ist nötig weil Chrome proprietär ist. Das --impure erlaubt Nix diese Variable zu lesen. Der Download dauert beim ersten Mal einen Moment – danach öffnet sich eine neue Shell in der google-chrome als Befehl bereitsteht:

google-chrome

Browser benutzen, fertig, Shell verlassen:

exit

Chrome ist wieder weg. Kein Eintrag in der home.nix, kein Rebuild, keine Spuren.

nix run – noch kürzer

Wer nicht einmal eine Shell öffnen möchte, kann nix run verwenden:

NIXPKGS_ALLOW_UNFREE=1 nix run --impure nixpkgs#google-chrome

Ein Befehl, Programm startet, fertig. Schließt man das Fenster, ist es vorbei.

Wann ist das sinnvoll?

Das ist nicht nur ein Spielzeug für Neugierige. Es gibt handfeste Anwendungsfälle:

  • Kompatibilitätstest: Wie sieht meine Webseite in Chrome aus?
  • Einmalige Aufgabe: Ein PDF-Werkzeug für genau dieses eine Dokument.
  • Ausprobieren: Bevor man ein Paket dauerhaft in die home.nix schreibt, einfach mal schauen ob es das Richtige ist.
  • Fremder Rechner: Auf einem Rechner den man nicht administriert, kann man so Software verwenden ohne etwas zu verändern.

Für freie Software entfällt die ganze NIXPKGS_ALLOW_UNFREE-Zeremonie – Chromium zum Beispiel geht einfach so:

nix-shell -p chromium

Der Unterschied zu nix-env

Aufmerksame Leserinnen und Leser erinnern sich vielleicht, dass wir in Teil 3 kurz nix-env -iA nixos.git verwendet haben – mit dem Hinweis, dass das nicht die bevorzugte Methode ist. Der Unterschied:

  • nix-env installiert dauerhaft ins Benutzerprofil – imperativ, der Zustand landet nicht in der Konfiguration
  • nix-shell -p ist temporär – verschwindet nach dem Schließen der Shell
  • home.nix ist deklarativ – der Nix-Way für alles was dauerhaft da sein soll

Für Git in Teil 3 war nix-shell -p git die eigentlich sauberere Wahl – die temporäre Shell hat ausgereicht um den einmaligen Setup-Schritt zu erledigen.

Fazit

Vier Werkzeuge, die das NixOS-Erlebnis noch runder machen: das Major Upgrade auf 26.05 in zwei Zeilen, pkgs-unstable für Programme wo die neueste Version wirklich zählt, der Overlay-Trick für Module wie Firefox, und nix-shell für alles was man einmal braucht und dann nie wieder sehen möchte. Zusammen ergibt das ein System das sowohl aktuell als auch stabil ist – und das trotzdem keine unnötige Software ansammelt.

Artikel der NixOS-Reihe


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

Season 1 von MMO-20044 nähert sich dem Abschluss.

Mehrere Spieler haben Genesis-Level 4 erreicht, Level 5 und der anschliessende 48-Stunden-Countdown sind nur noch eine Frage der Zeit.

Was ich in dieser Season gelernt habe: ein Spiel zu bauen ist eine Sache, es mit echten Spielern laufen zu lassen eine andere. Einige Dinge haben funktioniert wie geplant. Andere Dinge haben sich erst im Betrieb gezeigt.

Was repariert wurde

Gleich zu Beginn: Planetentypen waren auf der Reiseseite nicht eindeutig zuzuordnen. Die Art-Anzeige stand neben dem Besiedeln-Button, konnte aber leicht dem falschen Planeten zugeordnet werden. Der Typ steht jetzt direkt im Button, kein Spielraum mehr für Verwechslungen.

Wer unterwegs war, stand laut Anzeige immer noch im Ausgangssystem. Das war irritierend. Seither zeigt die Reiseseite "Unterwegs nach [System]" sobald eine Reise läuft.

Ein weiteres Problem: wenn zwei Spieler gleichzeitig auf einen freien Planeten zusteuerten, konnte es passieren, dass einer seinen Besiedlungs-Slot blockiert hatte, aber keinen Planeten bekam. Ticks weg, kein Planet, keine Fehlermeldung. Das ist behoben. Wer zu spät kommt, bekommt seine Ticks zurück und einen Hinweis.

 

Neu: Erkundungssonden

Bevor man eine lange Reise startet, will man vielleicht wissen was am Ziel wartet. Dafür gibt es jetzt Erkundungssonden: 100 Ticks, keine Forschung nötig, Ergebnis zeigt Planetentypen und ob die Planeten frei sind. Die Flugzeit beträgt ein Fünftel der normalen Reisedauer. Bis zu zwei Sonden können gleichzeitig unterwegs sein.

Tips

Das Spiel gibt an bestimmten Stellen Hinweise, wenn etwas noch nicht stimmt. Wer zum Beispiel einen Gesteinsplaneten besiedelt hat, aber noch keinen Bergbau erforscht, bekommt den Hinweis direkt im Dashboard. Kein stilles Warten, keine Raterei warum die Rohstoffe nicht wachsen. Der Tipp verschwindet, sobald die passende Forschung gestartet ist.

 

Punktesystem wird korrigiert

Die Punkteformel für Season 2 ändert sich. In Season 1 zählten Ticks 1:1 in die Punktzahl, was dazu geführt hat, dass inaktive Spieler durch reines Abwarten in der Rangliste weit oben standen.

Season 2 rechnet anders: Ticks zählen bis maximal 2.000. Planeten werden mit 800 Punkten gewichtet statt 500. Technologien bringen 150 Punkte statt 100. Wer aktiv spielt, Planeten besiedelt und forscht, hat einen klaren Vorteil.

Season 2

Die Galaxie wird bei jedem Season-Start neu gewürfelt. Keine feste Karte, kein Vorteil durch Vorwissen aus Season 1. Die Galaxiegrösse lässt sich jetzt per Konfiguration anpassen, bei mehr Spielern entsprechend mehr Systeme.

Wann Season 2 startet, steht fest, sobald Level 5 gefallen ist. Wer mitspielen will: https://zockertown.de/mmo/


PS: Die Umfrage:

Was bedeutet 20044? (abgelaufen, 14 Stimmen)
  Das Galaxie-Gründungsjahr        4 ( 29%)  █████
  Eine Raumstation-ID                     3 ( 21%)  ████
  Eine Frequenz                                4 ( 29%)  █████
  Ein Koordinatensystem                3 ( 21%)  ████

Sehr ausgeglichen yes

Die Wahrheit:   Ein Tippfehler  cool sollte 2044 sein. Aber 20044 ist cooler devil

4. Juni 2026

Mozilla hat einen neuen Dienst in Firefox integriert, der auf bequeme Weise das Teilen mehrerer Tabs, ganzer Lesezeichen-Ordner oder Tab-Gruppen erlaubt. Für die ersten Nutzer geht es bereits mit Firefox 152 los.

Das Teilen einzelner Links mit anderen Menschen ist in der Regel kein Problem. Man kopiert die URL zum Beispiel aus der Adressleiste und schickt diesen auf dem gewünschten Weg an eine andere Person. Etwas komplizierter wird es, wenn mehrere Links involviert sind. Natürlich kann man jeden Link einzeln kopieren und weiterschicken. Aber je mehr Links es sind, desto mehr Zeit nimmt dies in Anspruch.

Ein neuer Dienst, den Mozilla in Firefox integriert hat, schafft hier Abhilfe. Sobald mehrere Tabs markiert sind, steht ein neuer Eintrag im Kontextmenü zur Verfügung. Auch Tab-Gruppen sowie Lesezeichen-Ordner erhalten eine Schaltfläche. Über diese wird ein einzelner Link generiert, der dann mit anderen geteilt werden kann. Der Link ist sieben Tage lang gültig. Danach funktioniert dieser nicht mehr.

Mehrere Links teilen in Firefox 152 Mehrere Links teilen in Firefox 152 Mehrere Links teilen in Firefox 152

Nutzer, welche den geteilten Link aufrufen, sehen eine Übersichtsseite mit allen geteilten Websites. Diese können darüber dann aufgerufen werden. Selbstverständlich funktioniert dies auch für Nutzer, die keinen Firefox verwenden.

Mehrere Links teilen in Firefox 152

Mozilla beginnt mit der Ausrollung dieses neuen Features bereits mit Firefox 152, der nach aktueller Planung am 16. Juni 2026 erscheinen wird – dann allerdings erst für zwei Prozent der Nutzer, die Firefox in amerikanischem Englisch nutzen.

Der Beitrag Firefox bekommt Dienst zum Teilen von Links erschien zuerst auf soeren-hentzschel.at.

MMO-20044 geht in den regulären Betrieb.

Die Testphase ist abgeschlossen, der Produktionsserver läuft

Was gespielt wird: ein browserbasiertes Space-MMO. Rohstoffe abbauen, forschen, reisen, handeln, andere Spieler angreifen. Das Ziel ist der Genesis-Planet: wer ihn auf Level 5 bringt, startet einen 48-Stunden-Countdown. Läuft der durch, ist die Season vorbei und der Spieler gewinnt.

Technik: Python/FastAPI, PostgreSQL, HTMX. Kein JavaScript-Framework, kein Build-Step. Alles läuft serverseitig.

Registrierung ist offen unter zockertown.de/mmo-20044 . Spielstände aus der Testphase wurden nicht übernommen, alle starten neu.

Ein fetter Dank geht an die Spieler der Betaphase, die Fehler gemeldet und Verbesserungen vorgeschlagen haben. Das hat den Start besser gemacht, als er ohne dieses Feedback geworden wäre.

Was "20044" bedeutet: demnächst. 

2. Juni 2026

Mozilla hat mit Firefox 151.0.3 sein wöchentliches Korrektur-Update veröffentlicht. Dieser Artikel beschreibt die Änderungen des neuesten Updates.

Download Mozilla Firefox 151.0.3

Firefox 151.0.3 korrigiert das seit dem letzten Update deutlich zu große VPN-Symbol in der Navigationssymbolleiste.

Die Anpassungen der chinesischen Distribution von Firefox werden ab sofort ignoriert, nachdem Mozilla seine chinesische Tochtergesellschaft „Beijing Mozilla Online Ltd.” bereits Ende des vergangenen Jahres abgewickelt hatte.

Eine mögliche Absturzursache unter Linux wurde behoben, ebenso wie ein Webkompatibilitätsproblem sowie zwei Sicherheitslücken.

Der Beitrag Mozilla veröffentlicht Sicherheits-Update Firefox 151.0.3 erschien zuerst auf soeren-hentzschel.at.

1. Juni 2026

Die MZLA Technologies Corporation hat mit Thunderbird 19 ein Update für die Android-Version seines E-Mail-Clients veröffentlicht.

Download Thunderbird für Android

Mit Thunderbird 19 für Android ist es möglich, die verfügbaren Aktionen in den Benachrichtigungen zu konfigurieren. Dies schließt die Anzahl der möglichen Aktionen (keine bis zu drei), die Art der Aktionen sowie die Reihenfolge ein. Thunderbird wurde außerdem für die Einrichtung von Thundermail vorbereitet, dem kommenden E-Mail-Dienst der Thunderbird-Entwickler. Die Schriftgröße in den E-Mails passt sich darüber hinaus jetzt der eingestellten Schriftgröße des Gerätes an. Ansonsten bringt auch Thunderbird 19 wieder eine Reihe von Fehlerkorrekturen und Detail-Verbesserungen unter der Haube.

Der Beitrag Thunderbird 19 für Android veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Die Beta von MMO-20044 läuft seit ein paar Wochen, und es hat funktioniert: ein paar Spieler haben das Spiel gefunden, Feedback gegeben und Bugs aufgedeckt. Am Donnerstag, 04.06., geht die Beta zu Ende.

Direkt danach startet Season 1. Das bedeutet einen vollständigen Reset: alle Spieler, Planeten und Fortschritte werden gelöscht. Die Galaxie selbst bleibt erhalten.

Was Season 1 bringt

Das Spielziel ist jetzt klar definiert: wer als erstes den Genesis-Planeten auf Level 5 bringt, löst einen 48-Stunden-Countdown aus. Danach endet die Season. Der Sieger bekommt eine Trophäe, die dauerhaft im Profil sichtbar bleibt.

Dazu gibt es eine Rangliste, die sich an der Spielerzahl orientiert. Bei wenigen Spielern werden die besten drei angezeigt, bei mehr entsprechend mehr. Wer nicht in der Spitzengruppe steckt, sieht seine eigene Position mit den direkten Nachbarn.

Mitspielen

Das Spiel läuft unter zockertown.de/mmo. Registrierung ist offen, kein Account nötig außer einem Spielernamen und Passwort. Wer die Beta mitgemacht hat, muss sich neu registrieren.

MMO-20044 ist ein Browser-Spiel ohne Client, ohne App, ohne Push-Benachrichtigungen. Kein Tracking, keine Werbung, keine externen Ressourcen. Einloggen, schauen was passiert ist, Entscheidungen treffen, wieder ausloggen. Mehr ist es nicht, und das ist der Punkt.

Getreu dem Motto „Nutze Gutes und schreibe darüber“ stelle ich im heutigen Beitrag die Open-Source-Projekte lab-toolbox, kcli und kcli-toolbox vor.

Lab-toolbox

Die lab-toolbox ist ein Projekt von meinem TAM-Kollegen Chris Huang. Es handelt sich dabei um ein Python-Skript, welches die Erstellung von virtuellen Maschinen (VM) mit Red Hat Enterprise Linux (RHEL) unter KVM/QUEMU vereinfacht und beschleunigt.

Hinter der Idee zu diesem Projekt steckt dieser Anwendungsfall:

Als Plattform-TAMs müssen wir regelmäßig Dinge unter verschiedenen RHEL-Versionen testen. Häufig muss hierzu eine frische VM auf unserem Laptop herhalten, die nach dem Test auch direkt wieder entsorgt werden kann. Dies kann nun bspw. mit dem folgenden Kommando erledigt werden:

./create_vm.py --rhel 10 --hostname rhel10-1 --memory 4096 --vcpus 2

Mit diesem einen Befehl werden folgende Aufgaben ausgeführt:

  1. Es wird das aktuelle RHEL 10 Image auf der lokalen Festplatte genutzt, um eine RHEL 10 VM mit 4 GB RAM und 2 vCPU zu erstellen
  2. Das Skript fragt nach einem Passwort für den Konsolen-Login oder bietet an, sich ausschließlich per SSH einzuloggen
  3. Es generiert automatisch die Konfiguration für cloud-init, um:
    • den aktuellen Benutzer innerhalb der neuen VM zu erstellen
    • den SSH-Public-Key des Benutzers hinzuzufügen (automatisch oder per Option)

Ist die VM erstellt, können wir uns direkt mit unserem Benutzer und dessen SSH-Schlüssel einloggen.

Es gibt im Internet viele Wrapper-Skripte, welche die Einrichtung von lokalen VMs vereinfachen sollen. Mir gefällt an diesem besonders, dass es einen meiner häufigsten Anwendungsfälle auf den Punkt bedient. Dazu gibt es ein ausführliches README.md mit einer ausführlichen Dokumentation und einigen Beispielen.

Danke Chris, dass du dieses tolle Projekt mit uns teilst.

Kcli

Wenn es ein bischen mehr sein darf und z.B. folgende Funktionen gewünscht sind:

  • Deplyoment von Cloud-Images bei verschiedenen Providern (z.B. libvirt, KubeVirt, oVirt, OpenStack, VMware vSphere, AWS, Azure, GCP, IBM cloud and Hcloud) mit einem einzigen Werkzeug
  • Profile, um VMs mit der gleichen Hardware-Charakteristik zu starten
  • Komplette Labor-Umgebungen in YAML deklarieren und ausrollen
  • Große Auswahl an Cloud-Images verschiedener Linux-Distributionen
  • Einfache Verteilung und Integration von SSH-Schlüsseln
  • Automatische Registrierung von RHEL-VMs

Dann ist das Projekt kcli von meinem Kollegen Karim Boumedhel und vielen weiteren Beitragenden vielleicht etwas für euch. Wenn ihr jetzt neugierig geworden seid, werft für weitere Informationen einen Blick in die Dokumentation.

Als TAM und Sysadmin möchte ich auch komplexe Systeme testen, welche häufig aus mehreren VMs bestehen. Da mein Laptop hier schnell an seine Grenzen stößt, möchte ich diese Laborumgebungen auch bei anderen Anbietern bereitstellen können. Hierfür scheint mir dieses Projekt gut geeignet zu sein.

Kcli-toolbox

Dies ist der 0,5-Anteil der Vorstellungen in diesem Artikel. Damit ist nicht gemeint, dass es erst zur Hälfte fertig ist. Es ist vielmehr kein richtiges Projekt, sondern lediglich ein Containerfile und ein Custom-Toolbox-Build.

Toolbx ist ein Werkzeug für Linux, welches ein CLI für Softwareentwicklung und Troubleshooting bereitstellt, ohne dass ihr dafür alle notwendigen Werkzeuge auf eurem Host-System installieren müsst. Eine Toolbox basiert auf einem OCI-Container-Image. Es gibt sie in verschiedenen Geschmacksrichtungen. Bitte schaut für weitere Informationen in die Dokumentation.

Bei kcli-toolbox handelt es sich um ein Toolbox-Container-Image, bei dem kcli schon vorinstalliert ist. Das Image wird jeden Dienstag um 03:42 Uhr Ortszeit neu gebaut, um es auf einem aktuellen Stand zu halten.

Mir enthält der Abschnitt „Container Install“ der kcli-Dokumentation zu viele Optionen und aliases, die ich mir nicht merken möchte. Die Builds für EPEL-9 schlagen seit einiger Zeit fehl, so dass ich unter RHEL 9 nicht die letzte Version als RPM nutzen kann. Daher kam mir die Idee zu kcli-toolbox. Ich habe hiermit die aktuellste Version für Fedora 44 und kann diese so natürlich nutzen, als wäre sie als RPM-Paket installiert.

Probiert es doch gerne selbst einmal aus. Hinweise dazu findet ihr in der README.md.

31. Mai 2026

Als Black Swan bezeichnet man Ereignisse, die erst unvorstellbar erscheinen, dann die Welt verändern und im Nachhinein unvermeidlich wirken: Man hätte es doch wissen müssen.

LLMs in der Softwareentwicklung fühlen sich wie so ein Ereignis an, wenn man sich die Geschwindigkeit und Breite der Adaption und ihre Auswirkungen anschaut. Die Erwartung war: Robotik übernimmt erst körperlich schwerere Aufgaben, Automatisierung übernimmt dann die mühsamen, repetitiven Aufgaben und irgendwann wird Programmierung durch No-Code-Werkzeuge verborgen. Was stattdessen passiert, ist das Gegenteil von No-Code: eine Maschine, die unendlich viel Code ausspuckt und den Programmierer als quasi „den“ White-Collar-Beruf imitiert. Aus No-Code wird More-Code. Dadurch wird ausgerechnet zuerst der Programmierer zur Zielscheibe: Die teuren Positionen geraten unter Druck - und das auch noch zuerst.

Anders gefordert

Wer mit diesen Tools arbeitet, merkt schnell: Man kommt schneller zu Ergebnissen. Auch bei komplexen Anfragen, auch auf bestehenden Codebases.

Die kognitive Arbeit verschiebt sich dabei, sie verschwindet nicht. Früher hat man während des Schreibens ein mentales Modell aufgebaut und die Lösung entstand beim Denken in Code.

Heute bekommt man Code, den etwas anderes gedacht hat. Man muss dieses fremde Modell verstehen, beurteilen und einordnen. Das fordert nicht weniger, nur anders.

Vicki Boykis beschreibt es gut: es wird immer wichtiger, „in Form“ zu bleiben. Datenstrukturen, Pattern, Basics, weil das Urteilsvermögen über Code wichtiger wird als das Schreiben von Code. Wer die Grundlagen versteht, kann bewerten, und wer nur prompten kann, navigiert blind.

Beschleunigung in alle Richtungen

Die zweite Auswirkung ist einfacher zu beschreiben: Mehr. Von allem.

Das gilt nicht nur für die produktive Seite: Softwareprojekte werden zunehmend von KI-generierten Security-Reports und Exploits überschwemmt, weil – Überraschung – LLMs sich auch für die Schwachstellensuche einsetzen lassen. Kombiniert man das noch mit einem finanziellen Anreiz, entstehen Auswüchse, die jetzt wieder mühselig eingefangen werden müssen.

Das ist kein Randphänomen, Daniel Stenberg beschreibt es ganz gut. Zusammen mit den beobachteten Lieferkettenangriffen sind die AI Reports vermutlich eines der dominantesten Themen der IT-Sicherheit und des Open-Source-Ökosystems dieses Jahr. Die Beschleunigung trifft nicht nur die produktive und konstruktive Seite.

Wer LLMs als Werkzeug demokratisiert, demokratisiert auch Angriffsfähigkeit. Das ist keine Nebenwirkung. Das ist dasselbe Werkzeug, dasselbe Tempo. Die Last tragen die sowieso schon wenigen Maintainer, Entwickler und Admins, die das verarbeiten müssen.

Die Messlatte steigt

Entwickler waren teuer. Nicht aus Willkür, sondern weil die Arbeit schwer und das Angebot knapp ist. Die naive Annahme wäre: Wenn das Werkzeug die Arbeit erleichtert, sinkt der Druck. Das Gegenteil passiert.

Coding-Agents senken nicht die Schwierigkeit der Kernarbeit. Verstehen, beurteilen, verantworten – das bleibt schwer. Was sie verschieben, ist die Erwartung. Du hast doch jetzt die Werkzeuge. Die Benchmark ist nicht mehr der gute Entwickler, sondern der gute Entwickler mit Agenten. Also muss jeder für mehr getane Arbeit geradestehen. Gleiche kognitive Last, höheres Volumen obendrauf. Das ist kein neues Muster: Werkzeuge entlasten selten, sie heben die Norm.

Und genau deshalb heizt es sich an. Die Arbeit verdichtet sich auf weniger Schultern. Hiervon kann man fast schon täglich an vielen Stellen lesen, auch wenn KI dabei eher als Korrelation denn als Kausalität erscheint. Trotzdem setzt sich eine Erzählung fest: Jetzt gebe es KI und wer was reißen wolle, müsse jetzt mehr umsetzen. Näher ans Produkt, näher an den Kunden, näher an die Verantwortung.

Und teuer bleibt es ohnehin. Die Ersparnis, die man sich von den Werkzeugen versprach, taucht als neue Rechnung wieder auf: Was an Stellen wegfällt, fließt ins Token-Budget. „Tokenmaxxing“ nennt man das. Nur schrumpft diese Stelle nicht, sie wächst – weil billiger pro Anfrage eben nicht weniger Anfragen heißt, sondern mehr. Das Unternehmen spart nicht, es zahlt woanders, und meist mehr. Der Druck, der dabei entsteht, landet wieder bei denen, die noch da sind.

Was bleibt: die eigentliche Arbeit

Die eigentliche Frage ist nicht, was Maschinen übernehmen. Die Frage ist, was danach noch zählt. Bei Open Source zum Beispiel kann es nicht mehr nur die Verfügbarkeit von Funktionalität oder Alternativen zu proprietären Lösungen sein. Code generieren kann man sich selber. Was bleibt, ist das Projekt als kuriertes Ganzes: konsistentes Design, wenig Bugs, eine klare Vision, Vertrauen in die Maintainer. Das sind Gründe, warum man zu einem Projekt greift.

Und das gilt auch für den Beruf selbst. Die Essenz der Informatik war nie das Tippen. Sie war die Transformation: Ein Problem verstehen, eine Lösung entwerfen, die Umsetzung verantworten. Requirements Engineering und Implementierung sind zwei Seiten davon. Anforderungsanalyse erzeugt den erwarteten Zielzustand, der implementiert werden soll: aus Widersprüchen, impliziten Erwartungen und organisatorischen Realitäten. Das ist schwer zu formalisieren.

Wer erkennt die Anforderungen? Wer definiert das Problem, bevor es gelöst werden kann? Wer prüft, ob die Lösung das richtige Problem löst?

Das wird weiterhin Menschen brauchen. Doch sie werden viel mehr umsetzen müssen, daher stellt sich die Frage: Zu welchem Preis? Den werden wir in den nächsten Monaten sehen.

Heute habe ich in einem meiner Repositorys zwei aufeinanderfolgende Commits gefunden, welche die gleiche Commit-Nachricht hatten. Einer der Commits war leer, während mit dem anderen Änderungen durchgeführt wurden.

Wie es zu dem leeren Commit kam, kann ich nicht sagen, da beide Commits 2020 erstellt wurden. Ich kann lediglich sagen, dass ich damals als Versionsverwaltung Mercurial verwendet hatte.

Ich habe mir nun überlegt wie man unter Jujutsu allgemein leere Commits finden kann. Und diese dann bei Bedarf zu entfernen. Die Lösung war dank Revsets eigentlich recht einfach.

jj log -r '(empty() ~ merges() ~ root() ~ @)'

Hiermit werden alle Commits angezeigt, die folgende Eigenschaften haben.

  • Sie sind leer (abgesehen von der Commit-Nachricht).
  • Es handelt sich nicht um Merge-Commits.
  • Es handelt sich nicht um den Root-Commit.
  • Es handelt sich nicht um die Arbeitskopie.

Um alle gefundenen Commits zu entfernen, kann man folgenden Befehl verwenden.

jj abandon '(empty() ~ merges() ~ root() ~ @)'

Wenn nur ein bestimmter leerer Commit und nicht alle gelöscht werden sollen, kann man jj abandon -r $Change-ID ausführen. Anstelle von $Change-ID trägt man die Change-ID des betreffenden Commits ein.

Die Chancen stehen allerdings ziemlich gut, dass es “immutable Commits” betrifft, bei denen eine Änderung gesperrt ist. Will man diese Commits trotzdem ändern, muss man den Befehl um den Parameter --ignore-immutable erweitern. Da hierbei die gesamte folgende Historie geändert wird, sollte man sich aber daher die Nutzung von --ignore-immutable gut überlegen.

Mozilla hat Version 2.37 seiner VPN-Clients für das Mozilla VPN veröffentlicht. Neben der Entfernung von Telemetrie in allen Clients bringt die neue Version vor allem für Apple-Nutzer einige Neuerungen.

Mit dem Mozilla VPN bietet Mozilla in Zusammenarbeit mit Mullvad sein eigenes Virtual Private Network an und verspricht neben einer sehr einfachen Bedienung eine durch das moderne und schlanke WireGuard-Protokoll schnelle Performance, Sicherheit sowie Privatsphäre: Weder werden Nutzungsdaten geloggt noch mit einer externen Analysefirma zusammengearbeitet, um Nutzungsprofile zu erstellen.

Jetzt Mozilla VPN nutzen

Die Neuerungen vom Mozilla VPN 2.37

Mit dem Mozilla VPN 2.37 hat Mozilla Telemetrie aus seinen VPN-Clients weitestgehend entfernt. Übrig geblieben ist lediglich eine Diagnostik für Programmabstürze, wofür die bisherige Option weiterhin bestehen bleibt.

Auf iOS kann das Mozilla VPN jetzt via Siri aktiviert und deaktiviert werden. Außerdem kann das Ein- und Ausschalten über die Shortcuts-App von iOS automatisiert werden.

Außerdem auf iOS möglich ist es nun, einen Schalter zum Kontrollzentrum oder dem Sperrbildschirm hinzuzufügen. Auf den neuesten iPhones ist es möglich, das Mozilla VPN als Funktion der Aktionsschaltfläche zu wählen.

Auf macOS werden jetzt auch Nur-IPv6-Netzwerke unterstützt.

Unter Linux mit Gnome und Wayland wurde ein Problem mit den Fensterdekorationen behoben. Ebenso unter Linux behoben wurden Probleme, die in Nur-IPV6-Netzwerken während der Verwendung von Multi-Hop auftreten konnten.

Ansonsten bringt das Update auch wieder Fehlerbehebungen und Verbesserungen unter der Haube.

Der Beitrag Mozilla VPN 2.37 entfernt Telemetrie und bringt viele Neuerungen für Apple-Nutzer erschien zuerst auf soeren-hentzschel.at.

30. Mai 2026

Ich spiele selbst mit. Das wissen die meisten, die schon im globalen Chat unterwegs waren. Der Vorteil: ich merke recht schnell, wenn etwas nicht stimmt. Der Nachteil:
manchmal liegt der Entwickler in mir mit dem Spieler in mir im Clinch.

Aber zur Sache. Die Beta neigt sich dem Ende. In den nächsten Tagen kommt ein Reset, alle Spielstände werden zurückgesetzt, die Tester-Accounts fallen weg.

Wer bisher dabei war:

Danke. Es war ein holpriger Start mit einigen Bugs, aber das Feedback hat geholfen und einiges davon ist schon eingeflossen.

Die Abstimmung zum Spielziel habe ich ausgewertet. Das Saison-Modell hat gewonnen: ein klarer Zeitrahmen, ein klares Ziel, dann Reset und neue Runde.

Wie lang eine Saison geht und was den Sieger auszeichnet, dazu kommt noch ein separater Beitrag.

Bis zum Reset kommen noch ein paar Änderungen ins Spiel. Ich verrate noch nicht alles, aber: Planeten bekommen mehr Gewicht, nicht nur für die Produktion. Wer mehr davon hält, kommt auch in der Forschung weiter. Und eine der Rassen bekommt eine neue Technologie, die defensiv ausgerichtet ist. Welche das ist, findet sich im Spiel.

Für die erste Saison ist außerdem ein Abstimmungssystem geplant, direkt im Dashboard. Ich hatte bisher den globalen Chat dafür verwendet, was funktioniert hat, aber umständlicher war als es sein müsste.

Rückmeldungen wie immer: per Chat im Spiel, über das Feedback-Formular oder als Kommentar hier.

 

29. Mai 2026

Weitere Benutzer werden anlegt – am Beispiel eines Gastnutzers und einer neuen regulären Benutzerin. Nebeneffekt des heutigen Setups: Heute wird nochmal ganz klar, welche "Nixe" für was zuständig ist.



Nochmal kurz in Erinnerung gerufen: NixOS trennt sauber zwischen zwei Ebenen:

Ebene Wer verwaltet
System (configuration.nix, flake.nix) Admin (sudo)
Benutzerumgebung (home.nix) Benutzer selbst

Diese Trennung ermöglicht zwei sehr unterschiedliche Szenarien:
Einen Gastnutzer ohne Passwort dessen Umgebung der Admin vollständig
kontrolliert, und eine eigenständige Benutzerin die ihre Konfiguration
selbst verwaltet.

Im Beispiel habe ich die zusätzliche Nutzerin "Anna" getauft.

Anna Gast
Eigene Programme installieren und updaten ✅ selbst ❌ nur Admin
Desktop-Einstellungen ändern

Der Unterschied zwischen den zwei Szenarien

Anna (Standalone): Anna hat ihren eigenen unabhängigen Home Manager der nichts mit der flake.nix zu tun hat. Sie führt home-manager switch selbst aus.

Für Anna braucht NixOS nur zwei Dinge zu wissen:

  1. Dass der Benutzer anna existiert → configuration.nix
  2. Welches Passwort sie hat → sudo passwd anna

Alles andere – ihre Programme, ihr Theme, ihre Shell – ist Annas Privatangelegenheit und wird von ihr selbst über home-manager switch geregelt.

Gastnutzer (als NixOS-Modul): Hier definierst du, neben der configuration.nix, in der flake.nix, wie du mit Gästen umgehen möchtest. Du sagt NixOS: „Verwalte die Benutzerumgebung von gast mit dieser Datei (home-gast.nix)." NixOS baut die Gast-Umgebung beim nixos-rebuild dann automatisch ein.

Konfigurationsdateien zum Download

Wer das so umsetzen möchte, kann sich eine home-gast.nix, die home-anna.nix und einen Vorschlag für eine Nutzeranleitung HIER herunterladen.

Szenario A: Gastnutzer anlegen

Der Gastnutzer betritt das System ohne Passwort und bekommt eine feste
Ausstattung (Firefox, Thunderbird, LibreOffice) die nur der Admin ändern kann.

Schritt 1: Gastnutzer in configuration.nix anlegen

# In configuration.nix
users.users.gast = {
  isNormalUser = true;
  description  = "Gast";
  extraGroups  = [];        # Keine Berechtigungen – kein sudo!
  password     = "";        # Kein Passwort
};

# Leere Passwörter beim Login erlauben
security.pam.services.gdm-password.allowNullPasswords = true;
security.pam.services.login.allowNullPasswords = true;

Schritt 2: home-gast.nix erstellen

Einen Vorschlag für den Inhalt habe ich dir in einer home-gast.nix für den Download vorbereitet.
Du als Admin legst die Konfiguration des Gastnutzers nach deinen Vorstellungen an, editiere also ruhig meinen Vorschlag:

sudo nano /etc/nixos/home-gast.nix

Schritt 3: flake.nix um den Gastnutzer erweitern

Wenn ein Gastzugang auf allen Rechnern eingerichtet wird, dann geht das ungemein elegant durchg Ergänzen descommon-modules-Block in der flake.nix:

{
  home-manager.useGlobalPkgs = true;
  home-manager.useUserPackages = true;
  home-manager.backupFileExtension = "backup";
  home-manager.users.DEIN-USERNAME = import ./home.nix;
  home-manager.users.gast          = import ./home-gast.nix;  # ← neu
}

Soll nur der Heimrechner (im Beispiel ist der Hostname nixos) mit einem Gastzugang ausgestattet werden, dann statt des obigen Eintrags nur den rechnerspezifischen Block ergänzen:

# Nur auf dem Heimrechner "nixos"
  nixos = nixpkgs.lib.nixosSystem {
    modules = common-modules ++ [
      ./nixos.nix
      ./hardware-configuration.nix
      { home-manager.users.gast = import ./home-gast.nix; } # ← nur hier
    ];
};

Schritt 4: Dateirechte setzen

Der Gastnutzer bekommt keine Schreibrechte auf seine Konfigurationsdatei –
nur der Admin darf sie ändern:

# home-gast.nix gehört root, kein Schreibrecht für andere
sudo chmod 644 /etc/nixos/home-gast.nix
sudo chown root:root /etc/nixos/home-gast.nix

Schritt 5: Rebuild und sichern

cd /etc/nixos
sudo git add home-gast.nix
update-push

Nach dem Rebuild erscheint gast im (GDM-)Anmeldebildschirm – ohne Passwortfeld,
einfach anklicken und einloggen.

Szenario B: Eigenständige Benutzerin Anna anlegen

Anna bekommt einen vollwertigen Account und verwaltet ihre Konfiguration
komplett selbst – ohne den Admin zu benötigen.

Schritt 1: Anna in configuration.nix anlegen

users.users.anna = {
  isNormalUser = true;
  description  = "Anna";
  extraGroups  = [ "networkmanager" ];  # Kein "wheel" → kein sudo!
};

Kein wheel in extraGroups – Anna bekommt kein sudo und kann damit
weder nixos-rebuild noch Systemdateien ändern.

Schritt 2: Rebuild damit der Account existiert

update-push

Schritt 3: Passwort für Anna setzen

sudo passwd anna

Schritt 4: Initiale home-anna.nix vorbereiten

Wie eine home-anna.nix aussehen kann, habe ich ebenfalls als Download vorbereitet.

Du als Admin legst Annas initiale Konfiguration in ihrem Home-Verzeichnis ab:

sudo mkdir -p /home/anna/.config/home-manager
sudo cp /etc/nixos/home-anna.nix /home/anna/.config/home-manager/home.nix
sudo chown -R anna:users /home/anna/.config/home-manager

Anna bekommt damit eine fertige Startumgebung – alle auskommentierten
Programme kann sie nach Belieben selbst aktivieren.

Schritt 5: Anna richtet ihren eigenen Home Manager ein

Dir als Administrator empfehle ich, dass du dich einmal selbst als Anna anmeldest und die Umgebung im Terminal einrichtest - das würde sie selbst überfordern:

# Als anna – kein sudo!
nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz home-manager
nix-channel --update
nix-shell '' -A install

Damit Anna weiß, wie sie sich in NixOS zurechtfindet, habe ich ihr eine kleine Anleitung erstellt.

Die Kurzfassung für Anna:

# Programme hinzufügen: home.nix editieren, dann:
home-manager switch

Zusammenfassung: Welcher Weg für wen?

Szenario Ansatz Konfiguration liegt in
Gastnutzer Admin verwaltet alles /etc/nixos/home-gast.nix
Eigenständige Benutzerin User verwaltet selbst ~/.config/home-manager/home.nix
also nicht in /etc/nixos
Admin (Du) Home, Konfiguration, Flakes /etc/nixos/home.nix /etc/nixos/configuration.nix /etc/nixos/flake.nix

Alle drei Szenarien laufen friedlich nebeneinander – jeder Benutzer auf seiner eigenen Ebene.

Artikel der NixOS-Reihe


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

28. Mai 2026

Vor einigen Wochen hatte ich eine Idee: ein textbasiertes Browser-Space-MMO, angelehnt an ein Konzept, das ich 2004 mal skizziert hatte. Dass es in 22 Entwicklungssessions live gehen und eine aktive Community anziehen würde, hatte ich nicht erwartet. Dieser Artikel beschreibt, wie das möglich war.

Der ehrliche Spoiler: Ich hatte Hilfe

MMO-20044 wurde nicht allein von mir programmiert. Mein Entwicklungspartner heißt Claude, ein KI-Assistent von Anthropic. Aber "KI hat den Code geschrieben" trifft es nicht richtig. Die Realität ist differenzierter und, wie ich finde, interessanter.

Superpowers: Der Workflow macht den Unterschied

Das Entscheidende liegt nicht im KI-Modell selbst, sondern in einem Workflow-Framework namens Superpowers, einem strukturierten System für KI-gestützte Softwareentwicklung. Der Ablauf für jedes Feature sieht so aus:

  1. Brainstorming: Ich beschreibe die Idee, die KI stellt gezielte Fragen, wir erarbeiten gemeinsam ein Design
  2. Spec schreiben: Ein vollständiges Designdokument wird erstellt und von mir genehmigt
  3. Implementierungsplan: Jede Aufgabe wird in kleine, testbare Schritte aufgeteilt
  4. Subagent-Driven Development: Für jede Aufgabe wird ein frischer KI-Subagent beauftragt, der TDD (Test-Driven Development) folgt
  5. Zwei Review-Stufen: Erst prüft ein Spec-Reviewer, ob die Anforderungen erfüllt sind, dann ein Code-Quality-Reviewer, ob der Code sauber ist

Das klingt aufwändiger als "schreib mir eine Funktion", und das ist es auch. Aber genau das macht den Unterschied zwischen Code-Snippets und einem echten Produkt.

Was ich beigetragen habe

Meine Rolle war die des Produktmanagers und Spieldesigners. Ich habe entschieden:

  • Welche Features gebaut werden (und welche nicht, YAGNI ist ein echtes Prinzip)
  • Wie das Spielgefühl sein soll: Ticks als Währung, prozedurales Universum, taktischer Kampf
  • Wann etwas gut genug ist und wann es noch überarbeitet werden muss
  • Wie auf Community-Feedback reagiert wird

Kein einziger Implementierungsvorschlag wurde blind übernommen. Jede Spec habe ich gelesen und freigegeben, jedes Feature im Browser getestet.

22 Sessions, 311 Tests, eine lebendige Community

Das Ergebnis nach 22 Entwicklungssessions:

  • Tick-Engine, prozedurales Universum, 8 Rassen mit eigenem Forschungsbaum
  • Kampfsystem mit Narrativ, Spionage, NPC-Handelsrasse
  • Planetenproduktion, Reisen, Besiedeln, Action-Queue
  • Auth, Admin-CLI, Feedback-System, Rangliste
  • Chat-System (Global + Direktnachrichten) mit Bad-Word-Filter und Ungelesen-Indikator
  • 311 automatisierte Tests, kein manuelles Klicken um Regressionen zu finden

Was mich am meisten überrascht hat: Die Community ist aktiv. Spieler melden Exploits (1-Tick-Angriffe wurden am ersten Tag gefunden und gefixt), wünschen sich Features (parallele Forschungsslots kamen auf Feedback) und diskutieren im integrierten Chat über das Spielziel.

Was ich gelernt habe

KI-gestützte Entwicklung ist kein Autopilot. Der strukturierte Workflow, Spec vor Code, Tests vor Implementierung, Review nach jeder Aufgabe, ist nicht optional, sondern der Kern des Ansatzes. Ohne diesen Rahmen entstehen schnell technische Schulden, die jede Geschwindigkeit wieder auffressen.

Die Ideen kommen vom Menschen. Die KI kann keine gute Spielmechanik erfinden, die ich nicht zuvor als Anforderung formuliert habe. Was sie kann: diese Ideen zuverlässig, schnell und mit hoher Codequalität umsetzen.

Das Spiel ist kostenlos und werbefrei spielbar. Wer neugierig ist: zockertown.de/mmo/