Skelets numériques
Bonheur déclaratif
Gestion de paquet déclarative
Passons au côté « déclaratif ». C’est un mot emprunté à une branche de la programmation nommée prog fonctionnelle. on va pas faire un cours dessus, mais en gros ça veut dire « on décrit ce qu’est supposé faire un programme plutôt qu’une séquence d’opération ». Donc on décrit à quoi ressemble le résultat d’un programme.
Ce que ça veut dire concrètement dans un package manager ? On décrit entièrement un logiciel comme le résultat de calculs. Les conséquences :
- pas destructif (vu qu’on peut rollback facilement)
- toutes les dépendances doivent être spécifiées vu qu’on build dans un environnement dédié
- une même évaluation produira le même résultat (si je relance un build avec les mêmes entrées, j’obtiens la même sortie)
Pourquoi j’aime ça
- facile pour moi de pas avoir à me préoccuper de ce qui se passe quand j’installe un système. je veux quelque chose qui fournit un résultat final, j’estime que je n’ai pas à me préoccuper de détails techniques sur lesquels je n’ai pas la main. Baisse de la complexité.
- je peux tout casser en changeant plein de paramètres et si ça pète je peux revenir en arrière (il y a des entrées de boot fournies et comme la config est versionnée, je peux rollback à une version précédente)
- je peux sauvegarder ma config qui est représentée comme un ensemble de fichiers textes dans un dépôt git et la mettre sur d’autres ordinateurs en cas de crashes ou de réinstallation. plus besoin de passer des plombes à refaire une config
Mon nouvel OS basé sur le gestionnaire de paquet [[nix]]. Je l’ai setup avec [[home-manager]].
J’ai un dépôt [[git]] avec quelques fichiers de confs que je version ne. Truc stylé: dans l’option home.file
, je peux lister des fichier qui seront gérés par home-manager et les pointer sur des fichiers dans les dépôts. Fort pratique pour versionner sa config de manière unique.