Aide et conseil pour mon premier package NixOS

Bonjour,

Je developpe un outils de calcul numérique et je souhaite le packager pour NixOS

Je souhaiterai de l’aide et conseil sur mon premier package
https://github.com/nelson-lang/nelson/blob/8c32ac68caa4e842793e833d4d0cc8572af1598c/default.nix

Est-ce qu’il vous semble correct ou ai-je oublié quelque chose ?

Merci de votre contribution et conseils

Bonjour,

c’est putôt bien :slight_smile: voilà quelques commentaires:

  • default.nix appelle callpackage sur nelson.nix. La façon idiomatique d’écrire un fichier qui est appelé par callPackage c’est une fonction qui prend toutes les dépendances en argument, plutôt qu’une fonction qui prend pkgs en argument:
{ stdenv, pkg-config, ... }:
stdenv.mkDerivation {
  nativeBuildInputs = [ pkg-config ];
}

plutôt que

{ pkgs }:
pkgs.stdenv.mkDerivation {
  nativeBuildInputs = [ pkgs.pkg-config ];
}

Le style actuel est incorrect pour de la cross-compilation, mais il n’est pas certain que c’est important :slight_smile:

  • eigen est une bibliothèque je pense donc ça doit probablement être un buildInput plutôt qu’un nativeBuildInput. En cas de doute il est possible d’ajouter strictDeps = true et de voir si ça compile encore.
  • pour la source: je pense que le but ici est de compiler “la source dans le dossier courant” plutôt que “la version 1.2.3”. Dans ce cas là il est possible de mettre src=./.;. À chaque lancement de nix-build, nix va copier l’état actuel du dossier dans /nix/store, et compiler à partir de là. C’est pas super performant, et une nouvelle copie est faite si une seule lettre change dans le README. Il est possible de rafiner ça avec diverse fonctions ou d’autres encore. Ces solutions ajoutent de la complexité et ne sont pas parfaites; c’est un compromis.
2 Likes

Merci pour cette réponse