Photo by Stefan Steinbauer / Unsplash

Versteckte Möglichkeiten von Nix in Südtiroler Entwicklergemeinschaften

nixos 13. Juni 2025

Das Entwickeln von Anwendungen auf NixOS, wie wir es in unserem Südtiroler Entwicklergemeinschaft tun, hat uns auf eine versteckte Möglichkeit aufmerksam gemacht, die uns erlaubt hat, unsere Arbeitsabläufe effizienter zu gestalten. Seit der Veröffentlichung von NixOS 25.05 hat sich das Nix-Ökosystem erheblich weiterentwickelt und bietet Entwicklern immer mehr Möglichkeiten.

Ein Beispiel dafür ist die Einführung von Nix Flakes, einer neuen Methode zur Verpackung und Verteilung von Nix-Projekten. Dieses Feature ermöglicht es, Projekte mit ihren Abhängigkeiten zu versiegeln und diese Versiegelungen zwischen Maschinen zu transportieren. Es erleichtert die Reproduzierbarkeit von Builds und verbessert die Zusammenarbeit zwischen Entwicklern.

Nix Flakes bietet jedoch auch eine weniger bekannte Möglichkeit: die Fähigkeit, benutzerdefinierte Build-Umgebungen für Projekte zu erstellen. Dies ist besonders nützlich, wenn Sie mit einer speziellen Toolchain oder einer bestimmten Version einer Bibliothek arbeiten müssen. Anstatt diese Tools global zu installieren oder sie in jedem Projekt neu zu konfigurieren, können Sie sie in einer Nix Flake spezifizieren und Nix wird diese Umgebung automatisch für Sie erstellen.

Hier ist ein Beispiel, wie Sie eine solche Build-Umgebung erstellen können:

{
  description = "Mein Projekt";
  
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.05";
  
  outputs = { self, nixpkgs }: {
    defaultPackage.x86_64-linux = with nixpkgs; stdenv.mkDerivation {
    name = "mein-projekt";
    buildInputs = [ cmake boost ];
  
    src = self;
    };
  };
}

In diesem Beispiel erstellen wir eine neue Nix Flake für unser Projekt und spezifizieren, dass es zwei Abhängigkeiten hat: cmake und boost. Nix wird diese Tools automatisch in die Build-Umgebung für unser Projekt einfügen, und wir müssen uns keine Sorgen mehr um ihre Installation oder Konfiguration machen.

Diese Funktion ist besonders nützlich in großen Entwicklergemeinschaften wie unserer hier in Südtirol, wo wir oft mit unterschiedlichen Toolchains und Bibliotheks-Versionen arbeiten. Durch die Verwendung von Nix Flakes können wir sicherstellen, dass alle Entwickler die gleiche Umgebung verwenden und Konflikte zwischen den Abhängigkeiten minimieren.

Wir hoffen, dass diese versteckte Möglichkeit von Nix auch in Ihrer Entwicklergemeinschaft hilfreich sein wird. Wenn Sie weitere Fragen zu Nix Flakes oder zu Nix im Allgemeinen haben, zögern Sie nicht, uns zu kontaktieren. Wir sind immer bereit, unsere Erfahrungen zu teilen und anderen Entwicklern zu helfen, die Möglichkeiten von Nix voll auszuschöpfen.

Tags