From ca63274795a08dbdbe2cfdba6720c47431f8efc8 Mon Sep 17 00:00:00 2001 From: Alexandre LUCAZEAU Date: Thu, 1 Sep 2022 16:41:09 +0200 Subject: [PATCH] ADD postgresl and flask --- posts/Nixos/nix-shell-flask.md | 69 ++++++++++++++++++++++++ posts/Nixos/nixos-nixshell-postgresql.md | 29 ++++++++++ 2 files changed, 98 insertions(+) create mode 100644 posts/Nixos/nix-shell-flask.md create mode 100644 posts/Nixos/nixos-nixshell-postgresql.md diff --git a/posts/Nixos/nix-shell-flask.md b/posts/Nixos/nix-shell-flask.md new file mode 100644 index 0000000..3af1415 --- /dev/null +++ b/posts/Nixos/nix-shell-flask.md @@ -0,0 +1,69 @@ +--- +Date: 2022-09-01 +Author: Alexandre LUCAZEAU +Title: Nixos - développer une application python flask avec nix-shell +Slug: +categories: Nixos +Tags: +- nixos +- nix-shell +- python +- flask +--- +# nix-shell et dotenv +Pour mes besoins de gestion, je souhaite me développer de quoi alimenter une base de données PostgreSQL. Rien de très compliqué, mais qui va me faire gagner du temps et me permettre d'assurer le pilotage de mon entreprise. + +Je suis pas développeur, je connais rien aux css et et pas plus au js. + +Mais je sais de quoi j'ai besoins. +Il y a longtemps que j'aurai du me mettre à un peu de dev. Je vais pas devenir un ténor, mais au moins je serai capable d'avancer. + +Par ou commencer ? Quel language est le plus simple à prendre en main, pour aller à l'essentiel (le service que va me rendre l'application) et une bonne intégration/usage avec mon poste de travail ? + +Après une rapide étude et quelques tests : +* Php : certainement très bien, mais php n'est pas trop utilisé en dehors du web, et j'accroche pas à son fonctionnement. +* Ruby : superbe language, mais les gem c'est toujours la merde. J'ai voulu installer la gem rails et paff ça plante sur la compilation d'un module. Classique mais pénible. +* Python : ça ressemble à une piste valable. J'ai tjs lutter contre mais faut pas être c.. on va donc essayer. Plus particulièrement, il y a le framework Flask qui est réputé simple et rapide à prendre en mains. + +# Mise en place des briques + +## Création d'un environnement de développement + +La solution miracle se nomme nix-shell. Dans ce qui va devenir notre répertoire de développement, on crée le fichier **default.nix** suivant : + + with import {}; + stdenv.mkDerivation rec { + name = "env"; + env = buildEnv { name = name; paths = buildInputs; }; + buildInputs = [ + python3 + python39Packages.flask + ]; + } + +Dans ce fichier on crée une dérivation nommée **rec** constituées des paquets python3 et python39Packages.flask. +La dérivation va nous créer un environnement avec python39 et flask. On peut y ajouter tout ce dont on a besoins, comme le moteur de la bdd PostgreSQL (ce qu'on fera plutard dans le projet) + +Comme je suis faignant, je vais utiliser un fichier **.envrc** pour charger automatiquement mon nix-shell : + + use_nix + +On oublis pas d'autoriser le chargement du fichier **.envrc** via la commande : + + direnv allow + + +Vous devriez maintenant avoir l'environnement de dispo + +## Chargement de l'environnement + +Le chargement de l'environnement python est classique : + + python -m venv .venv + source .venv/bin/activate.fish + +A partir de maintenant vous pouvez commencer à coder + +## On peut pas avoir un chargement automatique ? + +En théorie, on peux, via un shellHook charger l'environnement et même faire installer les paquets python via pip diff --git a/posts/Nixos/nixos-nixshell-postgresql.md b/posts/Nixos/nixos-nixshell-postgresql.md new file mode 100644 index 0000000..fa259fc --- /dev/null +++ b/posts/Nixos/nixos-nixshell-postgresql.md @@ -0,0 +1,29 @@ +--- +Date: 2022-08-22 +Author: Alexandre LUCAZEAU +Title: Nixos - Avoir un environnement PostgreSQL de développement grace à nixshell +Slug: +categories: Nixos +Tags: +- nixos +- nixshell +- postgresql +--- +# Nixos et la doc ? +Une fois entré dans l'univers de **Nixos**, la première chose qui m'a manqué c'est la documentation. + +La lecture du wiki n'est pas facile quand on débute. La source première est bien souvent les dépôts git de ses utilisateurs, une merveille même. + +Il y a un côté assez frustrant, la documentation semble tellement manquée. + +Pourtant, la documentation est complète et la lecture du code des paquets n'est pas très compliquée, on apprend vite à le comprendre. + +Un outil, magique, n'est pas suffisament mis en avant. Il s'agit de **nixos-option**. Cet outil est en réalité un indispensable. Il vous permettra de tout découvrir, et comment l'employer. + +Vous souhaitez mettre en place une sauvegarde avec **restic** ? Vous cherchez la doc sur la création des comptes utilisateurs ? + + nixos-option users.users + nixos-option services.restic.server + nixos-option + +Exécutée sans argument, vous aurez la documentation racine. Libre alors de parcourir les catégories pour découvrir la doc associé, avec des exemples, et la liste des attributs à un mot clé et sa sous arborescence.