Journal Gestion de paquets et DevOps avec Nix, tour d'horizon sur un cas concret

Posté par (page perso) . Licence CC by-sa.
26
23
jan.
2020

Nix et GNU Guix sont des gestionnaires de paquets "fonctionnels", au sens de la programmation fonctionnelle. Cette approche de la gestion de paquets est très différente de l'approche habituellement utilisée par les sytèmes Linux ou BSD, à base de collections de ports ou de dépôts de paquets.

Cette approche fonctionnelle apporte de nombreux avantages. Non seulement elle permet de fournir une gestion de paquet fiable, reproductible, multi-version et multi-utilisateur, mais apporte également de nombreuses fonctionnalités supplémentaires : gestion d'un environnement (...)

Guix : un outil pour les remplacer tous

Posté par . Édité par palm123, Benoît Sibaud et Davy Defaud. Modéré par Ysabeau. Licence CC by-sa.
Tags :
41
19
jan.
2020
Distribution

« GNU Guix est un gestionnaire de paquets pour GNU. Il est inspiré par le gestionnaire de paquets Nix, son principal apport est l’Interface de programmation GNU Guile et sa spécialisation dans la fourniture de logiciels libres. Au mardi 31 décembre 2019, GNU Guix permet d’installer 11 174 logiciels. » (Wikipédia)

Dans le journal dont est tirée cette dépêche, Andréas Livet nous raconte sa découverte de Guix.

Journal Flatpak et Nix

Posté par (page perso) . Licence CC by-sa.
Tags :
18
26
déc.
2019

Flatpak est un "système de construction et de déploiement d'applications de bureau sur Linux". C'est un outil assez similaire à Snap et à AppImage, les fameux "gestionnaires de paquets universels". Ces gestionnaires de paquets sont censés apporter deux avantages principaux :

  • permettre à un utilisateur normal d'installer des logiciels, qui ne sont pas forcément fournis par la logithèque de sa distribution;

  • permettre à un développeur de packager un logiciel facilement pour tout un ensemble de distributions Linux.

Il existe (...)

Journal Configurer VSCode pour Haskell (Debian/Nix/NixOS)

Posté par (page perso) . Licence CC by-sa.
14
25
déc.
2019

Comme beaucoup de langages de programmation, Haskell n’a pas d’environnement de développement officiel ni même consensuel. Cependant, il existe différentes configurations classiques : Emacs + Intero/Dante, Vim + Ghcid, IntelliJ-Haskell…

Depuis quelque temps, l’éditeur de texte Visual Studio Code propose un environnement intéressant pour développer en Haskell, notamment couplé à HIE et à Stack. Cette configuration apporte les principales fonctionnalités d’un IDE : coloration syntaxique, navigation de code, compilation, documentation, auto‑complétion… Cependant, l’installation de ces outils n’est pas complètement triviale (...)

Gestion de paquets évoluée avec Nix : cachix, overlays et home‑manager

Posté par (page perso) . Édité par MmeQuignon, Davy Defaud, ZeroHeure, Guillaum et palm123. Modéré par patrick_g. Licence CC by-sa.
Tags :
39
25
nov.
2019
Administration système

Nix est un gestionnaire de paquets dont les débuts remontent à 2003. Il a pour but de rendre la gestion de paquets fiable, reproductible et personnalisable. Il permet notamment de faire des mises à jour atomiques, d’annuler des mises à jour, d’installer des multiples versions d’un même paquet, de définir précisémment des environnements logiciels… Il peut être installé sur n’importe quelle distribution GNU/Linux et sur macOS. Enfin, Nix a également inspiré un projet assez similaire : GNU Guix.

De nombreux outils ont été développés sur la base de Nix : la logithèque Nixpkgs, la distribution GNU/Linux NixOS, l’outil de déploiement de machines Nixops, le système de construction et de cache de paquets binaires Hydra, l’outil de construction d’images Docker Docker Tools, etc.

Cette dépêche présente trois outils très pratiques pour gérer son environnement utilisateur : un service de cache de paquets binaires (Cachix), un outil de personnalisation de la logithèque (Overlays) et un outil de configuration de l’environnement utilisateur (home‑manager).

Journal Gérer son environnement utilisateur NixOS, avec Home-manager

Posté par (page perso) . Licence CC by-sa.
17
11
nov.
2019

Home-manager est un outil qui permet de gérer son environnement utilisateur : environnement de bureau, thème de fenêtre, thème d'icones, logiciels, paramètres des logiciels, services utilisateur, "dot files"…

Home-manager est prévu pour fonctionner sur la distribution linux NixOS et utilise le gestionnaire de paquets Nix.

code source - vidéo youtube - vidéo peertube

Présentation de home-manager

Pour faire simple, le but de home-manager est de fournir l'équivalent du fichier /etc/nixos/configuration.nix mais pour l'environnement utilisateur (au lieu de l'environnement système) (...)

Journal Étendre ou modifier sa logithèque Nix avec les overlays

Posté par (page perso) . Licence CC by-sa.
Tags :
16
10
nov.
2019

Le gestionnaire de paquets Nix est hautement personnalisable. Pour cela, il reprend le principe de la composition de fonctions : un paquet est en fait une fonction qui indique comment ajouter ou modifier un logiciel à partir d'un environnement logiciel d'entrée.

Ainsi, la logithèque Nix n'est qu'un ensemble de paquets qui peuvent être appliqués pour construire l'environnement logiciel final. Les overlays permettent de modifier les paquets de cet ensemble ou d'en ajouter de nouveaux.

vidéo youtube - vidéo peertube

Principe

(...)

Journal Cachix, un service de cache binaire basé sur Nix

Posté par (page perso) . Licence CC by-sa.
Tags :
16
10
nov.
2019

Cachix permet de gérer facilement un cache personnel de paquets binaires. Concrètement, il s'agit d'un service de cloud et d'un logiciel client, le tout basé sur le gestionnaire de paquets Nix. Cachix propose différentes offres, dont une offre gratuite de 10 Go de stockage en accès public.

Quand on utilise la logithèque officielle de Nix, on télécharge des paquets binaires déjà compilés. Nix permet très facilement d'empaqueter des programmes/bibliothèques personnels ou de modifier les paquets officiels. Mais dans (...)

Déployer une application Web C++ sur Heroku avec Docker et Nix

Posté par (page perso) . Édité par ZeroHeure, Davy Defaud, Nÿco et palm123. Modéré par ZeroHeure. Licence CC by-sa.
Tags :
30
15
nov.
2018
Communauté

Les services de plate‐forme (PaaS) comme Heroku permettent de déployer des applications Web écrites dans des langages comme PHP, Ruby, Java… Cependant, déployer des applications C++ est plus compliqué (portabilité de l’interface binaire ABI, gestion des dépendances, etc.). Cette article présente plusieurs solutions pour déployer des applications Web C++ sur Heroku, en utilisant des images Docker et le gestionnaire de paquet Nix.

Journal Déployer une application web C++ sur Heroku avec Docker et Nix

Posté par (page perso) . Licence CC by-sa.
17
15
nov.
2018

Les services de plateforme (PaaS) comme Heroku permettent de déployer des applications web écrites dans des langages comme PHP, Ruby, Java… Cependant, déployer des applications C++ est plus compliqué (portabilité de l'interface binaire ABI, gestion des dépendances…). Ce post présente plusieurs solutions pour déployer des applications web C++ sur Heroku, en utilisant des images Docker et le gestionnaire de paquet Nix.

Voir aussi : code source - vidéo youtube - vidéo peertube

Exemple d'application web C++ avec

(...)

Journal Créer et partager des paquets Nix

Posté par (page perso) . Licence CC by-sa.
14
26
avr.
2018

Suite aux différents journaux sur la création de paquets, voici quelques astuces pour Nix/Nixos.

article original sur github

vidéo bonux sur youtube

Introduction

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 
(...)

Le gestionnaire de paquets Nix en version 2.0

48
3
avr.
2018
Gestion de versions

Nix est un gestionnaire de paquets fonctionnel dont la version 2.0 est sortie récemment. Parmi les nouveautés, on peut noter qu’une commande nix a été introduite pour uniformiser les différentes sous‐commandes (nix-build, nix-env, etc.) et avoir de meilleures options par défaut (pour la recherche de paquets notamment). Une bonne partie du reste du travail concerne des couches moins visibles mais néanmoins importantes : prise en charge de HTTP/2, amélioration de sécurité, etc.

Logo Nix

Nix peut être utilisé sur n’importe quelle distribution GNU/Linux en complément du gestionnaire de paquets habituel. Il existe également une distribution GNU/Linux articulée autour de Nix : NixOS. La version 18.03 de NixOS, prévue pour sortir très prochainement, inclura Nix 2.0.

Mise à jour : Nix 18.03 est sorti.

Journal le "style fonctionnel" en vidéos (Nix, NixOS, Haskell)

42
8
jan.
2018

Salut

Si ça intéresse quelqu'un, j'ai fait quelques vidéos sans prétention sur l'utilisation de Nix/NixOS et la programmation en Haskell. Pour l'instant, il n'y en a qu'une dizaine; je pense en faire d'autres plus tard mais… plus tard.

Les vidéos : https://www.youtube.com/watch?v=i6s-G_Hh3s4&list=PLe8vnuC2T7iGE3w_d-MCHw5mLzRAMiCM9

Les résumés + codes : https://github.com/nokomprendo/tuto_fonctionnel

Les sujets des vidéos :
01 : Installation de NixOS
02 : Gestion de paquets avec Nix
03 : Installation de Nix sur Debian
04 : Utilisation des canaux avec Nix/NixOS
05 (...)

Nix pour les développeurs

Posté par (page perso) . Édité par Xavier Claude, Benoît Sibaud, tankey, Davy Defaud, ZeroHeure et palm123. Modéré par Xavier Claude. Licence CC by-sa.
Tags :
53
6
juil.
2017
Technologie

Nix est un gestionnaire de paquets « fonctionnel » (basé sur des fonctions, sans effet de bord). Cette caractéristique apporte des avantages indéniables, notamment de pouvoir mettre en place des environnements logiciels isolés, reproductibles et composables. Ceci peut être très utile à un administrateur système mais également à un développeur.

On trouve pas mal d’informations sur l’écosystème Nix et son utilisation, ainsi que des retours d’expérience des utilisateurs. En revanche, les documents à destination des développeurs sont moins nombreux et se limitent souvent à l’utilisation ou à la mise en place d’environnements de développement simples.

Cet article a pour objectif d’illustrer l’intérêt de Nix pour un développeur dans des cas simples et « un peu moins simples ». Pour cela, il se base sur un projet d’exemple en C++ et en Python, mais Nix peut également être utilisé pour d’autres langages. Je ne suis pas un expert en Nix, donc n’hésitez pas à proposer vos remarques ou améliorations dans les commentaires ou sur le dépôt GitHub du projet d’exemple.