:PROPERTIES: :ID: 0edbf593-2192-479a-8cc4-aefd3e991f2a :END: #+title: Nixpkgs #+filetags: #nix https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md * Bonnes pratiques - Formatteur officiel (en cours d'adoption le 28 mars 2024, https://discourse.nixos.org/t/call-for-testing-nix-formatter/39179/5) #+begin_src sh nix profile install nixpkgs#nixfmt-rfc-style nixfmt package.nix #+end_src Les nouveaux paquets sont dans pkg/by-name - éviter =rec= et utiliser =finalAttrs= plutôt [[https://nixos.org/manual/nixpkgs/unstable/#mkderivation-recursive-attributes][(source)]] - mettre =pname= en dur dans =fetchFromGithub= [[https://github.com/nix-community/nixpkgs-lint/issues/21][(source)]] - utiliser =hash= plutôt que =sha256=]] [[https://nixos.org/manual/nixpkgs/stable/#fetchurl][(source)]] - version = "2.2-unstable-YYYY-MM-DD" s'il n'y a pas de version [[https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-naming][(source)]] Vérifier avec #+begin_src nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD" #+end_src * Variables - =nativeBuildInput= : si exécuté durant le build (ex: cmake) - =buildInputs= : si utilisé à l'exécution ou ajouté dans la sortie (ex: zlib). Attention, il peut falloir ajouter aux 2 ! ** Tests Tester dans nixpkgs qu'il compile #+begin_src sh nix-build -A mypackage #+end_src sh Tester les dépendances #+begin_src sh nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD" #+end_src sh Regarder les variables d'environement : #+begin_src sh env #+end_src sh * [[id:494ea097-edb7-4e5c-b1b7-693e4a5d6df8][Package Python pour nixpkgs]] * [[id:56f7a57a-1807-4d72-abb2-6420eab119c5][Débugger un paquet nix]] * Astuces ** Copier une dérivation en ssh nix copy --from ssh://meso /nix/store/f3ak3jvb9kxv6jd6r7kjbjr1a59hzyrb-tensorflow-2.13.0-python ** Problèmes de drivers graphiques Utiliser [[https://github.com/nix-community/nixGL][nixGL]] si l'on n'utilise pas nixos.