Suivant: Canaux Guix, Précédent: Fichier local, Monter: Configuration [Table des matières][Index]
Remarque : à partir de Guix 0.16, les canaux plus flexibles sont préférables et remplacent ‘GUIX_PACKAGE_PATH’. Voir la section suivante.
Il peut être fastidieux de spécifier le fichier depuis la ligne de commande
par rapport à un appel à guix package --install my-hello
comme on le
ferait pour les paquets officiels.
Guix permet d’uniformiser le processus en ajoutant autant de « répertoires de déclaration de paquets » que vous le souhaitez.
Créez un répertoire, disons ~/guix-packages et ajoutez-le à la variable d’environnement ‘GUIX_PACKAGE_PATH’ :
$ mkdir ~/guix-packages $ export GUIX_PACKAGE_PATH=~/guix-packages
Pour ajouter plusieurs répertoires, séparez-les avec un deux-points
(:
).
Notre ‘my-hello’ précédent doit être légèrement ajusté :
(define-module (my-hello) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix download)) (define-public my-hello (package (name "my-hello") (version "2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) (sha256 (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (build-system gnu-build-system) (synopsis "Hello, Guix world: An example custom Guix package") (description "GNU Hello prints the message \"Hello, world!\" and then exits. It serves as an example of standard GNU coding practices. As such, it supports command-line arguments, multiple languages, and so on.") (home-page "https://www.gnu.org/software/hello/") (license gpl3+)))
Remarquez que nous avons assigné la valeur du paquet à un nom de variable
exportée avec define-public
. Cela assigne en fait le paquet à la
variable my-hello
pour qu’elle puisse être utilisée, par exemple en
dépendance d’un autre paquet.
Si vous utilisez guix package --install-from-file=my-hello.scm
avec
le fichier précédent, la commande échouera car la dernière expression,
define-public
, ne renvoie pas un paquet. Si vous voulez utiliser
define-public
dans ce cas tout de même, assurez-vous que le fichier
termine par une évaluation de my-hello
:
; ... (define-public my-hello ; ... ) my-hello
Ce dernier exemple n’est pas très typique.
Maintenant ‘my-hello’ devrait faire partie de la collection de paquets comme tous les paquets officiels. Vous pouvez le vérifier avec :
$ guix package --show=my-hello
Suivant: Canaux Guix, Précédent: Fichier local, Monter: Configuration [Table des matières][Index]