vidéo peertube - vidéo youtube - dépôt git - journal linuxfr.org
Créer et partager des paquets Nix
Comment créer un paquet nix pour gérer une dépendance dans un projet. Comment gérer des paquets nix via un dépôt git.
Créer un paquet localement
On développe un projet et on a besoin d’une bibliothèque (par exemple, myhellolib).
- écrire un fichier empaquetant la dépendance
test_myhellolib1/myhellolib.nix
:
{ stdenv, fetchurl, cmake }:
stdenv.mkDerivation rec {
name = "myhellolib";
version = "0.1";
src = fetchurl {
url = "https://framagit.org/nokomprendo/${name}/-/archive/v${version}/${name}-v${version}.tar.gz";
sha256 = "1zyvvf3px69wlzvxrgcgnrkkqwyphpqlqrwxk72cs2vdfd6sh9gn";
};
buildInputs = [ cmake ];
}
- écrire un fichier empaquetant le projet principal
test_myhellolib1/default.nix
:
with import <nixpkgs> {};
let
_myhellolib = import ./myhellolib.nix { inherit stdenv fetchurl cmake; };
in
stdenv.mkDerivation {
name = "test_myhellolib1";
src = ./.;
buildInputs = [ _myhellolib ];
buildPhase = "g++ -o test_myhellolib1 test_myhellolib.cpp -l myhellolib";
installPhase = ''
mkdir -p $out/bin
cp test_myhellolib $out/bin/
'';
}
- compiler le projet :
nix-build
Créer un paquet via un dépôt nixpkgs
On veut mettre nos paquets de dépendances dans un dépot fork de nixpkgs
(par exemple, pour éviter de dupliquer les paquets dans plusieurs projets ou pour soumettre les paquets à la communauté nixpkgs).
- créer une nouvelle branche du dépôt fork :
- créer un dossier pour le paquet :
écrire/copier le paquet dans ce dossier et dans un fichier
default.nix
ajouter le paquet dans le fichier
pkgs/top-level/all-packages.nix
:
- éventuellement, tester la compilation ou installer le paquet :
- compiler les projets en utilisant le dépôt fork :
- pour soumettre le paquet à la communauté nixpkgs, committer/pusher la branche et créer un Pull Request.
Tester un paquet d’un Pull Request
On veut tester un paquet proposé par quelqu’un dans un Pull Request.
- si ce n’est pas déjà fait, ajouter le dépôt principal dans les dépôts remote :
- passer dans la branche du Pull Request :
- tester dans un projet, en utilisant le dépôt du Pull Request :
Conclusion
nix permet facilement de : - créer des paquets localement - regrouper des paquets dans un dépôt - soumettre des paquets à la communauté - tester des paquets soumis