Paketmanager Nix ausprobiert, Teil 3: Bedarfsgerecht paketieren
Nix verpackt Programme für andere Nix-Nutzer sowie in Binaries und Docker-Container. Wir zeigen, wie Sie durch binäre Caches die Arbeit mit Nix beschleunigen.
Die ersten beiden Artikel zum Paketbau mit Nix mündeten in einer "Flake"-Datei, die ein kleines C++- und ein Rust-Beispielprogrämmchen verwaltet. Nix-Nutzer können die Programme damit unter Linux und macOS auf Intel- und ARM-Prozessoren bauen, ausführen und installieren. Außerdem prüft ein pre-commit-Hook bei jeder Codeänderung, ob alle Dateien die Formatierungsregeln einhalten und ob Tools für die statische Analyse Probleme erkennen. Ein passender Workflow im CI-System (Continuous Integration) von GitHub prüft all dies auch nach jedem Push und bei jedem Pull-Request automatisch. Nix kümmert sich um alle genannten Dinge und ist die einzige Abhängigkeit, die dafür installiert sein muss.
Den einzigen Unterschied gegenüber der im zweiten Teil der Artikelreihe [11] [11] beschriebenen Datei [12] [12] stellt die neue Zeile nixpkgs-fmt.enable = true;
dar. Sie aktiviert eine Formatierungsprüfung für Nix-Dateien.
In diesem Artikel zeigen wir, wie Sie aus Nix noch ein Stück mehr Entwicklerkomfort herauskitzeln und vor allem, wie Sie die gebauten Pakete um Docker-Images und Cross-Kompilate erweitern. Das geht unkompliziert und ohne bereits funktionierende Pakete und Workflows zu behindern. Wie gehabt zieht die CI automatisch mit, wenn sie ebenfalls Nix nutzt.
URL dieses Artikels:
https://www.heise.de/-9611393
Links in diesem Artikel:
[1] https://www.heise.de/ratgeber/Paketmanager-Nix-ausprobiert-Softwarepakete-managen-und-bauen-9312211.html
[2] https://www.heise.de/ratgeber/Paketmanager-Nix-ausprobiert-Teil-2-Softwarepakete-managen-und-bauen-9344701.html
[3] https://www.heise.de/ratgeber/Paketmanager-Nix-ausprobiert-Teil-3-Bedarfsgerecht-paketieren-9611393.html
[4] https://www.heise.de/ratgeber/Nextcloud-Kalender-in-ein-Android-Widget-integrieren-9323020.html
[5] https://www.heise.de/hintergrund/Megabyte-Metas-Transformer-Architektur-fuer-maschinelles-Lernen-erklaert-9290201.html
[6] https://www.heise.de/hintergrund/Regulatorische-Compliance-und-DevOps-Herausforderungen-und-Chancen-9187182.html
[7] https://www.heise.de/hintergrund/Programmieren-Rust-und-NET-parallel-einsetzen-9186288.html
[8] https://www.heise.de/hintergrund/Agile-Vorgehensmodelle-Skalierungsframeworks-im-Vergleich-8992374.html
[9] https://www.heise.de/hintergrund/Entwicklerteams-entlasten-Wann-Low-Code-sinnvoll-ist-7543600.html
[10] https://www.heise.de/ratgeber/Softwareentwicklung-Wie-Sie-mit-dem-richtigen-Linker-Zeit-sparen-7462529.html
[11] https://www.heise.de/ratgeber/Paketmanager-Nix-ausprobiert-Teil-2-Softwarepakete-managen-und-bauen-9344701.html
[12] https://github.com/tfc/heise-nix/blob/e2b2f99482e2958a5faaf37151fddb10486e14f1/flake.nix
Copyright © 2024 Heise Medien