diff --git a/.gitignore b/.gitignore index 546c018..269355f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,14 @@ -.decrypted*.yml - -# Project -docs/nvim/tags +public # direnv .direnv -# Devenv -.devenv* -devenv.local.nix +# LaTeX +*.aux +*.fdb_latexmk +*.fls +*.idx +*.ilg +*.ind +*.log +*.toc diff --git a/content/_index.en.md b/content/_index.en.md index b68f738..198c05f 100644 --- a/content/_index.en.md +++ b/content/_index.en.md @@ -1,15 +1,16 @@ --- -title: Welcome to JSL Devops +title: Welcome --- -During our DevOps journey, we have used a multitude tools and infrastructure, -and encountered many problems. +During our DevOps journey, we use a multitude tools and infrastructure, and +encounter many problems. -Sometimes we have failed to document certain situations, thinking that we We -wouldn't encounter these problems anymore. +Sometimes we judge that it is not necessary to document certain situations, +thinking that we will no longer encounter these problems. -However, recently I have been working with different startups and I have -realized that I found myself repeating the same tasks. +However, recently I have been working with different startups and have found +myself realized that I found myself repeating practically the same tasks. -This is why I decided to create this documentation site to record the problems -we face and their solutions. +This is why I decided to create this site to document the tools that we use as +well as to record the problems we face in our daily lives and provide their +solutions. diff --git a/content/_index.fr.md b/content/_index.fr.md index bd30f33..69fe1c3 100644 --- a/content/_index.fr.md +++ b/content/_index.fr.md @@ -1,15 +1,16 @@ --- -title: Bienvenue sur JSL Devops +title: Bienvenue --- -Au cours de notre parcours en tant que DevOps, nous avons utilisé une multitude -d'outils et d'infrastructures, et avons rencontré de nombreuses problématiques. +Au cours de notre parcours en tant que DevOps, nous utilisons une multitude +d’outils et d’infrastructures, et rencontrons de nombreuses problématiques. -Parfois, nous avons omis de documenter certaines situations, pensant que nous ne -rencontrerions plus ces problèmes. +Parfois, nous jugeons qu'il n'est pas nécessaire de documenter certaines +situations, pensant que nous ne rencontrerons plus ces problématiques. -Cependant, récemment, j'ai travaillé avec différentes startups et je me suis -rendu compte que je me retrouvais à refaire les mêmes tâches. +Cependant, récemment, j’ai travaillé avec différentes startups et je me suis +rendu compte que je me retrouvais à refaire pratiquement les mêmes tâches. -C'est pourquoi j'ai décidé de créer ce site de documentation pour consigner les -problèmes auxquels nous sommes confrontés ainsi que leurs solutions. +C’est pourquoi j’ai décidé de créer ce site pour documenter les outils que nous +utilisons ainsi que pour consigner les problèmes auxquels nous sommes confrontés +dans notre quotidien et apporter leurs solutions. diff --git a/content/developer/_index.en.md b/content/developer/_index.en.md new file mode 100644 index 0000000..a37a0a5 --- /dev/null +++ b/content/developer/_index.en.md @@ -0,0 +1,3 @@ +--- +title: Develop +--- diff --git a/content/developer/_index.fr.md b/content/developer/_index.fr.md new file mode 100644 index 0000000..d7f7084 --- /dev/null +++ b/content/developer/_index.fr.md @@ -0,0 +1,3 @@ +--- +title: Developer +--- diff --git a/content/developer/ghq/_index.en.md b/content/developer/ghq/_index.en.md new file mode 100644 index 0000000..c1894f2 --- /dev/null +++ b/content/developer/ghq/_index.en.md @@ -0,0 +1,43 @@ +--- +title: ghq +resources: + - name: demo-ghq + src: demo-ghq.gif + title: "ghq demo" + params: + credits: "generated with `vhs demo-ghq.tape`" +--- + +{{< hint type=note title=Intro >}} **[ghq](https://github.com/x-motemen/ghq)** +allows you to clone a project without worrying where the project will be cloned, +it allows also to clone while respecting the aborescende of the remote repo. {{< +/hint >}} + +## git clone, it's simple! + +The cloning process with the `git clone` command may seem simple at first +glance. at first glance, but when managing several **Git** repositories, this +can quickly become complex. This is even more true when working with repository +forks. The **ghq** tool simplifies this management by centralizing repositories +in a specific location on your machine. + +Let's say you use work with **dotfiles** and you get a **dotfiles** with the +command `ghq get https://github.com/mathiasbynens/dotfiles.git`. And now you +also want to work on your **dotfiles**, no need to worry question where you were +going to clone your project, you just need to run +`ghq get https://github.com/badele/dotfiles.git`. After executing these orders, +the structure of the projects will be clearly organized in your **ghq** +directory. + +```text +└─ ~/ghq + └─ github.com + ├─ mathiasbynens + │ └─ dotfiles + └─ badele + └─ dotfiles +``` + +Here is an example of using **ghq** + +{{< img name="demo-ghq" size=origin lazy=false >}} diff --git a/content/developer/ghq/_index.fr.md b/content/developer/ghq/_index.fr.md new file mode 100644 index 0000000..2584f1d --- /dev/null +++ b/content/developer/ghq/_index.fr.md @@ -0,0 +1,43 @@ +--- +title: ghq +resources: + - name: demo-ghq + src: demo-ghq.gif + title: "ghq demo" + params: + credits: "generated with `vhs demo-ghq.tape`" +--- + +{{< hint type=note title=Intro >}} **[ghq](https://github.com/x-motemen/ghq)** +permet de cloner un projet sans se soucier où sera cloner le projet, il permet +égallement de cloner en respectant l'aborescende du repo distant. {{< /hint >}} + +## git clone, c'est pourtant simple ! + +Le processus de clonage avec la commande `git clone` peut sembler simple au +premier abord, mais lorsqu'on gère plusieurs dépôts **Git**, cela peut +rapidement devenir complexe. C'est encore plus vrai lorsque l'on travaille avec +des forks de dépôts. L'outil **ghq** vient simplifier cette gestion en +centralisant les dépôts dans un emplacement spécifique sur votre machine. + +Imaginons que vous utilisiez travailler avec des **dotfiles** et que vous +récupériez un **dotfiles** avec la commande +`ghq get https://github.com/mathiasbynens/dotfiles.git`. Et que maintenant vous +voulez égallement travailler sur votre **dotfiles**, pas besoins de se poser la +question où vous alliez cloner votre projet, il vous suffit d'exécuter +`ghq get https://github.com/badele/dotfiles.git`. Après l'exécution de ces +commandes, la structure des projets sera organisée de manière claire dans votre +répertoire **ghq**. + +```text +└─ ~/ghq + └─ github.com + ├─ mathiasbynens + │ └─ dotfiles + └─ badele + └─ dotfiles +``` + +Voici un exemple d'utilisation de **ghq** + +{{< img name="demo-ghq" size=origin lazy=false >}} diff --git a/content/developer/ghq/demo-ghq.gif b/content/developer/ghq/demo-ghq.gif new file mode 100644 index 0000000..fd9feda Binary files /dev/null and b/content/developer/ghq/demo-ghq.gif differ diff --git a/content/developer/ghq/demo-ghq.tape b/content/developer/ghq/demo-ghq.tape new file mode 100644 index 0000000..aefd28a --- /dev/null +++ b/content/developer/ghq/demo-ghq.tape @@ -0,0 +1,25 @@ +Output demo-ghq.gif + +Require nix-shell + +Set TypingSpeed 75ms +Set FontSize 12 +Set Width 800 +Set Height 680 + +Hide +Type "nix-shell -p ghq tree --run zsh" Sleep 500ms Enter Sleep 2s +Type "reset" Sleep 500ms Enter Sleep 2s +Show + +Type "tree -d -L 6 ~/ghq" Sleep 500ms Enter Sleep 2s + +Type "ghq get https://github.com/mathiasbynens/dotfiles.git" Sleep 500ms Enter Sleep 2s + +Type "tree -d -L 6 ~/ghq" Sleep 500ms Enter Sleep 2s + +Type "ghq get https://github.com/badele/dotfiles.git" Sleep 500ms Enter Sleep 2s + +Type "tree -d -L 6 ~/ghq" Sleep 500ms Enter Sleep 2s + +Sleep 5s diff --git a/content/documenter/VHS/_index.en.md b/content/documenter/VHS/_index.en.md new file mode 100644 index 0000000..fc620c7 --- /dev/null +++ b/content/documenter/VHS/_index.en.md @@ -0,0 +1,50 @@ +--- +title: VHS +resources: + - name: demo-vhs + src: demo-vhs.gif + title: "VHS demo" + params: + credits: "generated with `vhs demo-vhs.tape`" +--- + +{{< hint type=note title=Intro >}} Sometimes, **A picture is worth a thousand +words**. [VHS](https://github.com/charmbracelet/vhs) is the perfect tool to +explain in animated image how to use command line tools {{< /hint >}} + +## VHS in pictures + +[VHS](https://github.com/charmbracelet/vhs) is a substantially identical tool at +[asciinema](https://asciinema.org/). Nevertheless **VHS** uses an approach +declarative (via the creation of a `.tape` file). It allows you to automate the +execution of a scenario composed of a series of commands to be executed, to then +record the results of the actions in the form of videos in different formats +(webm, mp4, gif), which can be particularly useful for documentation or +knowledge sharing. + +Starting from this `demo-vhs.tape` file + +```text +Output demo-vhs.gif + +Require nix + +Set TypingSpeed 75ms +Set FontSize 18 +Set Width 800 +Set Height 680 + +Type "# Install the needed packages" Sleep 500ms Enter Enter Sleep 2s + +Type "nix-shell -p dotacat neofetch" + +Type "neofetch" Sleep 500ms Enter Sleep 2s + +Type "dotacat --help | dotacat" Sleep 500ms Enter + +Sleep 5s +``` + +We obtain the result below with the following command `vhs demo-vhs.tape` + +{{< img name="demo-vhs" size=origin lazy=false >}} diff --git a/content/documenter/VHS/_index.fr.md b/content/documenter/VHS/_index.fr.md new file mode 100644 index 0000000..7f669b0 --- /dev/null +++ b/content/documenter/VHS/_index.fr.md @@ -0,0 +1,50 @@ +--- +title: VHS +resources: + - name: demo-vhs + src: demo-vhs.gif + title: "VHS demo" + params: + credits: "generated with `vhs demo-vhs.tape`" +--- + +{{< hint type=note title=Intro >}} Parfois, **Une image vaut mille mots**. +[VHS](https://github.com/charmbracelet/vhs) est l'outil parfait expliquer en +image animée comment utiliser des outils en ligne de commande {{< /hint >}} + +## VHS en image + +[VHS](https://github.com/charmbracelet/vhs) est un outil sensiblement identique +à [asciinema](https://asciinema.org/). Néamoins **VHS** utilise une approche +déclarative (via la création de fichier `.tape`). Il permet d'automatiser +l'éxecution d'un scénario composé d'une suite de commandes à executer, pour +ensuite enregrister le résultat des actions sous forme de videos dans différents +formats (webm, mp4, gif), ce qui peut être particulièrement utile pour la +documentation ou le partage de connaissances. + +En partant de ce fichier `demo-vhs.tape` + +```text +Output demo-vhs.gif + +Require nix + +Set TypingSpeed 75ms +Set FontSize 18 +Set Width 800 +Set Height 680 + +Type "# Install the needed packages" Sleep 500ms Enter Enter Sleep 2s + +Type "nix-shell -p dotacat neofetch" + +Type "neofetch" Sleep 500ms Enter Sleep 2s + +Type "dotacat --help | dotacat" Sleep 500ms Enter + +Sleep 5s +``` + +Nous obtenos le résultat ci-dessous avec commande suivante `vhs demo-vhs.tape` + +{{< img name="demo-vhs" size=origin lazy=false >}} diff --git a/content/documenter/VHS/demo-vhs.gif b/content/documenter/VHS/demo-vhs.gif new file mode 100644 index 0000000..9f2ef6b Binary files /dev/null and b/content/documenter/VHS/demo-vhs.gif differ diff --git a/content/documenter/VHS/demo-vhs.tape b/content/documenter/VHS/demo-vhs.tape new file mode 100644 index 0000000..19a4e17 --- /dev/null +++ b/content/documenter/VHS/demo-vhs.tape @@ -0,0 +1,18 @@ +Output demo-vhs.gif + +Require nix-shell + +Set TypingSpeed 75ms +Set FontSize 12 +Set Width 800 +Set Height 680 + +Type "# Install the needed packages" Sleep 500ms Enter Enter Sleep 2s + +Type "nix-shell -p dotacat neofetch" Sleep 500ms Enter Sleep 4s + +Type "neofetch" Sleep 500ms Enter Sleep 2s + +Type "dotacat --help | dotacat" Sleep 500ms Enter + +Sleep 5s diff --git a/content/documenter/geekdoc/_index.en.md b/content/documenter/geekdoc/_index.en.md index b8c95ba..5d3dd79 100644 --- a/content/documenter/geekdoc/_index.en.md +++ b/content/documenter/geekdoc/_index.en.md @@ -1,5 +1,6 @@ --- -title: Geekdoc +title: geekdoc +url: document/geekdoc resources: - name: demo-geekdoc src: demo-geekdoc.gif @@ -29,6 +30,13 @@ inherit the following features: But above all thanks to hugo, it is possible to have a documentation site statistics (no need for `PHP` or `Node.js` server) +## Example of use + +Here is an example of using this template for the site +[JSL Devops documentation](https://devops.jesuislibre.org) + +{{< img name="demo-geekdoc" size=origin lazy=false >}} + ## Install Installing `Geekdoc` will use the trio @@ -49,10 +57,3 @@ cd geekdoc nix develop sh init_project ``` - -## Example of use - -Here is an example of using this template for the site -[JSL Devops documentation](https://devops.jesuislibre.org) - -{{< img name="demo-geekdoc" size=origin lazy=false >}} diff --git a/content/documenter/geekdoc/_index.fr.md b/content/documenter/geekdoc/_index.fr.md index 06602a2..178e81f 100644 --- a/content/documenter/geekdoc/_index.fr.md +++ b/content/documenter/geekdoc/_index.fr.md @@ -1,5 +1,5 @@ --- -title: Geekdoc +title: geekdoc resources: - name: demo-geekdoc src: demo-geekdoc.gif @@ -17,10 +17,10 @@ offrent de nombreux avantages pour la création de sites de documentation. ## Pourquoi geekdoc ? -D'une part, `Geekdoc` offre une structure de navigation claire et organisée, ce -qui permet aux utilisateurs de trouver rapidement les informations dont ils ont -besoin, mais égallement `Geekdoc` s'appuie sur [Hugo](https://gohugo.io/), ce -qui lui permet hériter des features suivantes : +D'une part, [Geekdoc](https://geekdocs.de/) offre une structure de navigation +claire et organisée, ce qui permet aux utilisateurs de trouver rapidement les +informations dont ils ont besoin, mais égallement **Geekdoc** s'appuie sur +[Hugo](https://gohugo.io/), ce qui lui permet hériter des features suivantes : - Support du multi-langes - customisation de fonction grace au shortcodes d'hugo. @@ -29,15 +29,22 @@ qui lui permet hériter des features suivantes : Mais surtout grace à hugo, il est possible d'avoir un site de documentation statisque (pas besoin de serveur `PHP` ou `Node.js`) +## Exemple d'utilisation + +Voici un exemple d'utilisation de ce template pour le site de documentation +[Devops jesuislibre](https://devops.jesuislibre.org) + +{{< img name="demo-geekdoc" size=origin lazy=false >}} + ## Installation -L'installation de `Geekdoc` utilisera le trio +L'installation de **Geekdoc** utilisera le trio [nix, direnv, just](/onboarding/nix-direnv-just). Ce trio permet d'installer automatiquement un environement de developpement ainsi qu'il facilite la contribution à un projet sans devoir installer les outils nécéssaire pour y contribuer. -Donc pour installer et configurer `Geekdoc`, commencer par +Donc pour installer et configurer **Geekdoc**, commencer par [installer le trio nix, direnv, just](/onboarding/nix-direnv-just). Ensuite récupérer et configurer le template `hugo-geekdoc` avec les commandes @@ -49,10 +56,3 @@ cd geekdoc nix develop sh init_project ``` - -## Exemple d'utilisation - -Voici un exemple d'utilisation de ce template pour le site -[JSL Devops documentation](https://devops.jesuislibre.org) - -{{< img name="demo-geekdoc" size=origin lazy=false >}} diff --git a/content/documenter/geekdoc/demo-geekdoc.gif b/content/documenter/geekdoc/demo-geekdoc.gif index 2bfe415..49c3f94 100644 Binary files a/content/documenter/geekdoc/demo-geekdoc.gif and b/content/documenter/geekdoc/demo-geekdoc.gif differ diff --git a/content/documenter/geekdoc/demo-geekdoc.tape b/content/documenter/geekdoc/demo-geekdoc.tape new file mode 100644 index 0000000..6bd9b20 --- /dev/null +++ b/content/documenter/geekdoc/demo-geekdoc.tape @@ -0,0 +1,41 @@ +# Output format +Output demo-geekdoc.gif + +Require nix + +Set Shell "bash" +Set FontSize 18 +Set Width 800 +Set Height 680 + +############################################################################### +# Init project +############################################################################### + +Type "cd /tmp ; nix flake new -t 'github:badele/nix-projects#hugo-geekdoc' devops.jesuislibre.org" Sleep 500ms Enter + +Type "cd /tmp/devops.jesuislibre.org" Sleep 500ms Enter + +Type "nix develop" Sleep 500ms Enter Sleep 4s + +Type "sh init_project" Sleep 500ms Enter Sleep 1s + +Type "github.com" Sleep 500ms Enter Sleep 1s + +Type "badele" Sleep 500ms Enter Sleep 1s + +Type "devops.jesuislibre.org" Sleep 500ms Enter Sleep 1s + +Type "https://devops.jesuislibre.org" Sleep 500ms Enter Sleep 1s + +Type "JSL Devops" Sleep 500ms Enter Sleep 1s + +############################################################################### +# Push project +############################################################################### + +Type "git remote add origin git@github.com:badele/devops.jesuislibre.org.git" Sleep 500ms Enter Sleep 1s +Type "git commit -m 'feat: init project'" Sleep 500ms Enter Sleep 3s +Type "git push -u origin main" Sleep 500ms Enter Sleep 3s + +Sleep 5s diff --git a/content/documenter/latex/01-simple_example.pdf b/content/documenter/latex/01-simple_example.pdf new file mode 100644 index 0000000..4447c40 Binary files /dev/null and b/content/documenter/latex/01-simple_example.pdf differ diff --git a/content/documenter/latex/01-simple_example.png b/content/documenter/latex/01-simple_example.png new file mode 100644 index 0000000..6ca1bfe Binary files /dev/null and b/content/documenter/latex/01-simple_example.png differ diff --git a/content/documenter/latex/01-simple_example.tex b/content/documenter/latex/01-simple_example.tex new file mode 100644 index 0000000..849f67f --- /dev/null +++ b/content/documenter/latex/01-simple_example.tex @@ -0,0 +1,32 @@ +% Define document type and format +% available class :article, report, book, letter, beamer +\documentclass[twocolumn, a4paper, 12pt]{article} +\usepackage[left=0.5in, right=0.5in]{geometry} + +% Use french babel +\usepackage{french} + +% generate a lipsum paragraph +\usepackage{lipsum} + +% Set the title and author +\title{\Huge Document sample} +\author{Bruno Adelé} + +%allow underfull vbox (allow empty space at the bottom of the page +\raggedbottom + +% Set the space between paragraphs +\parskip=5pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\maketitle + +\lipsum[1-2] +\lipsum[6-7] + +\end{document} diff --git a/content/documenter/latex/02-section_example.pdf b/content/documenter/latex/02-section_example.pdf new file mode 100644 index 0000000..9c788e0 Binary files /dev/null and b/content/documenter/latex/02-section_example.pdf differ diff --git a/content/documenter/latex/02-section_example.png b/content/documenter/latex/02-section_example.png new file mode 100644 index 0000000..bb5aaa9 Binary files /dev/null and b/content/documenter/latex/02-section_example.png differ diff --git a/content/documenter/latex/02-section_example.tex b/content/documenter/latex/02-section_example.tex new file mode 100644 index 0000000..93bb3ba --- /dev/null +++ b/content/documenter/latex/02-section_example.tex @@ -0,0 +1,46 @@ +% Define document type and format +% available class :article, report, book, letter, beamer +\documentclass[a4paper, 12pt]{article} + +\listfiles + +% Use french babel +\usepackage{french} + +% generate a lipsum paragraph +\usepackage{lipsum} + +% Set the title and author +\title{\Huge Sections list} +\author{Bruno Adelé} +\date{} + +%allow underfull vbox +\raggedbottom + +% Set the space between paragraphs +\parskip=5pt + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\maketitle +\tableofcontents + +\section{Section} +\lipsum[1][-2] + +\subsection{Subsection} +\lipsum[2][-2] + +\subsubsection{Subsubsection} +\lipsum[3][-2] + +\subsubsection*{Section without counter} +\addcontentsline{toc}{section}{Section without counter} +\lipsum[4][-2] + +\end{document} diff --git a/content/documenter/latex/03-textsize_example.pdf b/content/documenter/latex/03-textsize_example.pdf new file mode 100644 index 0000000..833d204 Binary files /dev/null and b/content/documenter/latex/03-textsize_example.pdf differ diff --git a/content/documenter/latex/03-textsize_example.png b/content/documenter/latex/03-textsize_example.png new file mode 100644 index 0000000..9fe36a6 Binary files /dev/null and b/content/documenter/latex/03-textsize_example.png differ diff --git a/content/documenter/latex/03-textsize_example.tex b/content/documenter/latex/03-textsize_example.tex new file mode 100644 index 0000000..6c267a5 --- /dev/null +++ b/content/documenter/latex/03-textsize_example.tex @@ -0,0 +1,39 @@ +% Define document type and format +% available class :article, report, book, letter, beamer +\documentclass[a4paper, 12pt]{article} + +% Use french babel +\usepackage{french} + +% generate a lipsum paragraph +\usepackage{lipsum} + +% Set the title and author +\title{\Huge Sections list} +\author{Bruno Adelé} +\date{} + +\newcommand{\showsize}[1]{\csname #1 \endcsname $\setminus$#1} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\section{Sizes} +\noindent \showsize{tiny} +\showsize{scriptsize} +\showsize{footnotesize} +\showsize{small} +\showsize{normalsize} +\showsize{large} +\showsize{Large} +\showsize{LARGE} +\showsize{huge} +\showsize{Huge} + +\section{Styles} +\noindent \textnormal{textnormal} \emph{emph} \textrm{textrm} \textsf{textsf} \texttt{texttt} \textup{textup} \textit{textit} \textsl{textsl} \textsc{textsc} \\ +\uppercase{uppercase} \textbf{textbf} \textmd{textmd} + +\end{document} diff --git a/content/documenter/latex/04-debug_example.pdf b/content/documenter/latex/04-debug_example.pdf new file mode 100644 index 0000000..088a001 Binary files /dev/null and b/content/documenter/latex/04-debug_example.pdf differ diff --git a/content/documenter/latex/04-debug_example.png b/content/documenter/latex/04-debug_example.png new file mode 100644 index 0000000..ba06091 Binary files /dev/null and b/content/documenter/latex/04-debug_example.png differ diff --git a/content/documenter/latex/04-debug_example.tex b/content/documenter/latex/04-debug_example.tex new file mode 100644 index 0000000..4a98f87 --- /dev/null +++ b/content/documenter/latex/04-debug_example.tex @@ -0,0 +1,34 @@ +% Define document type and format +% available class :article, report, book, letter, beamer +\documentclass[draft, showframe, twocolumn, a4paper, 12pt]{article} +\usepackage[left=0.5in, right=0.5in]{geometry} + +% Use french babel +\usepackage{french} + +% generate a lipsum paragraph +\usepackage{lipsum} + +% Set the title and author +\title{\Huge Document sample} +\author{Bruno Adelé} + +%allow underfull vbox (allow empty space at the bottom of the page +\raggedbottom + +% Set the space between paragraphs +\parskip=5pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\maketitle + +\lipsum[3-5] +\lipsum[12] + + +\end{document} + diff --git a/content/documenter/latex/_index.en.md b/content/documenter/latex/_index.en.md new file mode 100644 index 0000000..268d0f5 --- /dev/null +++ b/content/documenter/latex/_index.en.md @@ -0,0 +1,153 @@ +--- +title: LaTeX +resources: + - name: vim_latex + src: vim_latex.png + title: "Vim latex editor" + - name: simple_example + src: 01-simple_example.png + title: "simple example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" + - name: section_example + src: 02-section_example.png + title: "section example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" + - name: textsize_example + src: 03-textsize_example.png + title: "textsize example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" + - name: debug_example + src: 04-debug_example.png + title: "debug example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" +--- + +{{< hint type=note title=Intro >}} **LaTeX** is a programming language layout +used to create scientific and academic documents with precision. Its +command-based syntax is reminiscent of the approach of the automation of the IT +infrastructure (**IAC**) used by **DevOps**. As the IAC makes it possible to +describe and manage the infrastructure of reproducible way via code, LaTeX +offers similar control over the presentation of documents, allowing coherent and +efficient management of complex elements such as mathematical equations and +references bibliographic. + +{{< /hint >}} + +## Why LaTeX? + +As **DevOps** we like to master code generation, deployment generation, document +generation. This is why that **[LaTeX](https://www.latex-project.org/)** can be +a good tool in replacement for Office or LibreOffice. + +Without a special editor, coding a LaTeX document is much easier to read an +Office/LibreOffice document that is saved in format +**[Office Open XML](https://fr.wikipedia.org/wiki/Office_Open_XML)** LaTeX is +mainly + +Personally, although you can write LaTeX documents with a editor like +[TeXstudio](https://www.texstudio.org/), it is also possible to use simpler +editors such as Nano or Vim. For my part, I use +**[my own IDE](https://github.com/badele/vide)**, based on Vim, which not only +allows you to edit, reformat, linter and view files LaTeX documents, but also, +thanks to Nix, to download LaTeX packages. + +{{< img name="vim_latex" size=origin lazy=false >}} + +## The basics + +### The preamble + +The preamble allows you to configure the form of your document and to indicate +the additional packages to download as well as their configuration. + +the preamble is inserted between the start of the document and the command +`\begin{document}`, it allows you to define the global configurations of the +document, such as the document class, the packages to use, and the metadata. + +Here is a simple example + +{{< include file="content/documenter/latex/01-simple_example.tex" +language="latex">}} + +{{< img name="simple_example" size=origin lazy=false >}} + +### The sections + +Sections and subsections in LaTeX are used to organize a document into parts and +sub-parts, similar to the structuring by titles in Office. In Additionally, it +is possible to generate a table of contents using the command +`\tableofcontents`. Additionally, it is possible to include sections not +numbered in the table of contents by adding an asterisk as a suffix +(`section*{Title}`). + +{{< include file="content/documenter/latex/02-section_example.tex" +language="latex">}} + +{{< img name="section_example" size=origin lazy=false >}} + +### Text style + +Here is a range of text styles. + +{{< include file="content/documenter/latex/03-textsize_example.tex" +language="latex">}} + +{{< img name="textsize_example" size=origin lazy=false >}} + +## Some tips + +### Debug + +#### In the Preamble + +##### draf, showframe + +LaTeX is a tool that aims to produce optimal formatting for documents, but when +it encounters rules that it cannot apply, it generates warnings or errors. +However, these error messages can sometimes be difficult to understand. To +resolve these problems, it is possible enable a debug mode that provides +additional information for understand and correct errors. + +By adding the `draft` and `showframe` options to the `\documentclass` command, +you can display the borders of the boxes as well as turn the boxes black problem +parts. + +{{< include file="content/documenter/latex/04-debug_example.tex" +language="latex">}} + +{{< img name="debug_example" size=origin lazy=false >}} + +##### listfiles + +To list the installed packages, simply add the command `\listfiles` in the +preamble, during the next compilation via `pdflatex` you will have command +output the list of files. + +```text + *File List* + article.cls 2023/05/17 v1.4n Standard LaTeX document class + size12.clo 2023/05/17 v1.4n Standard LaTeX file (size option) + french.sty 2019/09/06 The e-french package /V6,11/ + msg.sty 2019/01/01 loading localization extension (V0.51). +latexsym.sty 1998/08/17 v2.2e Standard LaTeX package (lasy symbols) +fenglish.sty 2004/06/23 english interface for the french(le/pro) package + lipsum.sty 2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text +l3keys2e.sty 2024-02-18 LaTeX2e option processing using LaTeX3 keys + expl3.sty 2024-02-20 L3 programming layer (loader) +l3backend-pdftex.def 2024-02-20 L3 backend support: PDF output (pdfTeX) + lipsum.ltd + t1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern + french.cfg + ulasy.fd 1998/08/17 v2.2e LaTeX symbol font definitions + ***** +``` + +### Fonts + +- List of fonts https://tug.org/FontCatalogue/allfonts.html +- Comprehensive LaTeX Symbol List + http://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf diff --git a/content/documenter/latex/_index.fr.md b/content/documenter/latex/_index.fr.md new file mode 100644 index 0000000..0d403f3 --- /dev/null +++ b/content/documenter/latex/_index.fr.md @@ -0,0 +1,157 @@ +--- +title: LaTeX +resources: + - name: vim_latex + src: vim_latex.png + title: "Vim latex editor" + - name: simple_example + src: 01-simple_example.png + title: "simple example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" + - name: section_example + src: 02-section_example.png + title: "section example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" + - name: textsize_example + src: 03-textsize_example.png + title: "textsize example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" + - name: debug_example + src: 04-debug_example.png + title: "debug example" + params: + credits: "auto-generated with `just doc-generate-tex-sample` command" +--- + +{{< hint type=note title=Intro >}} **LaTeX** est un langage de programmation de +mise en page utilisé pour créer des documents scientifiques et académiques avec +précision. Sa syntaxe basée sur des commandes rappelle l'approche de +l'automatisation de l'infrastructure informatique (**IAC**) utilisée par les +**DevOps**. Comme l'IAC permet de décrire et de gérer l'infrastructure de +manière reproductible via du code, LaTeX offre un contrôle similaire sur la +présentation des documents, permettant une gestion cohérente et efficace des +éléments complexes tels que les équations mathématiques et les références +bibliographiques. + +{{< /hint >}} + +## Pourquoi LaTeX ? + +En tant que **DevOps** on aime bien maitriser la génération de code, la +génération de déploiement, la génération de documents. C'est pour cette raison +que **[LaTeX](https://www.latex-project.org/)** peu être un bon outil en +remplacement de Office ou LibreOffice. + +Sans éditeur particulier, le code d'un documents LaTeX est beaucoup plus facile +à lire qu'un document Office/LibreOffice qui sont enregistrés au format +**[Office Open XML](https://fr.wikipedia.org/wiki/Office_Open_XML)** LaTeX est +principalement + +Personnellement, bien que l'on puisse rédiger des documents LaTeX avec un +éditeur comme [TeXstudio](https://www.texstudio.org/), il est également possible +d'utiliser des éditeurs plus simples tels que Nano ou Vim. Pour ma part, +j'utilise [mon propre IDE**](https://github.com/badele/vide), basé sur Vim, qui +permet non seulement d'éditer, de reformater, linter et de visualiser des +documents LaTeX, mais également, grâce à Nix, de télécharger des packages LaTeX. + +{{< img name="vim_latex" size=origin lazy=false >}} + +## Les bases + +### Le préambule + +Le préambule permet de configurer la forme de son document ainsi d'indiquer les +packages supplémentaires à télécharger ainsi que de leur configuration. + +le préambule s'insère entre le début du document et la commande +`\begin{document}`, il permet de définir les configurations globales du +document, tel que la classe du document, les packages à utiliser et les +métadonnées. + +Voici un exemple simple + +{{< include file="content/documenter/latex/01-simple_example.tex" +language="latex">}} + +{{< img name="simple_example" size=origin lazy=false >}} + +### Les sections + +Les sections et sous-sections en LaTeX servent à organiser un document en +parties et sous-parties, similaire à la structuration par titres sous Office. En +outre, il est possible de générer une table des matières à l'aide de la commande +`\tableofcontents`. De plus, il est possible d'inclure des sections non +numérotées dans la table des matières en ajoutant un astérisque en suffixe +(`section*{Titre}`). + +{{< include file="content/documenter/latex/02-section_example.tex" +language="latex">}} + +{{< img name="section_example" size=origin lazy=false >}} + +### Style de textes + +Voici un éventail des styles de texte. + +{{< include file="content/documenter/latex/03-textsize_example.tex" +language="latex">}} + +{{< img name="textsize_example" size=origin lazy=false >}} + +## Quelques astuces + +### Debug + +#### Dans le Préambule + +##### draf, showframe + +LaTeX est un outil qui vise à produire un formatage optimal pour les documents, +mais lorsqu'il rencontre des règles qu'il ne peut pas appliquer, il génère des +avertissements ou des erreurs. Cependant, ces messages d'erreur peuvent parfois +être difficiles à comprendre. Pour résoudre ces problèmes, il est possible +d'activer un mode de débogage qui fournit des informations supplémentaires pour +comprendre et corriger les erreurs. + +En ajoutant les options `draft` et `showframe` à la commande `\documentclass`, +vous pouvez afficher les bordures des boîtes ainsi que mettre en noir les +parties posant problème. + +{{< include file="content/documenter/latex/04-debug_example.tex" +language="latex">}} + +{{< img name="debug_example" size=origin lazy=false >}} + +##### listfiles + +Pour lister les packages installés, il sufft d'ajouter la commande `\listfiles` +dans le préambule, lors de la prochaine compilation via `pdflatex` vous aurez en +sortie de commande la liste des fichiers. + +```text + *File List* + article.cls 2023/05/17 v1.4n Standard LaTeX document class + size12.clo 2023/05/17 v1.4n Standard LaTeX file (size option) + french.sty 2019/09/06 The e-french package /V6,11/ + msg.sty 2019/01/01 chargement de l'extension de localisation (V0.51). +latexsym.sty 1998/08/17 v2.2e Standard LaTeX package (lasy symbols) +fenglish.sty 2004/06/23 english interface for the french(le/pro) package + lipsum.sty 2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text +l3keys2e.sty 2024-02-18 LaTeX2e option processing using LaTeX3 keys + expl3.sty 2024-02-20 L3 programming layer (loader) +l3backend-pdftex.def 2024-02-20 L3 backend support: PDF output (pdfTeX) + lipsum.ltd + t1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern + french.cfg + ulasy.fd 1998/08/17 v2.2e LaTeX symbol font definitions + *********** +``` + +### Divers + +- Liste des fontes https://tug.org/FontCatalogue/allfonts.html +- Comprehensive LaTeX Symbol List + http://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf diff --git a/content/documenter/latex/vim_latex.png b/content/documenter/latex/vim_latex.png new file mode 100644 index 0000000..f6fac7b Binary files /dev/null and b/content/documenter/latex/vim_latex.png differ diff --git a/content/mentions_legales.md b/content/mentions_legales.md new file mode 100644 index 0000000..785b062 --- /dev/null +++ b/content/mentions_legales.md @@ -0,0 +1,42 @@ +--- +title: Mentions légales +--- + +## Contact + +**Bruno Adelé:** + +- email: `brunoadele@gmail.com` +- mastodon: `@jesuislibre@mamot.fr` +- bluesky: `@jesuislibre.bsky.social` +- X: `@jesuislibre` +- github: `https://github.com/badele` +- linkedin: `https://www.linkedin.com/in/brunoadele` + +## Politique de confidentialité + +Collecte de données et d'informations générales + +Les pages de ce site sont hébergé par la société [yulpa](https://yulpa.io/) Le +site Internet devops.jesuislibre.org a travers les services de **yulpa** +collecte une série de données et d'informations générales lorsqu'une personne +concernée ou un système automatisé visualise une page du site Internet. Ces +données et informations générales sont stockées dans les fichiers journaux du +serveur. Les collectes peuvent être : + +- Les types et versions de navigateurs utilisés +- Le système d'exploitation utilisé +- Le site Web à partir duquel la personne vient +- La date et l'heure d'accès au site Internet +- L'adresse IP +- Toute autre donnée et information similaire qui pourrait être utilisée en cas + d'attaques sur nos systèmes informatiques + +Lors de l'utilisation de ces données et informations générales, nous ne tirons +aucune conclusion sur la personne concernée. Ces informations sont plutôt +nécessaires pour fournir correctement le contenu de notre site Internet. + +## Cookie & Tracking + +Ce site n'utilise aucun cookies ni outil de suivi afin de cibler les +internautes. diff --git a/content/onboarding/nix-direnv-just/_index.en.md b/content/onboarding/nix-direnv-just/_index.en.md new file mode 100644 index 0000000..6511eca --- /dev/null +++ b/content/onboarding/nix-direnv-just/_index.en.md @@ -0,0 +1,275 @@ +--- +title: Nix, Direnv, Just, the trio that makes life easier +tags: + - OnboardingReady +resources: + - name: demo-onboarding + src: demo-onboarding.gif + title: "JSL Devops onboarding demo" + params: + credits: "Onboarding for the devops.jesuislibre.org project" +--- + +{{< hint type="note" title="Introduction" >}} + +Nothing is more frustrating when working on a project than having to: + +- Search for the necessary tools to work on this project (compilation, + development, etc.). +- Manage the versions of installed packages based on their installation date. +- Manage the distributions on which these packages are installed (used package + manager). + +{{< /hint >}} + +During the development phase of a project, maintaining a consistent development +environment that evolves over time is quite challenging, due in part to the +following: + +- Some packages are not available on all distributions of Windows, MacOS, Linux + (Ubuntu, Archlinux, Fedora, Suse, etc.). +- Package versions may become unavailable due to distribution changes. + +Some modern programming languages have recognized this challenge and have +dependency management systems with locking features to ensure the +reproducibility of development environments, including: + +- Go +- Python +- Ruby +- Rust +- etc ... + +These systems allow for maintaining the same dependencies throughout the +project's lifecycle, but this only applies to the libraries used and not to all +third-party tools. + +That's why I use the trio: + +- **Nix:** Enables obtaining a reproducible system. +- **Direnv:** Allows executing a command upon entering a directory. +- **Just:** Provides a command runner and help display. + +## Example of use + +Here is an example of use for the documentation project of +[JSL Devops](https://devops.jesuislibre.org) + +At first, you will notice that the `just` and `hugo` tools are not available in +the user's distribution. However, without intervention on his part, you will +find that they become available thanks to `Nix` and the `flake.nix` file. + +{{< img name="demo-onboarding" size=origin lazy=false >}} + +## Installation + +### Direnv + +Install the direnv package + +```shell +# install direnv +curl -sfL https://direnv.net/install.sh | bash +``` + +Configure the shell to take `direnv` into account during a new shell. + +{{< tabs "shell-config" >}} + +{{< tab "Bash" >}} + +Add the following line to the end of the `~/.bashrc` file: + +```shell +eval "$(direnv hook bash)" +``` + +Add the following line to the end of the `~/.zshrc` file: + +{{< /tab >}} + +{{< tab "ZSH" >}} + +```shell +eval "$(direnv hook zsh)" +``` + +{{< /tab >}} + +{{< tab "FISH" >}} + +Add the following line to the end of the `~/.config/fish/config.fish` file: + +```shell +direnv hook fish | source +``` + +Fish supports 3 modes which you can set with environment variable global +`direnv_fish_mode`: + +```text +set -g direnv_fish_mode eval_on_arrow # Trigger direnv at the prompt, and on each directory change with arrow (default) +set -g direnv_fish_mode eval_after_arrow # Trigger direnv at prompt, and only after arrow changes directory before executing command +set -g direnv_fish_mode disable_arrow # Trigger direnv at prompt only, this is similar functionality to the original behavior +``` + +{{< /tab >}} + +{{< /tabs >}} + +### Nix + +{{< tabs "os-installation" >}} + +{{< tab "Linux" >}} + +```shell +sh <(curl -L https://nixos.org/nix/install) --daemon +grep 'experimental-features' /etc/nix/nix.conf || (echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf) +``` + +{{< /tab >}} + +{{< tab "Windows" >}} + +```shell +sh <(curl -L https://nixos.org/nix/install) --daemon +grep 'experimental-features' /etc/nix/nix.conf || (echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf) +``` + +{{< /tab >}} + +{{< tab "MacOS" >}} + +```shell +sh <(curl -L https://nixos.org/nix/install) +grep 'experimental-features' /etc/nix/nix.conf || (echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf) +``` + +{{< /tab >}} + +{{< /tabs >}} + +{{< hint type=note title="To note" >}} + +Once **nix** and **direnv** are installed, when you first access the directory +of a project, you will have to authorize the automatic execution of **direnv** +with the following command: `direnv allow` + +{{< /hint >}} + +{{< hint type=tip title=Tips >}} + +You can also launch onboarding with the following command `nix develop` + +{{< /hint >}} + +### just + +The `just` tool will be installed automatically with `nix` and `flake`, see the +next section. + +## Configuration of the onboarding project + +To activate the onboarding of the project, simply copy the 3 files below in the +root directory of your project. + +```text +projet +├─ .envrc +├─ flake.nix +└─ justfile +``` + +Configuring the **.envrc** file + +```shell +use flake +``` + +Configuring the **flake.nix** file + +```nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = { nixpkgs, flake-utils, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + devShells.default = with pkgs; + mkShell { + name = "Default developpement shell"; + packages = [ + cocogitto + nixpkgs-fmt + nodePackages.markdownlint-cli + pre-commit + + deno + gum + just + ]; + shellHook = '' + export PROJ="devops.jesuislibre.org" + + echo "" + echo "⭐ Welcome to the $PROJ project ⭐" + echo "" + ''; + }; + }); +} +``` + +Configuring the **justfile** file + +```text +#!/usr/bin/env just -f + +# This help +# Help it showed if just is called without arguments +@help: + just -lu | column -s '#' -t | sed 's/[ \t]*$//' + +############################################################################### +# pre-commit +############################################################################### + +# Setup pre-commit +precommit-install: + #!/usr/bin/env bash + test ! -f .git/hooks/pre-commit && pre-commit install || true + +# Update pre-commit +@precommit-update: + pre-commit autoupdate + +# precommit check +@precommit-check: + pre-commit run --all-files + +############################################################################### +# Tools +############################################################################### + +# Update documentation +@doc-update FAKEFILENAME: + ./updatedoc.ts + +# Lint the project +@lint: + pre-commit run --all-files + +# Repl the project +@repl: + nix repl --extra-experimental-features repl-flake .# + +# Show installed packages +@packages: + echo $PATH | tr ":" "\n" | grep -E "/nix/store" | sed -e "s/\/nix\/store\/[a-z0-9]\+\-//g" | sed -e "s/\/.*//g" +``` diff --git a/content/onboarding/nix-direnv-just/_index.fr.md b/content/onboarding/nix-direnv-just/_index.fr.md new file mode 100644 index 0000000..c5a5f13 --- /dev/null +++ b/content/onboarding/nix-direnv-just/_index.fr.md @@ -0,0 +1,280 @@ +--- +title: Nix, Direnv, Just, le trio qui simplifie la vie +date: 2024-04-14 +resources: + - name: demo-onboarding + src: demo-onboarding.gif + title: "JSL Devops onboarding demo" + params: + credits: "Onboarding pour le projet devops.jesuislibre.org" +--- + +{{< hint type="note" title="Introduction" >}} + +Rien n'est plus frustrant lorsqu'on travaille sur un projet que de devoir : + +- Chercher les outils nécessaires pour travailler sur ce projet (compilation, + développement, etc.). +- Gérer les versions des paquets installés en fonction de leur date + d'installation. +- Gérer les distributions sur lesquelles ces paquets sont installés + (gestionnaire de paquets utilisé). + +{{< /hint >}} + +Pendant la phase de développement d'un projet, maintenir un environnement de +développement cohérent qui évolue au fil du temps est assez difficile, en raison +notamment des éléments suivants : + +- Certains paquets ne sont pas disponibles sur toutes les distributions Windows, + MacOS, Linux (Ubuntu, Archlinux, Fedora, Suse, etc.). +- Des versions de paquets peuvent devenir indisponibles suite à l'évolution + d'une distribution. + +Certains langages de programmation modernes l'ont bien compris, ils disposent de +systèmes de gestion de dépendances dotés de fonctionnalités de verrouillage pour +assurer la reproductibilité des environnements de développement, notamment : + +- Go +- Python +- Ruby +- Rust +- etc ... + +Ces systèmes permettent de maintenir les mêmes dépendances tout au long de la +durée de vie du projet, mais cela ne s'applique qu'aux bibliothèques utilisées +et non à tous les outils tiers. + +C'est pour cette raison que j'utilise le trio : + +- **Nix:** Permet d'obtenir un système reproductible. +- **Direnv:** Permet d'exécuter une commande lors de l'entrée dans un + répertoire. +- **Just:** Fournit un gestionnaire de commandes ainsi que l'affichage de + l'aide. + +## Exemple d'utilisation + +Voici un exemple d'utilisation pour le projet de documentation de +[JSL Devops](https://devops.jesuislibre.org) + +Dans un premier temps, vous remarquerez que les outils `just` et `hugo` ne sont +pas disponibles dans la distribution de l'utilisateur. Cependant, sans +intervention de sa part, vous constaterez qu'ils deviennent disponibles grâce à +`Nix` et au fichier `flake.nix`. + +{{< img name="demo-onboarding" size=origin lazy=false >}} + +## Installation + +### Direnv + +Installer le paquet direnv + +```shell +# install direnv +curl -sfL https://direnv.net/install.sh | bash +``` + +Configurer le shell pour la prise en compte de `direnv` lors d'un nouveau shell. + +{{< tabs "shell-config" >}} + +{{< tab "Bash" >}} + +Ajouter la ligne suivante à la fin du fichier `~/.bashrc` : + +```shell +eval "$(direnv hook bash)" +``` + +Ajouter la ligne suivante à la fin du fichier `~/.zshrc` : + +{{< /tab >}} + +{{< tab "ZSH" >}} + +```shell +eval "$(direnv hook zsh)" +``` + +{{< /tab >}} + +{{< tab "FISH" >}} + +Ajouter la ligne suivante à la fin du fichier `~/.config/fish/config.fish` : + +```shell +direnv hook fish | source +``` + +Fish supporte 3 modes que vous pouvez définir avec la variable d'environnement +globale `direnv_fish_mode` : + +```text +set -g direnv_fish_mode eval_on_arrow # Déclenche direnv à l'invite, et à chaque changement de répertoire par flèche (par défaut) +set -g direnv_fish_mode eval_after_arrow # Déclenche direnv à l'invite, et seulement après les changements de répertoire par flèche avant d'exécuter la commande +set -g direnv_fish_mode disable_arrow # Déclenche direnv à l'invite uniquement, il s'agit d'une fonctionnalité similaire au comportement original +``` + +{{< /tab >}} + +{{< /tabs >}} + +### Nix + +{{< tabs "os-installation" >}} + +{{< tab "Linux" >}} + +```shell +sh <(curl -L https://nixos.org/nix/install) --daemon +grep 'experimental-features' /etc/nix/nix.conf || (echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf) +``` + +{{< /tab >}} + +{{< tab "Windows" >}} + +```shell +sh <(curl -L https://nixos.org/nix/install) --daemon +grep 'experimental-features' /etc/nix/nix.conf || (echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf) +``` + +{{< /tab >}} + +{{< tab "MacOS" >}} + +```shell +sh <(curl -L https://nixos.org/nix/install) +grep 'experimental-features' /etc/nix/nix.conf || (echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf) +``` + +{{< /tab >}} + +{{< /tabs >}} + +{{< hint type=note title="A noter" >}} + +Une fois **nix** et **direnv** installés, lors de votre premier accès au +répertoire d'un projet, vous devrez autoriser l'exécution automatique de +**direnv** avec la commande suivante : `direnv allow` + +{{< /hint >}} + +{{< hint type=tip title=Conseil >}} + +Vous pouvez égallement lancer le onboarding avec la commande suivante +`nix develop` + +{{< /hint >}} + +### just + +L'outil `just` sera installé automatiquement avec `nix` et `flake`, voir la +section suivante. + +## Configuration du Onboarding projet + +Pour activer l'onboarding du projet, il suffit de copier les 3 fichiers +ci-dessous dans le repertoire racine de votre projet. + +```text +projet +├─ .envrc +├─ flake.nix +└─ justfile +``` + +Configuration du fichier **.envrc** + +```shell +use flake +``` + +Configuration du fichier **flake.nix** + +```nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = { nixpkgs, flake-utils, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + devShells.default = with pkgs; + mkShell { + name = "Default developpement shell"; + packages = [ + cocogitto + nixpkgs-fmt + nodePackages.markdownlint-cli + pre-commit + + deno + gum + just + ]; + shellHook = '' + export PROJ="devops.jesuislibre.org" + + echo "" + echo "⭐ Welcome to the $PROJ project ⭐" + echo "" + ''; + }; + }); +} +``` + +Configuration du fichier **justfile** + +```text +#!/usr/bin/env just -f + +# This help +# Help it showed if just is called without arguments +@help: + just -lu | column -s '#' -t | sed 's/[ \t]*$//' + +############################################################################### +# pre-commit +############################################################################### + +# Setup pre-commit +precommit-install: + #!/usr/bin/env bash + test ! -f .git/hooks/pre-commit && pre-commit install || true + +# Update pre-commit +@precommit-update: + pre-commit autoupdate + +# precommit check +@precommit-check: + pre-commit run --all-files + +############################################################################### +# Tools +############################################################################### + +# Update documentation +@doc-update FAKEFILENAME: + ./updatedoc.ts + +# Lint the project +@lint: + pre-commit run --all-files + +# Repl the project +@repl: + nix repl --extra-experimental-features repl-flake .# + +# Show installed packages +@packages: + echo $PATH | tr ":" "\n" | grep -E "/nix/store" | sed -e "s/\/nix\/store\/[a-z0-9]\+\-//g" | sed -e "s/\/.*//g" +``` diff --git a/content/onboarding/nix-direnv-just/demo-onboarding.gif b/content/onboarding/nix-direnv-just/demo-onboarding.gif new file mode 100644 index 0000000..252c0e4 Binary files /dev/null and b/content/onboarding/nix-direnv-just/demo-onboarding.gif differ diff --git a/content/onboarding/nix-direnv-just/demo-onboarding.tape b/content/onboarding/nix-direnv-just/demo-onboarding.tape new file mode 100644 index 0000000..6962d54 --- /dev/null +++ b/content/onboarding/nix-direnv-just/demo-onboarding.tape @@ -0,0 +1,43 @@ +# Output format +Output demo-onboarding.gif + +Require nix + +Set Shell "bash" +Set FontSize 18 +Set Width 800 +Set Height 680 + +############################################################################### +# No Nix onboaring Environment +############################################################################### + +Type "# No nix onboarding environement available" Sleep 500ms Enter Enter Sleep 1s + +Type "cd /tmp" Sleep 500ms Enter + +Type "just" Sleep 500ms Enter Sleep 2s + +Type "hugo" Sleep 500ms Enter Sleep 3s + +Type "clear" Sleep 500ms Enter +Type "# Now we will use the nix onboarding environement" Sleep 500ms Enter Enter Sleep 2s + +############################################################################### +# Nix onboarding Environment +############################################################################### + + +Type "cd ~/ghq/github.com/badele/devops.jesuislibre.org" Sleep 500ms Enter + +# Emulate direnv +Hide +Type "nix develop" Sleep 500ms Enter Sleep 4s +Show + +Type "just" Sleep 500ms Enter Sleep 2s + +Type "hugo version" Sleep 500ms Enter Sleep 2s + +Sleep 5s + diff --git a/flake.nix b/flake.nix index a80629e..e683d08 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,18 @@ gum hugo just + + # Latex + (texlive.combine { + inherit (texlive) + scheme-medium msg tabularray ninecolors lipsum; + }) + pplatex + texlab + zathura + + # Convert PDF to PNG + ghostscript ]; shellHook = '' export PROJ="devops.jesuislibre.org" diff --git a/hugo.yaml b/hugo.yaml index bf991e0..b54a65e 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -27,7 +27,7 @@ languages: pygmentsUseClasses: true pygmentsCodeFences: true disablePathToLower: true -enableGitInfo: false +enableGitInfo: true # Required if you want to render robots.txt template enableRobotsTXT: true @@ -53,7 +53,7 @@ params: # (Optional, default static/brand.svg) Set the path to a logo for the Geekdoc # relative to your 'static/' folder. - # geekdocLogo: logo.png + geekdocLogo: logo.png # (Optional, default false) Render menu from data file in 'data/menu/main.yaml'. # See also https://geekdocs.de/usage/menus/#bundle-menu. @@ -90,11 +90,11 @@ params: # (Optional, default none) Add a link to your Legal Notice page to the site footer. # It can be either a remote url or a local file path relative to your content directory. - geekdocLegalNotice: none + geekdocLegalNotice: mentions_legales/#contact # (Optional, default none) Add a link to your Privacy Policy page to the site footer. # It can be either a remote url or a local file path relative to your content directory. - geekdocPrivacyPolicy: none + geekdocPrivacyPolicy: mentions_legales/#politique-de-confidentialit%c3%a9 # (Optional, default true) Add an anchor link to headlines. geekdocAnchor: true diff --git a/justfile b/justfile index ccad585..dda4a8f 100644 --- a/justfile +++ b/justfile @@ -37,13 +37,40 @@ hugo-download-theme: @hugo-init: hugo-download-theme hugo new site . > /dev/null +# Hugo serve the locally content @hugo-serve: - hugo serve --debug --cleanDestinationDir -D + GIT_COMMIT_SHA=`git rev-parse --verify HEAD` GIT_COMMIT_SHA_SHORT=`git rev-parse --short HEAD` hugo serve --debug --cleanDestinationDir -D + +# Hugo build the content +hugo-build: + GIT_COMMIT_SHA=`git rev-parse --verify HEAD` GIT_COMMIT_SHA_SHORT=`git rev-parse --short HEAD` hugo --cleanDestinationDir + +# Hugo test publish the content +hugo-publishtest: hugo-build + rsync -avrn --delete public/ w4a153382@ssh.web4all.fr:/datas/vol3/w4a153382/var/www/devops.jesuislibre.org/htdocs/ + +# Hugo publish the content +hugo-publish: hugo-build + rsync -avr --delete public/ w4a153382@ssh.web4all.fr:/datas/vol3/w4a153382/var/www/devops.jesuislibre.org/htdocs/ ############################################################################### # Tools ############################################################################### +# Generate documentation samples +doc-generate-tex-sample: + #!/usr/bin/env bash + find . -type f -name '*.tex' | while read file; do + # get file informations + filename=$(basename -- "$file") + filename="${filename%.*}" + dirname=$(dirname -- "$file") + # generate pdf + pdflatex --output-dir "$dirname" "$file" + # convert pdf to png + convert -background white -alpha remove -alpha off -density 150 "$dirname/$filename.pdf" "$dirname/$filename.png" + done + # Update documentation @doc-update FAKEFILENAME: ./updatedoc.ts diff --git a/layouts/partials/site-footer.html b/layouts/partials/site-footer.html new file mode 100644 index 0000000..31ae8e1 --- /dev/null +++ b/layouts/partials/site-footer.html @@ -0,0 +1,45 @@ + diff --git a/layouts/partials/site-header.html b/layouts/partials/site-header.html new file mode 100644 index 0000000..fad190c --- /dev/null +++ b/layouts/partials/site-header.html @@ -0,0 +1,77 @@ +
+
+ {{ if .MenuEnabled }} + + {{ end }} +
+ + + + + +
+
+ + {{ if .Root.Site.Data.menu.extra.header }} + {{ partial "menu-extra" (dict "current" .Root "source" .Root.Site.Data.menu.extra.header "target" "header") }} + {{ end }} + + + + + {{ i18n "button_toggle_dark" }} + + + + {{ i18n "button_toggle_dark" }} + + + + {{ i18n "button_toggle_dark" }} + + + + + + + + {{ i18n "button_homepage" }} + + + + + + {{ partial "language" .Root }} + + + + + + + +
+
+
diff --git a/static/custom.css b/static/custom.css new file mode 100644 index 0000000..ce43ce9 --- /dev/null +++ b/static/custom.css @@ -0,0 +1,5 @@ +.gdoc-brand__img { + margin-right: 1rem; + width: unset; + height: unset; +} diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000..81154b8 Binary files /dev/null and b/static/logo.png differ