Skip to main content

Entwicklungsumgebung mit nix-Paketen

Aufmacherbild
Submitted by Erik Wegner on

Der nix-Paketmanager stellt eine attraktive Möglichkeit dar, aktuelle Software auf Linux-Systemen einfach zu installieren. Dabei unterscheidet sich die Bereitstellung, sodass Pakete global oder nur in einer gesonderten Umgebung verfügbar sein können.

Zum Ausprobieren lassen sich Pakete auch in einer temporären Umgebung zusammenstellen. Dazu kommt das Konzept der nix flakes zum Einsatz.

{
description = "Bespielprojekt mit pkg-config, gdk-pixbuf und webkit";

inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
flake-utils.url = "github:numtide/flake-utils";
};

outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
in {
devShells.default = pkgs.mkShell {
buildInputs = [
pkgs.rustc
pkgs.cargo
pkgs.pkg-config
pkgs.libdrm

# dev-Outputs für Header-Dateien und pkg-config-Unterstützung
pkgs.pango.dev
pkgs.libsoup_3.dev
pkgs.gdk-pixbuf.dev
pkgs.webkitgtk_4_1.dev
];

# sicherstellen, dass pkg-config .pc-Dateien findet
PKG_CONFIG_PATH = pkgs.lib.makeLibraryPath [
pkgs.pango
pkgs.libsoup_3
pkgs.gdk-pixbuf
pkgs.webkitgtk_4_1
];

shellHook = ''
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LIBGL_ALWAYS_SOFTWARE=1
'';
};
});
}

Diese Datei sollte ggfs. außerhalb der Quellen des eigentlichen Projektes gespeichert sein, falls beim Betreten der Umgebung ein Fehler kommt.

Betreten der Umgebung

Zum Betreten der Umgebung wird der Befehl benutzt:

nix develop

Dies lädt die notwendigen Bibliotheken und Programme herunter und startet eine passend vorbereitete Shell.