Je suis en train d'empaqueter une application python pour Nix, mais je trouve que la majorité de la documentation suppose que je veux empaqueter une bibliothèque. Pour ce faire, j'ai regardé l'exemple de Rednotebook (pas pour une raison particulière autre que je savais qu'il était écrit en python), qui peut être trouvé dans python-packages, mais comme ce fichier est si énorme, ici est la partie pertinente:Dans Nixpkgs, qu'est-ce qui fait qu'une dérivation python est une application plutôt qu'une bibliothèque?
redNotebook = buildPythonPackage rec {
name = "rednotebook-1.8.1";
src = pkgs.fetchurl {
url = "mirror://sourceforge/rednotebook/${name}.tar.gz";
sha256 = "00b7s4xpqpxsbzjvjx9qsx5d84m9pvn383c5di1nsfh35pig0rzn";
};
# no tests available
doCheck = false;
propagatedBuildInputs = with self; [ pygtk pywebkitgtk pyyaml chardet ];
meta = {
homepage = http://rednotebook.sourceforge.net/index.html;
description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds";
license = licenses.gpl2;
maintainers = with maintainers; [ tstrobel ];
};
};
Ma dérivation ressemble à ceci:
{ pkgs ? import <nixpkgs> {} }:
let
requirements = import ./nix/requirements.nix { inherit pkgs; };
in
pkgs.python35Packages.buildPythonPackage rec {
name = "package-name";
version = "1.0.0";
namePrefix = "";
src = ./.;
doCheck = false;
propagatedBuildInputs = builtins.attrValues requirements.packages;
}
requirements.nix
était la sortie de pypi2nix
et requirements.packages
a le type "liste des dérivations". Malgré cela quand je cd dans le chemin de la banque résultant pour Rednotebook il y a un répertoire /bin
avec quelques scripts de wrapper. Le chemin du magasin pour mon application il y a juste un lib
un non /bin
Comment puis-je dire à Nixpkgs que j'ai une application?