diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..83c845e --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,71 @@ +name: Build site + +on: + - push + - workflow_dispatch + +jobs: + build: + # NOTE: must match your act_runner labels (e.g. ubuntu-latest, ubuntu-24.04). + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Bootstrap pinned toolchain + run: ./scripts/bootstrap.sh + + - name: Build site + run: ./scripts/calepin.sh compile site public + + # The official upload-artifact@v4 refuses to run on Gitea (it detects a + # non-GitHub server and aborts with GHESNotSupportedError). v3 uses the + # artifact API that Gitea implements. On Gitea >= 1.22 with a current + # act_runner, christopherhx/gitea-upload-artifact@v4 is a drop-in + # replacement if you want the v4 API. + - name: Upload site artifact + uses: actions/upload-artifact@v3 + with: + name: public + path: public/ + + deploy: + needs: build + # Publish only from main; move the gate to publish from another branch. + if: github.ref == 'refs/heads/main' + # Write access for the automatic Actions token to push the pages branch. + permissions: + contents: write + # NOTE: must match your act_runner labels (e.g. ubuntu-latest, ubuntu-24.04). + runs-on: ubuntu-latest + steps: + - name: Download site artifact + uses: actions/download-artifact@v3 + with: + name: public + path: public + + - name: Check artifact layout + run: test -f public/index.html + + # Publishing interfaces with prod; it never runs under local act tests + # (act sets env.ACT, the Gitea runner does not). The force-push to the + # `pages` branch is what triggers the git-pages webhook. + - name: Publish to pages branch + if: ${{ !env.ACT }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + run: | + if [ -z "$GITEA_TOKEN" ]; then + echo "::error::Missing GITEA_TOKEN (the automatic Actions token)." + exit 1 + fi + cd public + git init -q -b pages . + git config user.name "Yggdrasil CI" + git config user.email "ci@noreply.kb28.ch" + git add -A + git commit -q -m "Publish site from ${GITHUB_SHA}" + repo_host="${GITHUB_SERVER_URL#*://}" + repo_host="${repo_host%/}" + git push -q --force "https://${GITHUB_REPOSITORY_OWNER}:${GITEA_TOKEN}@${repo_host}/${GITHUB_REPOSITORY}.git" pages diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b71b18 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Generated site and pinned toolchain +public/ +tools/ + +# Calepin build artifacts +.calepin/ +.calepin-entry.* + +# IDE +.idea/ diff --git a/AGENT.md b/AGENT.md new file mode 100644 index 0000000..eefbc8e --- /dev/null +++ b/AGENT.md @@ -0,0 +1,20 @@ +# Agent Rules for Yggdrasil Migration + +* **Commit Policy**: Small conventional commits. One logical change per + commit, committed only once that step is verified and working. End every + commit message with a blank line followed by an + `Assisted-by: Delta:zai-glm-5.3` footer. +* **Layout**: Sources live in `site/` (`calepin.toml` + `.typ` pages), + generated output in `public/` (gitignored), pinned binaries in `tools/` + (gitignored), helper scripts in `scripts/`, and the old Docsify + documentation stays untouched in `legacy_docs/`. +* **Toolchain**: `calepin` (0.0.61) and `typst` (0.15.1) are pinned in + `scripts/bootstrap.sh` and downloaded into `tools/` with checksum + verification. The build must never depend on global installs. CI installs + the same pinned versions by calling the same scripts. +* **Verification**: Before committing, run a fresh cycle: `rm -rf tools`, + then `just clean`, then `just build` — the build must succeed with no + calepin on `PATH`. Verify the served site (`just preview`): home 200, + category page 200, sub-page 200, missing page shows the 404 page, + `sitemap.xml` present. After every test/clean cycle `git status` must stay + clean. diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..f6c9546 --- /dev/null +++ b/Justfile @@ -0,0 +1,27 @@ +# Show the available recipes +default: + @just --list + +# Bootstrap the pinned calepin + typst binaries into tools/ +tools: + ./scripts/bootstrap.sh + +# Compile the site into public/ +build: tools + ./scripts/calepin.sh compile site public + +# Build, then serve the site locally +preview: build + ./scripts/calepin.sh serve public + +# Rebuild on change and serve the result +watch: tools + ./scripts/calepin.sh watch site public --serve + +# Remove generated output and build caches +clean: + ./scripts/clean.sh + +# Run the CI workflow locally with act (requires act + docker) +ci: + act push -W .gitea/workflows/build.yml -j build --artifact-server-path /tmp/act-artifacts diff --git a/README.md b/README.md index 2cb0d9f..c3282e9 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,88 @@ -
-

Yggdrasil

-
-Yggdrasil is a collections of notes around IT, OT and other geeks stuff -
-
-
+# Yggdrasil -# [Bachelor in embedded system](/infotro/) -Here notes I take during my bachelor in embedded systems +Personal knowledge base built as a static website with +[Calepin](https://vincentarelbundock.github.io/calepin/), a Typst-based static +site generator. -Mainly some topics: -- [PTR - Programmation Temps Réel](/infotro/PTR/) -- [SDi - Système Distribué](/infotro/SDi/) -- [Eln - Électronique](/infotro/Eln/) -- [SEm - Systèmes Embarqué](/infotro/SEm/) +## Layout -# [Master of science in engineering in embedded system](/MSE/) -Here note I take during my Master of science un engineering with embedded system as orientation +- `site/` — website sources: `calepin.toml` + `.typ` pages +- `site/themes/yggdrasil/` — local theme extending the bundled `calepin` theme (scoped sidebars, academic-styled landing) +- `public/` — generated site (gitignored) +- `tools/` — pinned `calepin` and `typst` binaries (gitignored, downloaded on demand) +- `scripts/` — helper scripts used by the Justfile and CI +- `legacy_docs/` — the old Docsify documentation, kept unmodified for reference -Mainly some topics: -- [SRE - Software Reverse Engineering](/MSE/SRE/) +## Quick start -# [Embedded Systems](/Embed/) -Here some note specific about some Embedded System -- [STM32](/Embed/STM32/) -- [nRF](/Embed/nRF/) +`just` is the only prerequisite — the toolchain is downloaded and +checksum-verified into `tools/` on first use (no global installs, no cargo): -# [Working environment at HES-SO](/HES-SO/) -Here some note about the working environment at HES-SO + just # list recipes + just tools # download the pinned toolchain into tools/ + just build # compile site/ into public/ + just preview # build, then serve the site locally + just watch # rebuild on change and serve + just clean # remove public/ and build caches + just ci # run the CI workflow locally with act (needs act + docker) -- [OneDrive - Linux](/HES-SO/OneDrive.md) -- [Teams - Linux](/HES-SO/Teams.md) +## Adding a page + +Create `site//.typ`: + +```typst +#set document(title: [Page title]) +#metadata((title: "Page title", translation_key: "category-page")) + +#title() + += Page title + +Content… +``` + +and reference it in `site/calepin.toml`: + +```toml +[[sidebar.section.item]] +target = "/.typ" +``` + +Sidebar labels come from the page's `#metadata(...)` line, not from the config. + +Every page also renders a printable PDF twin (`pdf = true` in +`calepin.toml`, selectable in the page's view picker). Add `pdf: false` to a +page's `#metadata(...)` to skip its PDF, as `404.typ` does. + +## Adding a category + +1. Create `site//` with an `index.typ`, using + `#metadata((title: "Overview", ...))` for its sidebar label. +2. Add a `[[sidebar.section]]` named after the category in `calepin.toml`, + listing the index page and its sub-pages. +3. Add a `[[menus.main]]` entry with the category's `index.typ` as `target` + and the category name as `label` (e.g. `Home`, `IT`), so it appears in the + top navigation bar. The `label` is required here because the index page's + metadata title is `Overview`. + +Pages inside a category show only that category's sidebar section — the +local theme (`site/themes/yggdrasil/partials/site-nav-sidebar.html`) filters +the sidebar to the section containing the current page. Pages outside every +category (landing page, `404`, standalone pages) fall back to the full +sidebar. + +## Deployment + +`just build` produces a fully static site in `public/`: HTML pages with +printable PDF twins, plus `sitemap.xml`, `robots.txt`, and `llms.txt`. The +Gitea Actions workflow in +`.gitea/workflows/build.yml` builds the site on every push with the same +pinned toolchain and uploads `public/` as an artifact. + +Pushes to `main` are also published: the `deploy` job force-pushes `public/` +to the repo's `pages` branch using the automatic Actions token (no secrets to +configure). A Gitea webhook on the repo then notifies the self-hosted +[git-pages](https://codeberg.org/git-pages/git-pages) server, which clones +the `pages` branch and serves the site. The push step is gated with +`if: ${{ !env.ACT }}` so local `act` runs never publish, and +`workflow_dispatch` enables manual publishes from the Gitea UI. diff --git a/.nojekyll b/legacy_docs/.nojekyll similarity index 100% rename from .nojekyll rename to legacy_docs/.nojekyll diff --git a/Embed/README.md b/legacy_docs/Embed/README.md similarity index 100% rename from Embed/README.md rename to legacy_docs/Embed/README.md diff --git a/Embed/STM32/README.md b/legacy_docs/Embed/STM32/README.md similarity index 100% rename from Embed/STM32/README.md rename to legacy_docs/Embed/STM32/README.md diff --git a/Embed/nRF/README.md b/legacy_docs/Embed/nRF/README.md similarity index 100% rename from Embed/nRF/README.md rename to legacy_docs/Embed/nRF/README.md diff --git a/Embed/nRF/development_environment.md b/legacy_docs/Embed/nRF/development_environment.md similarity index 100% rename from Embed/nRF/development_environment.md rename to legacy_docs/Embed/nRF/development_environment.md diff --git a/Embed/nRF/medias/GDB_settings.png b/legacy_docs/Embed/nRF/medias/GDB_settings.png similarity index 100% rename from Embed/nRF/medias/GDB_settings.png rename to legacy_docs/Embed/nRF/medias/GDB_settings.png diff --git a/HES-SO/OneDrive.md b/legacy_docs/HES-SO/OneDrive.md similarity index 100% rename from HES-SO/OneDrive.md rename to legacy_docs/HES-SO/OneDrive.md diff --git a/HES-SO/README.md b/legacy_docs/HES-SO/README.md similarity index 100% rename from HES-SO/README.md rename to legacy_docs/HES-SO/README.md diff --git a/HES-SO/Teams.md b/legacy_docs/HES-SO/Teams.md similarity index 100% rename from HES-SO/Teams.md rename to legacy_docs/HES-SO/Teams.md diff --git a/HES-SO/medias/microsoft_graph-result_id.png b/legacy_docs/HES-SO/medias/microsoft_graph-result_id.png similarity index 100% rename from HES-SO/medias/microsoft_graph-result_id.png rename to legacy_docs/HES-SO/medias/microsoft_graph-result_id.png diff --git a/HES-SO/medias/microsoft_graph-result_research.png b/legacy_docs/HES-SO/medias/microsoft_graph-result_research.png similarity index 100% rename from HES-SO/medias/microsoft_graph-result_research.png rename to legacy_docs/HES-SO/medias/microsoft_graph-result_research.png diff --git a/HES-SO/medias/microsoft_graph-search_bar.png b/legacy_docs/HES-SO/medias/microsoft_graph-search_bar.png similarity index 100% rename from HES-SO/medias/microsoft_graph-search_bar.png rename to legacy_docs/HES-SO/medias/microsoft_graph-search_bar.png diff --git a/HES-SO/medias/microsoft_graph-search_site_id.png b/legacy_docs/HES-SO/medias/microsoft_graph-search_site_id.png similarity index 100% rename from HES-SO/medias/microsoft_graph-search_site_id.png rename to legacy_docs/HES-SO/medias/microsoft_graph-search_site_id.png diff --git a/MSE/README.md b/legacy_docs/MSE/README.md similarity index 100% rename from MSE/README.md rename to legacy_docs/MSE/README.md diff --git a/MSE/SRE/README.md b/legacy_docs/MSE/SRE/README.md similarity index 100% rename from MSE/SRE/README.md rename to legacy_docs/MSE/SRE/README.md diff --git a/MSE/SRE/tools.md b/legacy_docs/MSE/SRE/tools.md similarity index 100% rename from MSE/SRE/tools.md rename to legacy_docs/MSE/SRE/tools.md diff --git a/MSE/_navbar.md b/legacy_docs/MSE/_navbar.md similarity index 100% rename from MSE/_navbar.md rename to legacy_docs/MSE/_navbar.md diff --git a/Security/README.md b/legacy_docs/Security/README.md similarity index 100% rename from Security/README.md rename to legacy_docs/Security/README.md diff --git a/Security/SSH/README.md b/legacy_docs/Security/SSH/README.md similarity index 100% rename from Security/SSH/README.md rename to legacy_docs/Security/SSH/README.md diff --git a/_glossary.md b/legacy_docs/_glossary.md similarity index 100% rename from _glossary.md rename to legacy_docs/_glossary.md diff --git a/_navbar.md b/legacy_docs/_navbar.md similarity index 100% rename from _navbar.md rename to legacy_docs/_navbar.md diff --git a/divers/README.md b/legacy_docs/divers/README.md similarity index 100% rename from divers/README.md rename to legacy_docs/divers/README.md diff --git a/divers/example4_v3.png b/legacy_docs/divers/example4_v3.png similarity index 100% rename from divers/example4_v3.png rename to legacy_docs/divers/example4_v3.png diff --git a/divers/excalidraw.json b/legacy_docs/divers/excalidraw.json similarity index 100% rename from divers/excalidraw.json rename to legacy_docs/divers/excalidraw.json diff --git a/divers/panel.md b/legacy_docs/divers/panel.md similarity index 100% rename from divers/panel.md rename to legacy_docs/divers/panel.md diff --git a/index.html b/legacy_docs/index.html similarity index 100% rename from index.html rename to legacy_docs/index.html diff --git a/infotro/Eln/ADDA.md b/legacy_docs/infotro/Eln/ADDA.md similarity index 100% rename from infotro/Eln/ADDA.md rename to legacy_docs/infotro/Eln/ADDA.md diff --git a/infotro/Eln/Filtres.md b/legacy_docs/infotro/Eln/Filtres.md similarity index 100% rename from infotro/Eln/Filtres.md rename to legacy_docs/infotro/Eln/Filtres.md diff --git a/infotro/Eln/README.md b/legacy_docs/infotro/Eln/README.md similarity index 100% rename from infotro/Eln/README.md rename to legacy_docs/infotro/Eln/README.md diff --git a/infotro/Eln/RF.md b/legacy_docs/infotro/Eln/RF.md similarity index 100% rename from infotro/Eln/RF.md rename to legacy_docs/infotro/Eln/RF.md diff --git a/infotro/Eln/SignauxEtEchantillonnage.md b/legacy_docs/infotro/Eln/SignauxEtEchantillonnage.md similarity index 100% rename from infotro/Eln/SignauxEtEchantillonnage.md rename to legacy_docs/infotro/Eln/SignauxEtEchantillonnage.md diff --git a/infotro/Eln/Ztransform.md b/legacy_docs/infotro/Eln/Ztransform.md similarity index 100% rename from infotro/Eln/Ztransform.md rename to legacy_docs/infotro/Eln/Ztransform.md diff --git a/infotro/Eln/labs/06-filters/README.md b/legacy_docs/infotro/Eln/labs/06-filters/README.md similarity index 100% rename from infotro/Eln/labs/06-filters/README.md rename to legacy_docs/infotro/Eln/labs/06-filters/README.md diff --git a/infotro/Eln/labs/06-filters/bode_design_filter.svg b/legacy_docs/infotro/Eln/labs/06-filters/bode_design_filter.svg similarity index 100% rename from infotro/Eln/labs/06-filters/bode_design_filter.svg rename to legacy_docs/infotro/Eln/labs/06-filters/bode_design_filter.svg diff --git a/infotro/Eln/labs/06-filters/direct_form_1.svg b/legacy_docs/infotro/Eln/labs/06-filters/direct_form_1.svg similarity index 100% rename from infotro/Eln/labs/06-filters/direct_form_1.svg rename to legacy_docs/infotro/Eln/labs/06-filters/direct_form_1.svg diff --git a/infotro/Eln/labs/06-filters/direct_form_2.svg b/legacy_docs/infotro/Eln/labs/06-filters/direct_form_2.svg similarity index 100% rename from infotro/Eln/labs/06-filters/direct_form_2.svg rename to legacy_docs/infotro/Eln/labs/06-filters/direct_form_2.svg diff --git a/infotro/Eln/labs/06-filters/iir_filter.svg b/legacy_docs/infotro/Eln/labs/06-filters/iir_filter.svg similarity index 100% rename from infotro/Eln/labs/06-filters/iir_filter.svg rename to legacy_docs/infotro/Eln/labs/06-filters/iir_filter.svg diff --git a/infotro/Eln/labs/_navbar.md b/legacy_docs/infotro/Eln/labs/_navbar.md similarity index 100% rename from infotro/Eln/labs/_navbar.md rename to legacy_docs/infotro/Eln/labs/_navbar.md diff --git a/infotro/Eln/medias/add_line_on_smith_chart.png b/legacy_docs/infotro/Eln/medias/add_line_on_smith_chart.png similarity index 100% rename from infotro/Eln/medias/add_line_on_smith_chart.png rename to legacy_docs/infotro/Eln/medias/add_line_on_smith_chart.png diff --git a/infotro/Eln/medias/comptage-graph.png b/legacy_docs/infotro/Eln/medias/comptage-graph.png similarity index 100% rename from infotro/Eln/medias/comptage-graph.png rename to legacy_docs/infotro/Eln/medias/comptage-graph.png diff --git a/infotro/Eln/medias/comptage.png b/legacy_docs/infotro/Eln/medias/comptage.png similarity index 100% rename from infotro/Eln/medias/comptage.png rename to legacy_docs/infotro/Eln/medias/comptage.png diff --git a/infotro/Eln/medias/filters-h0.png b/legacy_docs/infotro/Eln/medias/filters-h0.png similarity index 100% rename from infotro/Eln/medias/filters-h0.png rename to legacy_docs/infotro/Eln/medias/filters-h0.png diff --git a/infotro/Eln/medias/filters-h1.png b/legacy_docs/infotro/Eln/medias/filters-h1.png similarity index 100% rename from infotro/Eln/medias/filters-h1.png rename to legacy_docs/infotro/Eln/medias/filters-h1.png diff --git a/infotro/Eln/medias/filters-h2.png b/legacy_docs/infotro/Eln/medias/filters-h2.png similarity index 100% rename from infotro/Eln/medias/filters-h2.png rename to legacy_docs/infotro/Eln/medias/filters-h2.png diff --git a/infotro/Eln/medias/filters-h3.png b/legacy_docs/infotro/Eln/medias/filters-h3.png similarity index 100% rename from infotro/Eln/medias/filters-h3.png rename to legacy_docs/infotro/Eln/medias/filters-h3.png diff --git a/infotro/Eln/medias/filters-h4.png b/legacy_docs/infotro/Eln/medias/filters-h4.png similarity index 100% rename from infotro/Eln/medias/filters-h4.png rename to legacy_docs/infotro/Eln/medias/filters-h4.png diff --git a/infotro/Eln/medias/filters-h5-h6.png b/legacy_docs/infotro/Eln/medias/filters-h5-h6.png similarity index 100% rename from infotro/Eln/medias/filters-h5-h6.png rename to legacy_docs/infotro/Eln/medias/filters-h5-h6.png diff --git a/infotro/Eln/medias/filters-orther.png b/legacy_docs/infotro/Eln/medias/filters-orther.png similarity index 100% rename from infotro/Eln/medias/filters-orther.png rename to legacy_docs/infotro/Eln/medias/filters-orther.png diff --git a/infotro/Eln/medias/filters-summary.png b/legacy_docs/infotro/Eln/medias/filters-summary.png similarity index 100% rename from infotro/Eln/medias/filters-summary.png rename to legacy_docs/infotro/Eln/medias/filters-summary.png diff --git a/infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png b/legacy_docs/infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png similarity index 100% rename from infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png rename to legacy_docs/infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png diff --git a/infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png b/legacy_docs/infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png similarity index 100% rename from infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png rename to legacy_docs/infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png diff --git a/infotro/Eln/medias/fourier_cerlce_unitaire.svg b/legacy_docs/infotro/Eln/medias/fourier_cerlce_unitaire.svg similarity index 100% rename from infotro/Eln/medias/fourier_cerlce_unitaire.svg rename to legacy_docs/infotro/Eln/medias/fourier_cerlce_unitaire.svg diff --git a/infotro/Eln/medias/impedance_matching.png b/legacy_docs/infotro/Eln/medias/impedance_matching.png similarity index 100% rename from infotro/Eln/medias/impedance_matching.png rename to legacy_docs/infotro/Eln/medias/impedance_matching.png diff --git a/infotro/Eln/medias/lit_recusrive_example.png b/legacy_docs/infotro/Eln/medias/lit_recusrive_example.png similarity index 100% rename from infotro/Eln/medias/lit_recusrive_example.png rename to legacy_docs/infotro/Eln/medias/lit_recusrive_example.png diff --git a/infotro/Eln/medias/parallele.png b/legacy_docs/infotro/Eln/medias/parallele.png similarity index 100% rename from infotro/Eln/medias/parallele.png rename to legacy_docs/infotro/Eln/medias/parallele.png diff --git a/infotro/Eln/medias/pesee.png b/legacy_docs/infotro/Eln/medias/pesee.png similarity index 100% rename from infotro/Eln/medias/pesee.png rename to legacy_docs/infotro/Eln/medias/pesee.png diff --git a/infotro/Eln/medias/reponse_impulsionelle-continue_discret.png b/legacy_docs/infotro/Eln/medias/reponse_impulsionelle-continue_discret.png similarity index 100% rename from infotro/Eln/medias/reponse_impulsionelle-continue_discret.png rename to legacy_docs/infotro/Eln/medias/reponse_impulsionelle-continue_discret.png diff --git a/infotro/Eln/medias/rf-capacitor-graph.png b/legacy_docs/infotro/Eln/medias/rf-capacitor-graph.png similarity index 100% rename from infotro/Eln/medias/rf-capacitor-graph.png rename to legacy_docs/infotro/Eln/medias/rf-capacitor-graph.png diff --git a/infotro/Eln/medias/rf-capacitor.png b/legacy_docs/infotro/Eln/medias/rf-capacitor.png similarity index 100% rename from infotro/Eln/medias/rf-capacitor.png rename to legacy_docs/infotro/Eln/medias/rf-capacitor.png diff --git a/infotro/Eln/medias/rf-filter_components.png b/legacy_docs/infotro/Eln/medias/rf-filter_components.png similarity index 100% rename from infotro/Eln/medias/rf-filter_components.png rename to legacy_docs/infotro/Eln/medias/rf-filter_components.png diff --git a/infotro/Eln/medias/rf-filters_prototype.png b/legacy_docs/infotro/Eln/medias/rf-filters_prototype.png similarity index 100% rename from infotro/Eln/medias/rf-filters_prototype.png rename to legacy_docs/infotro/Eln/medias/rf-filters_prototype.png diff --git a/infotro/Eln/medias/rf-inductor-graph.png b/legacy_docs/infotro/Eln/medias/rf-inductor-graph.png similarity index 100% rename from infotro/Eln/medias/rf-inductor-graph.png rename to legacy_docs/infotro/Eln/medias/rf-inductor-graph.png diff --git a/infotro/Eln/medias/rf-inductor.png b/legacy_docs/infotro/Eln/medias/rf-inductor.png similarity index 100% rename from infotro/Eln/medias/rf-inductor.png rename to legacy_docs/infotro/Eln/medias/rf-inductor.png diff --git a/infotro/Eln/medias/rf-kuroda_identities.png b/legacy_docs/infotro/Eln/medias/rf-kuroda_identities.png similarity index 100% rename from infotro/Eln/medias/rf-kuroda_identities.png rename to legacy_docs/infotro/Eln/medias/rf-kuroda_identities.png diff --git a/infotro/Eln/medias/rf-normalized_value-butterworth_1_10.png b/legacy_docs/infotro/Eln/medias/rf-normalized_value-butterworth_1_10.png similarity index 100% rename from infotro/Eln/medias/rf-normalized_value-butterworth_1_10.png rename to legacy_docs/infotro/Eln/medias/rf-normalized_value-butterworth_1_10.png diff --git a/infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_0_5.png b/legacy_docs/infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_0_5.png similarity index 100% rename from infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_0_5.png rename to legacy_docs/infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_0_5.png diff --git a/infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_3.png b/legacy_docs/infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_3.png similarity index 100% rename from infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_3.png rename to legacy_docs/infotro/Eln/medias/rf-normalized_value_chebyshev_ripple_3.png diff --git a/infotro/Eln/medias/rf-resistor.png b/legacy_docs/infotro/Eln/medias/rf-resistor.png similarity index 100% rename from infotro/Eln/medias/rf-resistor.png rename to legacy_docs/infotro/Eln/medias/rf-resistor.png diff --git a/infotro/Eln/medias/schema_bloc_fir.svg b/legacy_docs/infotro/Eln/medias/schema_bloc_fir.svg similarity index 100% rename from infotro/Eln/medias/schema_bloc_fir.svg rename to legacy_docs/infotro/Eln/medias/schema_bloc_fir.svg diff --git a/infotro/Eln/medias/sigma-delta.drawio b/legacy_docs/infotro/Eln/medias/sigma-delta.drawio similarity index 100% rename from infotro/Eln/medias/sigma-delta.drawio rename to legacy_docs/infotro/Eln/medias/sigma-delta.drawio diff --git a/infotro/Eln/medias/snr_by_osr.png b/legacy_docs/infotro/Eln/medias/snr_by_osr.png similarity index 100% rename from infotro/Eln/medias/snr_by_osr.png rename to legacy_docs/infotro/Eln/medias/snr_by_osr.png diff --git a/infotro/Eln/medias/specification_de_filtre.svg b/legacy_docs/infotro/Eln/medias/specification_de_filtre.svg similarity index 100% rename from infotro/Eln/medias/specification_de_filtre.svg rename to legacy_docs/infotro/Eln/medias/specification_de_filtre.svg diff --git a/infotro/Eln/ztabelle01.png b/legacy_docs/infotro/Eln/ztabelle01.png similarity index 100% rename from infotro/Eln/ztabelle01.png rename to legacy_docs/infotro/Eln/ztabelle01.png diff --git a/infotro/Eln/ztabelle02.png b/legacy_docs/infotro/Eln/ztabelle02.png similarity index 100% rename from infotro/Eln/ztabelle02.png rename to legacy_docs/infotro/Eln/ztabelle02.png diff --git a/infotro/Eln/ztabelle03.png b/legacy_docs/infotro/Eln/ztabelle03.png similarity index 100% rename from infotro/Eln/ztabelle03.png rename to legacy_docs/infotro/Eln/ztabelle03.png diff --git a/infotro/PTR/PCO.md b/legacy_docs/infotro/PTR/PCO.md similarity index 100% rename from infotro/PTR/PCO.md rename to legacy_docs/infotro/PTR/PCO.md diff --git a/infotro/PTR/README.md b/legacy_docs/infotro/PTR/README.md similarity index 100% rename from infotro/PTR/README.md rename to legacy_docs/infotro/PTR/README.md diff --git a/infotro/PTR/RealTime.md b/legacy_docs/infotro/PTR/RealTime.md similarity index 100% rename from infotro/PTR/RealTime.md rename to legacy_docs/infotro/PTR/RealTime.md diff --git a/infotro/PTR/SYS.md b/legacy_docs/infotro/PTR/SYS.md similarity index 100% rename from infotro/PTR/SYS.md rename to legacy_docs/infotro/PTR/SYS.md diff --git a/infotro/PTR/UML.md b/legacy_docs/infotro/PTR/UML.md similarity index 100% rename from infotro/PTR/UML.md rename to legacy_docs/infotro/PTR/UML.md diff --git a/infotro/PTR/XF.md b/legacy_docs/infotro/PTR/XF.md similarity index 100% rename from infotro/PTR/XF.md rename to legacy_docs/infotro/PTR/XF.md diff --git a/infotro/PTR/img.png b/legacy_docs/infotro/PTR/img.png similarity index 100% rename from infotro/PTR/img.png rename to legacy_docs/infotro/PTR/img.png diff --git a/infotro/PTR/img_1.png b/legacy_docs/infotro/PTR/img_1.png similarity index 100% rename from infotro/PTR/img_1.png rename to legacy_docs/infotro/PTR/img_1.png diff --git a/infotro/PTR/medias/algo_banquier1.png b/legacy_docs/infotro/PTR/medias/algo_banquier1.png similarity index 100% rename from infotro/PTR/medias/algo_banquier1.png rename to legacy_docs/infotro/PTR/medias/algo_banquier1.png diff --git a/infotro/PTR/medias/algo_banquier2.png b/legacy_docs/infotro/PTR/medias/algo_banquier2.png similarity index 100% rename from infotro/PTR/medias/algo_banquier2.png rename to legacy_docs/infotro/PTR/medias/algo_banquier2.png diff --git a/infotro/PTR/medias/interblocage.png b/legacy_docs/infotro/PTR/medias/interblocage.png similarity index 100% rename from infotro/PTR/medias/interblocage.png rename to legacy_docs/infotro/PTR/medias/interblocage.png diff --git a/infotro/PTR/medias/interruptions.png b/legacy_docs/infotro/PTR/medias/interruptions.png similarity index 100% rename from infotro/PTR/medias/interruptions.png rename to legacy_docs/infotro/PTR/medias/interruptions.png diff --git a/infotro/PTR/medias/multiprogramming.png b/legacy_docs/infotro/PTR/medias/multiprogramming.png similarity index 100% rename from infotro/PTR/medias/multiprogramming.png rename to legacy_docs/infotro/PTR/medias/multiprogramming.png diff --git a/infotro/PTR/medias/operating_system.png b/legacy_docs/infotro/PTR/medias/operating_system.png similarity index 100% rename from infotro/PTR/medias/operating_system.png rename to legacy_docs/infotro/PTR/medias/operating_system.png diff --git a/infotro/PTR/medias/ordonnanceur.png b/legacy_docs/infotro/PTR/medias/ordonnanceur.png similarity index 100% rename from infotro/PTR/medias/ordonnanceur.png rename to legacy_docs/infotro/PTR/medias/ordonnanceur.png diff --git a/infotro/PTR/medias/spooling.png b/legacy_docs/infotro/PTR/medias/spooling.png similarity index 100% rename from infotro/PTR/medias/spooling.png rename to legacy_docs/infotro/PTR/medias/spooling.png diff --git a/infotro/PTR/medias/synthese_diagram_queue_process.png b/legacy_docs/infotro/PTR/medias/synthese_diagram_queue_process.png similarity index 100% rename from infotro/PTR/medias/synthese_diagram_queue_process.png rename to legacy_docs/infotro/PTR/medias/synthese_diagram_queue_process.png diff --git a/infotro/PTR/medias/system_asynchron.png b/legacy_docs/infotro/PTR/medias/system_asynchron.png similarity index 100% rename from infotro/PTR/medias/system_asynchron.png rename to legacy_docs/infotro/PTR/medias/system_asynchron.png diff --git a/infotro/PTR/medias/system_synchron.png b/legacy_docs/infotro/PTR/medias/system_synchron.png similarity index 100% rename from infotro/PTR/medias/system_synchron.png rename to legacy_docs/infotro/PTR/medias/system_synchron.png diff --git a/infotro/PTR/medias/time-sharing.png b/legacy_docs/infotro/PTR/medias/time-sharing.png similarity index 100% rename from infotro/PTR/medias/time-sharing.png rename to legacy_docs/infotro/PTR/medias/time-sharing.png diff --git a/infotro/README.md b/legacy_docs/infotro/README.md similarity index 100% rename from infotro/README.md rename to legacy_docs/infotro/README.md diff --git a/infotro/SDi/README.md b/legacy_docs/infotro/SDi/README.md similarity index 100% rename from infotro/SDi/README.md rename to legacy_docs/infotro/SDi/README.md diff --git a/infotro/SDi/bluetooth.md b/legacy_docs/infotro/SDi/bluetooth.md similarity index 100% rename from infotro/SDi/bluetooth.md rename to legacy_docs/infotro/SDi/bluetooth.md diff --git a/infotro/SDi/cipher_modes.png b/legacy_docs/infotro/SDi/cipher_modes.png similarity index 100% rename from infotro/SDi/cipher_modes.png rename to legacy_docs/infotro/SDi/cipher_modes.png diff --git a/infotro/SDi/database.md b/legacy_docs/infotro/SDi/database.md similarity index 100% rename from infotro/SDi/database.md rename to legacy_docs/infotro/SDi/database.md diff --git a/infotro/SDi/iot_technologies.md b/legacy_docs/infotro/SDi/iot_technologies.md similarity index 100% rename from infotro/SDi/iot_technologies.md rename to legacy_docs/infotro/SDi/iot_technologies.md diff --git a/infotro/SDi/labs/SSL/README.md b/legacy_docs/infotro/SDi/labs/SSL/README.md similarity index 100% rename from infotro/SDi/labs/SSL/README.md rename to legacy_docs/infotro/SDi/labs/SSL/README.md diff --git a/infotro/SDi/labs/database/README.md b/legacy_docs/infotro/SDi/labs/database/README.md similarity index 100% rename from infotro/SDi/labs/database/README.md rename to legacy_docs/infotro/SDi/labs/database/README.md diff --git a/infotro/SDi/labs/database/relations.png b/legacy_docs/infotro/SDi/labs/database/relations.png similarity index 100% rename from infotro/SDi/labs/database/relations.png rename to legacy_docs/infotro/SDi/labs/database/relations.png diff --git a/infotro/SDi/labs/database/sdi04.sql b/legacy_docs/infotro/SDi/labs/database/sdi04.sql similarity index 100% rename from infotro/SDi/labs/database/sdi04.sql rename to legacy_docs/infotro/SDi/labs/database/sdi04.sql diff --git a/infotro/SDi/medias/TuxPenguinModes.jpeg b/legacy_docs/infotro/SDi/medias/TuxPenguinModes.jpeg similarity index 100% rename from infotro/SDi/medias/TuxPenguinModes.jpeg rename to legacy_docs/infotro/SDi/medias/TuxPenguinModes.jpeg diff --git a/infotro/SDi/medias/bluetooth_cccd.png b/legacy_docs/infotro/SDi/medias/bluetooth_cccd.png similarity index 100% rename from infotro/SDi/medias/bluetooth_cccd.png rename to legacy_docs/infotro/SDi/medias/bluetooth_cccd.png diff --git a/infotro/SDi/medias/bluetooth_client_serveur.png b/legacy_docs/infotro/SDi/medias/bluetooth_client_serveur.png similarity index 100% rename from infotro/SDi/medias/bluetooth_client_serveur.png rename to legacy_docs/infotro/SDi/medias/bluetooth_client_serveur.png diff --git a/infotro/SDi/medias/bluetooth_connection.png b/legacy_docs/infotro/SDi/medias/bluetooth_connection.png similarity index 100% rename from infotro/SDi/medias/bluetooth_connection.png rename to legacy_docs/infotro/SDi/medias/bluetooth_connection.png diff --git a/infotro/SDi/medias/bluetooth_gatt_att.png b/legacy_docs/infotro/SDi/medias/bluetooth_gatt_att.png similarity index 100% rename from infotro/SDi/medias/bluetooth_gatt_att.png rename to legacy_docs/infotro/SDi/medias/bluetooth_gatt_att.png diff --git a/infotro/SDi/medias/bluetooth_stack.png b/legacy_docs/infotro/SDi/medias/bluetooth_stack.png similarity index 100% rename from infotro/SDi/medias/bluetooth_stack.png rename to legacy_docs/infotro/SDi/medias/bluetooth_stack.png diff --git a/infotro/SDi/medias/coap_example.png b/legacy_docs/infotro/SDi/medias/coap_example.png similarity index 100% rename from infotro/SDi/medias/coap_example.png rename to legacy_docs/infotro/SDi/medias/coap_example.png diff --git a/infotro/SDi/medias/coap_overview.png b/legacy_docs/infotro/SDi/medias/coap_overview.png similarity index 100% rename from infotro/SDi/medias/coap_overview.png rename to legacy_docs/infotro/SDi/medias/coap_overview.png diff --git a/infotro/SDi/medias/database-1_null.png b/legacy_docs/infotro/SDi/medias/database-1_null.png similarity index 100% rename from infotro/SDi/medias/database-1_null.png rename to legacy_docs/infotro/SDi/medias/database-1_null.png diff --git a/infotro/SDi/medias/database-2_object.png b/legacy_docs/infotro/SDi/medias/database-2_object.png similarity index 100% rename from infotro/SDi/medias/database-2_object.png rename to legacy_docs/infotro/SDi/medias/database-2_object.png diff --git a/infotro/SDi/medias/database-3_relation.png b/legacy_docs/infotro/SDi/medias/database-3_relation.png similarity index 100% rename from infotro/SDi/medias/database-3_relation.png rename to legacy_docs/infotro/SDi/medias/database-3_relation.png diff --git a/infotro/SDi/medias/dataflow_in_layer_model.png b/legacy_docs/infotro/SDi/medias/dataflow_in_layer_model.png similarity index 100% rename from infotro/SDi/medias/dataflow_in_layer_model.png rename to legacy_docs/infotro/SDi/medias/dataflow_in_layer_model.png diff --git a/infotro/SDi/medias/density_graph.png b/legacy_docs/infotro/SDi/medias/density_graph.png similarity index 100% rename from infotro/SDi/medias/density_graph.png rename to legacy_docs/infotro/SDi/medias/density_graph.png diff --git a/infotro/SDi/medias/example_SAP.png b/legacy_docs/infotro/SDi/medias/example_SAP.png similarity index 100% rename from infotro/SDi/medias/example_SAP.png rename to legacy_docs/infotro/SDi/medias/example_SAP.png diff --git a/infotro/SDi/medias/http_notifications.png b/legacy_docs/infotro/SDi/medias/http_notifications.png similarity index 100% rename from infotro/SDi/medias/http_notifications.png rename to legacy_docs/infotro/SDi/medias/http_notifications.png diff --git a/infotro/SDi/medias/http_reminder.png b/legacy_docs/infotro/SDi/medias/http_reminder.png similarity index 100% rename from infotro/SDi/medias/http_reminder.png rename to legacy_docs/infotro/SDi/medias/http_reminder.png diff --git a/infotro/SDi/medias/json_syntaxe.png b/legacy_docs/infotro/SDi/medias/json_syntaxe.png similarity index 100% rename from infotro/SDi/medias/json_syntaxe.png rename to legacy_docs/infotro/SDi/medias/json_syntaxe.png diff --git a/infotro/SDi/medias/layers_protocols.png b/legacy_docs/infotro/SDi/medias/layers_protocols.png similarity index 100% rename from infotro/SDi/medias/layers_protocols.png rename to legacy_docs/infotro/SDi/medias/layers_protocols.png diff --git a/infotro/SDi/medias/osi_model.png b/legacy_docs/infotro/SDi/medias/osi_model.png similarity index 100% rename from infotro/SDi/medias/osi_model.png rename to legacy_docs/infotro/SDi/medias/osi_model.png diff --git a/infotro/SDi/medias/overview_protocol_example.png b/legacy_docs/infotro/SDi/medias/overview_protocol_example.png similarity index 100% rename from infotro/SDi/medias/overview_protocol_example.png rename to legacy_docs/infotro/SDi/medias/overview_protocol_example.png diff --git a/infotro/SDi/medias/protocole_exercice_class.uxf b/legacy_docs/infotro/SDi/medias/protocole_exercice_class.uxf similarity index 100% rename from infotro/SDi/medias/protocole_exercice_class.uxf rename to legacy_docs/infotro/SDi/medias/protocole_exercice_class.uxf diff --git a/infotro/SDi/medias/qos_mqtt.png b/legacy_docs/infotro/SDi/medias/qos_mqtt.png similarity index 100% rename from infotro/SDi/medias/qos_mqtt.png rename to legacy_docs/infotro/SDi/medias/qos_mqtt.png diff --git a/infotro/SDi/medias/security-cbc.png b/legacy_docs/infotro/SDi/medias/security-cbc.png similarity index 100% rename from infotro/SDi/medias/security-cbc.png rename to legacy_docs/infotro/SDi/medias/security-cbc.png diff --git a/infotro/SDi/medias/security-diffie_hellman.png b/legacy_docs/infotro/SDi/medias/security-diffie_hellman.png similarity index 100% rename from infotro/SDi/medias/security-diffie_hellman.png rename to legacy_docs/infotro/SDi/medias/security-diffie_hellman.png diff --git a/infotro/SDi/medias/security-diffie_hellman_color.png b/legacy_docs/infotro/SDi/medias/security-diffie_hellman_color.png similarity index 100% rename from infotro/SDi/medias/security-diffie_hellman_color.png rename to legacy_docs/infotro/SDi/medias/security-diffie_hellman_color.png diff --git a/infotro/SDi/medias/security-ecb.png b/legacy_docs/infotro/SDi/medias/security-ecb.png similarity index 100% rename from infotro/SDi/medias/security-ecb.png rename to legacy_docs/infotro/SDi/medias/security-ecb.png diff --git a/infotro/SDi/medias/strategie_3layers.png b/legacy_docs/infotro/SDi/medias/strategie_3layers.png similarity index 100% rename from infotro/SDi/medias/strategie_3layers.png rename to legacy_docs/infotro/SDi/medias/strategie_3layers.png diff --git a/infotro/SDi/medias/strategie_decouplage.png b/legacy_docs/infotro/SDi/medias/strategie_decouplage.png similarity index 100% rename from infotro/SDi/medias/strategie_decouplage.png rename to legacy_docs/infotro/SDi/medias/strategie_decouplage.png diff --git a/infotro/SDi/medias/strategie_memory.png b/legacy_docs/infotro/SDi/medias/strategie_memory.png similarity index 100% rename from infotro/SDi/medias/strategie_memory.png rename to legacy_docs/infotro/SDi/medias/strategie_memory.png diff --git a/infotro/SDi/medias/strategie_rx_tx.png b/legacy_docs/infotro/SDi/medias/strategie_rx_tx.png similarity index 100% rename from infotro/SDi/medias/strategie_rx_tx.png rename to legacy_docs/infotro/SDi/medias/strategie_rx_tx.png diff --git a/infotro/SDi/medias/strategie_sap.png b/legacy_docs/infotro/SDi/medias/strategie_sap.png similarity index 100% rename from infotro/SDi/medias/strategie_sap.png rename to legacy_docs/infotro/SDi/medias/strategie_sap.png diff --git a/infotro/SDi/medias/transmission_process-codage_physique-bpsk.png b/legacy_docs/infotro/SDi/medias/transmission_process-codage_physique-bpsk.png similarity index 100% rename from infotro/SDi/medias/transmission_process-codage_physique-bpsk.png rename to legacy_docs/infotro/SDi/medias/transmission_process-codage_physique-bpsk.png diff --git a/infotro/SDi/medias/transmission_process-codage_physique-qpsk.png b/legacy_docs/infotro/SDi/medias/transmission_process-codage_physique-qpsk.png similarity index 100% rename from infotro/SDi/medias/transmission_process-codage_physique-qpsk.png rename to legacy_docs/infotro/SDi/medias/transmission_process-codage_physique-qpsk.png diff --git a/infotro/SDi/medias/transmission_process-controle_erreur-arq.png b/legacy_docs/infotro/SDi/medias/transmission_process-controle_erreur-arq.png similarity index 100% rename from infotro/SDi/medias/transmission_process-controle_erreur-arq.png rename to legacy_docs/infotro/SDi/medias/transmission_process-controle_erreur-arq.png diff --git a/infotro/SDi/medias/transmission_process-controle_erreur-fec.png b/legacy_docs/infotro/SDi/medias/transmission_process-controle_erreur-fec.png similarity index 100% rename from infotro/SDi/medias/transmission_process-controle_erreur-fec.png rename to legacy_docs/infotro/SDi/medias/transmission_process-controle_erreur-fec.png diff --git a/infotro/SDi/medias/transmission_process-digitalisation_signal.png b/legacy_docs/infotro/SDi/medias/transmission_process-digitalisation_signal.png similarity index 100% rename from infotro/SDi/medias/transmission_process-digitalisation_signal.png rename to legacy_docs/infotro/SDi/medias/transmission_process-digitalisation_signal.png diff --git a/infotro/SDi/medias/transmission_process-matlab-codage_canal.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-codage_canal.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-codage_canal.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-codage_canal.png diff --git a/infotro/SDi/medias/transmission_process-matlab-decodage_canal.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-decodage_canal.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-decodage_canal.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-decodage_canal.png diff --git a/infotro/SDi/medias/transmission_process-matlab-dequantification.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-dequantification.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-dequantification.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-dequantification.png diff --git a/infotro/SDi/medias/transmission_process-matlab-dequantification_params.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-dequantification_params.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-dequantification_params.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-dequantification_params.png diff --git a/infotro/SDi/medias/transmission_process-matlab-echantiollnage.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-echantiollnage.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-echantiollnage.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-echantiollnage.png diff --git a/infotro/SDi/medias/transmission_process-matlab-quantification.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-quantification.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-quantification.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-quantification.png diff --git a/infotro/SDi/medias/transmission_process-matlab-quantification_params.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-quantification_params.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-quantification_params.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-quantification_params.png diff --git a/infotro/SDi/medias/transmission_process-matlab-reconstruction.png b/legacy_docs/infotro/SDi/medias/transmission_process-matlab-reconstruction.png similarity index 100% rename from infotro/SDi/medias/transmission_process-matlab-reconstruction.png rename to legacy_docs/infotro/SDi/medias/transmission_process-matlab-reconstruction.png diff --git a/infotro/SDi/medias/transmission_process-transmission_radio-am.png b/legacy_docs/infotro/SDi/medias/transmission_process-transmission_radio-am.png similarity index 100% rename from infotro/SDi/medias/transmission_process-transmission_radio-am.png rename to legacy_docs/infotro/SDi/medias/transmission_process-transmission_radio-am.png diff --git a/infotro/SDi/medias/transmission_process-transmission_radio-fm.png b/legacy_docs/infotro/SDi/medias/transmission_process-transmission_radio-fm.png similarity index 100% rename from infotro/SDi/medias/transmission_process-transmission_radio-fm.png rename to legacy_docs/infotro/SDi/medias/transmission_process-transmission_radio-fm.png diff --git a/infotro/SDi/medias/transmission_process-transmission_radio-pm.png b/legacy_docs/infotro/SDi/medias/transmission_process-transmission_radio-pm.png similarity index 100% rename from infotro/SDi/medias/transmission_process-transmission_radio-pm.png rename to legacy_docs/infotro/SDi/medias/transmission_process-transmission_radio-pm.png diff --git a/infotro/SDi/medias/xml_example.png b/legacy_docs/infotro/SDi/medias/xml_example.png similarity index 100% rename from infotro/SDi/medias/xml_example.png rename to legacy_docs/infotro/SDi/medias/xml_example.png diff --git a/infotro/SDi/protocol_development.md b/legacy_docs/infotro/SDi/protocol_development.md similarity index 100% rename from infotro/SDi/protocol_development.md rename to legacy_docs/infotro/SDi/protocol_development.md diff --git a/infotro/SDi/security.md b/legacy_docs/infotro/SDi/security.md similarity index 100% rename from infotro/SDi/security.md rename to legacy_docs/infotro/SDi/security.md diff --git a/infotro/SDi/transmission_process.md b/legacy_docs/infotro/SDi/transmission_process.md similarity index 100% rename from infotro/SDi/transmission_process.md rename to legacy_docs/infotro/SDi/transmission_process.md diff --git a/infotro/SEm/ASM.md b/legacy_docs/infotro/SEm/ASM.md similarity index 100% rename from infotro/SEm/ASM.md rename to legacy_docs/infotro/SEm/ASM.md diff --git a/infotro/SEm/INT.md b/legacy_docs/infotro/SEm/INT.md similarity index 100% rename from infotro/SEm/INT.md rename to legacy_docs/infotro/SEm/INT.md diff --git a/infotro/SEm/PLA.md b/legacy_docs/infotro/SEm/PLA.md similarity index 100% rename from infotro/SEm/PLA.md rename to legacy_docs/infotro/SEm/PLA.md diff --git a/infotro/SEm/README.md b/legacy_docs/infotro/SEm/README.md similarity index 100% rename from infotro/SEm/README.md rename to legacy_docs/infotro/SEm/README.md diff --git a/infotro/SEm/SPR.md b/legacy_docs/infotro/SEm/SPR.md similarity index 100% rename from infotro/SEm/SPR.md rename to legacy_docs/infotro/SEm/SPR.md diff --git a/infotro/SEm/SoC.md b/legacy_docs/infotro/SEm/SoC.md similarity index 100% rename from infotro/SEm/SoC.md rename to legacy_docs/infotro/SEm/SoC.md diff --git a/infotro/SEm/medias/Pasted image 20231116153738.png b/legacy_docs/infotro/SEm/medias/Pasted image 20231116153738.png similarity index 100% rename from infotro/SEm/medias/Pasted image 20231116153738.png rename to legacy_docs/infotro/SEm/medias/Pasted image 20231116153738.png diff --git a/infotro/SEm/medias/Pasted image 20231116154303.png b/legacy_docs/infotro/SEm/medias/Pasted image 20231116154303.png similarity index 100% rename from infotro/SEm/medias/Pasted image 20231116154303.png rename to legacy_docs/infotro/SEm/medias/Pasted image 20231116154303.png diff --git a/infotro/SEm/medias/Pasted image 20231116154853.png b/legacy_docs/infotro/SEm/medias/Pasted image 20231116154853.png similarity index 100% rename from infotro/SEm/medias/Pasted image 20231116154853.png rename to legacy_docs/infotro/SEm/medias/Pasted image 20231116154853.png diff --git a/infotro/SEm/medias/Pasted image 20231116155200.png b/legacy_docs/infotro/SEm/medias/Pasted image 20231116155200.png similarity index 100% rename from infotro/SEm/medias/Pasted image 20231116155200.png rename to legacy_docs/infotro/SEm/medias/Pasted image 20231116155200.png diff --git a/infotro/SEm/medias/cpsr.json b/legacy_docs/infotro/SEm/medias/cpsr.json similarity index 100% rename from infotro/SEm/medias/cpsr.json rename to legacy_docs/infotro/SEm/medias/cpsr.json diff --git a/infotro/SEm/medias/cpsr.png b/legacy_docs/infotro/SEm/medias/cpsr.png similarity index 100% rename from infotro/SEm/medias/cpsr.png rename to legacy_docs/infotro/SEm/medias/cpsr.png diff --git a/infotro/SEm/medias/mecanisme_interruption.png b/legacy_docs/infotro/SEm/medias/mecanisme_interruption.png similarity index 100% rename from infotro/SEm/medias/mecanisme_interruption.png rename to legacy_docs/infotro/SEm/medias/mecanisme_interruption.png diff --git a/infotro/SEm/medias/mosfet.png b/legacy_docs/infotro/SEm/medias/mosfet.png similarity index 100% rename from infotro/SEm/medias/mosfet.png rename to legacy_docs/infotro/SEm/medias/mosfet.png diff --git a/infotro/SEm/medias/process_bloc.png b/legacy_docs/infotro/SEm/medias/process_bloc.png similarity index 100% rename from infotro/SEm/medias/process_bloc.png rename to legacy_docs/infotro/SEm/medias/process_bloc.png diff --git a/infotro/SEm/medias/process_seq.png b/legacy_docs/infotro/SEm/medias/process_seq.png similarity index 100% rename from infotro/SEm/medias/process_seq.png rename to legacy_docs/infotro/SEm/medias/process_seq.png diff --git a/infotro/SEm/medias/process_seq_time.png b/legacy_docs/infotro/SEm/medias/process_seq_time.png similarity index 100% rename from infotro/SEm/medias/process_seq_time.png rename to legacy_docs/infotro/SEm/medias/process_seq_time.png diff --git a/infotro/SEm/medias/registers.png b/legacy_docs/infotro/SEm/medias/registers.png similarity index 100% rename from infotro/SEm/medias/registers.png rename to legacy_docs/infotro/SEm/medias/registers.png diff --git a/infotro/_navbar.md b/legacy_docs/infotro/_navbar.md similarity index 100% rename from infotro/_navbar.md rename to legacy_docs/infotro/_navbar.md diff --git a/scripts/drawio.js b/legacy_docs/scripts/drawio.js similarity index 100% rename from scripts/drawio.js rename to legacy_docs/scripts/drawio.js diff --git a/scripts/sw.js b/legacy_docs/scripts/sw.js similarity index 100% rename from scripts/sw.js rename to legacy_docs/scripts/sw.js diff --git a/scripts/viewer.min.js b/legacy_docs/scripts/viewer.min.js similarity index 100% rename from scripts/viewer.min.js rename to legacy_docs/scripts/viewer.min.js diff --git a/style/_coverpage.md b/legacy_docs/style/_coverpage.md similarity index 100% rename from style/_coverpage.md rename to legacy_docs/style/_coverpage.md diff --git a/style/yggdrasil.ico b/legacy_docs/style/yggdrasil.ico similarity index 100% rename from style/yggdrasil.ico rename to legacy_docs/style/yggdrasil.ico diff --git a/style/yggdrasil.svg b/legacy_docs/style/yggdrasil.svg similarity index 100% rename from style/yggdrasil.svg rename to legacy_docs/style/yggdrasil.svg diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh new file mode 100755 index 0000000..363725c --- /dev/null +++ b/scripts/bootstrap.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# Bootstrap the pinned toolchain (Calepin + Typst) into tools/. +# Idempotent: skips downloads when the binaries are already in place. +set -euo pipefail + +# Pinned toolchain -- bump both binaries together and re-verify checksums. +calepin_version="0.0.61" +typst_version="0.15.1" +# Typst publishes no .sha256 assets; this digest comes from the official +# release metadata (GitHub asset digest of typst-x86_64-unknown-linux-musl.tar.xz). +typst_sha256="a6d077d0a95eed5a2eba715b2dae06be954f624ccbf85758a03f389ded33118c" + +root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +tools="$root/tools" + +if [ "$(uname -m)" != "x86_64" ]; then + echo "error: unsupported architecture $(uname -m), pinned binaries are x86_64" >&2 + exit 1 +fi + +mkdir -p "$tools" + +if [ ! -x "$tools/calepin" ]; then + name="calepin-x86_64-unknown-linux-gnu.tar.xz" + base="https://github.com/vincentarelbundock/calepin/releases/download/v$calepin_version" + curl -fsSLo "$tools/$name" "$base/$name" + curl -fsSLo "$tools/$name.sha256" "$base/$name.sha256" + (cd "$tools" && sha256sum -c "$name.sha256") + tar -xJf "$tools/$name" -C "$tools" --strip-components=1 "calepin-x86_64-unknown-linux-gnu/calepin" + rm "$tools/$name" "$tools/$name.sha256" +fi + +if [ ! -x "$tools/typst" ]; then + name="typst-x86_64-unknown-linux-musl.tar.xz" + curl -fsSLo "$tools/$name" "https://github.com/typst/typst/releases/download/v$typst_version/$name" + echo "$typst_sha256 $name" > "$tools/$name.sha256" + (cd "$tools" && sha256sum -c "$name.sha256") + tar -xJf "$tools/$name" -C "$tools" --strip-components=1 "typst-x86_64-unknown-linux-musl/typst" + rm "$tools/$name" "$tools/$name.sha256" +fi + +"$tools/calepin" --version +"$tools/typst" --version diff --git a/scripts/calepin.sh b/scripts/calepin.sh new file mode 100755 index 0000000..b8ca051 --- /dev/null +++ b/scripts/calepin.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Run the pinned Calepin CLI from tools/, bootstrapping the toolchain on demand. +set -euo pipefail + +root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +if [ ! -x "$root/tools/calepin" ]; then + "$root/scripts/bootstrap.sh" +fi + +export PATH="$root/tools:$PATH" +exec "$root/tools/calepin" "$@" diff --git a/scripts/clean.sh b/scripts/clean.sh new file mode 100755 index 0000000..f51527e --- /dev/null +++ b/scripts/clean.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Remove generated site output and build caches. Never touches tracked files. +set -euo pipefail + +root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +rm -rf "$root/public" +find "$root/site" -name '.calepin' -prune -exec rm -rf {} + +find "$root/site" -type f -name '.calepin-entry.*' -delete diff --git a/site/404.typ b/site/404.typ new file mode 100644 index 0000000..7c9fae2 --- /dev/null +++ b/site/404.typ @@ -0,0 +1,6 @@ +#set document(title: [Not found]) +#metadata((pdf: false)) + +#title() + +The requested page does not exist. diff --git a/CNAME b/site/CNAME similarity index 100% rename from CNAME rename to site/CNAME diff --git a/site/assets/yggdrasil.ico b/site/assets/yggdrasil.ico new file mode 100644 index 0000000..6c33aea Binary files /dev/null and b/site/assets/yggdrasil.ico differ diff --git a/site/assets/yggdrasil.svg b/site/assets/yggdrasil.svg new file mode 100644 index 0000000..e94266f --- /dev/null +++ b/site/assets/yggdrasil.svg @@ -0,0 +1,43 @@ + + + + diff --git a/site/calepin.toml b/site/calepin.toml new file mode 100644 index 0000000..3d3e9fd --- /dev/null +++ b/site/calepin.toml @@ -0,0 +1,91 @@ +title = "Yggdrasil" +description = "Personal knowledge base." +base-url = "https://yggdrasil.kb28.ch" +theme = "themes/yggdrasil" +pdf = true +minify = true +search = "pagefind" +logo = "assets/yggdrasil.svg" +favicon = "assets/yggdrasil.ico" + +[robots] +enabled = false + +[pages] +include = ["tags.typ"] +exclude = ["drafts/**"] + +[static] +include = [ + "assets/**", + "CNAME" +] +exclude = ["drafts/**"] + +[menus] +main = [ + { label = "Home", target = "home/index.typ" }, + { label = "IT", target = "it/index.typ" }, + { label = "OT", target = "ot/index.typ" }, + { label = "Security", target = "security/index.typ" }, + { label = "Medias", target = "medias/index.typ" }, +] +social = [ + { label = "{icon:simple-icons:gitea}", target = "https://git.kb28.ch/Klagarge/Yggdrasil", aria-label = "Gitea" }, +] + + +[footer] +item = [ + { label = "© 2026" }, + { label = "@Klagarge", target = "https://git.kb28.ch/Klagarge" }, + { label = "@Fastium", target = "https://github.com/Fastium" }, +] + +[sidebar] +fold = true + +[[sidebar.section]] +title = "Home" +item = [ + { target = "home/index.typ" }, + { glob = "home/*" } +] + + +[[sidebar.section]] +title = "IT" +item = [ + { target = "it/index.typ" }, + { glob = "it/*" } +] + +[[sidebar.section]] +title = "OT" +item = [ + { target = "ot/index.typ" }, + { glob = "ot/*" } +] + +[[sidebar.section]] +title = "Security" +item = [ + { target = "security/index.typ" }, + { glob = "security/*" } +] + +[[sidebar.section]] +title = "Medias" +target = "medias/index.typ" +item = [ + # { glob = "medias/films/*.typ" }, + # { glob = "medias/series/*.typ" }, + # { glob = "medias/books/*.typ" }, + { target = "medias/index.typ" }, + { glob = "medias/*.typ" }, +] +section = [ + { title = "Films", item = [{ glob = "medias/films/*.typ" }] }, + { title = "Series", item = [{ glob = "medias/series/*.typ" }] }, + { title = "Books", item = [{ glob = "medias/books/*.typ" }] }, +] diff --git a/site/home/cooking.typ b/site/home/cooking.typ new file mode 100644 index 0000000..c526776 --- /dev/null +++ b/site/home/cooking.typ @@ -0,0 +1,6 @@ +#set document(title: [Cooking]) +#metadata((title: "Cooking", translation_key: "home-cooking")) + +#title() + +Placeholder page — the real content comes later. diff --git a/site/home/gardening.typ b/site/home/gardening.typ new file mode 100644 index 0000000..f3da685 --- /dev/null +++ b/site/home/gardening.typ @@ -0,0 +1,6 @@ +#set document(title: [Gardening]) +#metadata((title: "Gardening", translation_key: "home-gardening")) + +#title() + +Placeholder page — the real content comes later. diff --git a/site/home/index.typ b/site/home/index.typ new file mode 100644 index 0000000..caa2739 --- /dev/null +++ b/site/home/index.typ @@ -0,0 +1,7 @@ +#set document(title: [Home]) +#metadata((title: "Overview", translation_key: "home-index")) + +#title() + +Placeholder page for the home category: cooking, washing clothes, gardening. +The real content comes later. diff --git a/site/home/washing-clothes.typ b/site/home/washing-clothes.typ new file mode 100644 index 0000000..c4b4a0a --- /dev/null +++ b/site/home/washing-clothes.typ @@ -0,0 +1,6 @@ +#set document(title: [Washing clothes]) +#metadata((title: "Washing clothes", translation_key: "home-washing-clothes")) + +#title() + +Placeholder page — the real content comes later. diff --git a/site/index.typ b/site/index.typ new file mode 100644 index 0000000..cd7143a --- /dev/null +++ b/site/index.typ @@ -0,0 +1,7 @@ +#set document(title: [Yggdrasil]) +#metadata((title: "Home", translation_key: "home", layout: "layouts/site-landing.html")) + +#title() + +Welcome to Yggdrasil, my personal knowledge base. +Pick a master category from the menu diff --git a/site/it/index.typ b/site/it/index.typ new file mode 100644 index 0000000..4faf389 --- /dev/null +++ b/site/it/index.typ @@ -0,0 +1,7 @@ +#set document(title: [IT]) +#metadata((title: "Overview", translation_key: "it-index")) + +#title() + +Placeholder page for the IT category. +The real content comes later. diff --git a/site/medias/books/le_grand_cahier.typ b/site/medias/books/le_grand_cahier.typ new file mode 100644 index 0000000..82dd99f --- /dev/null +++ b/site/medias/books/le_grand_cahier.typ @@ -0,0 +1,11 @@ +#set document(title: [Le Grand Cahier]) +#metadata(( + translation_key: "le_grand_cahier", + date: "2026-10-10", + author: "Rémi Heredero", + pdf: true +)) + +#title() + +This book is awesome! diff --git a/site/medias/films/h2g2.typ b/site/medias/films/h2g2.typ new file mode 100644 index 0000000..1d5e06d --- /dev/null +++ b/site/medias/films/h2g2.typ @@ -0,0 +1,10 @@ +#set document(title: [H2G2]) +#metadata(( + translation_key: "h2g2", + date: "2026-10-10", + author: "Rémi Heredero", + pdf: true +)) + +#title() +One of my favourites films! diff --git a/site/medias/index.typ b/site/medias/index.typ new file mode 100644 index 0000000..7a28e38 --- /dev/null +++ b/site/medias/index.typ @@ -0,0 +1,43 @@ +#set document(title: [Medias]) +#metadata(( + title: "Overview", + translation_key: "medias-overview", + date: "2026-10-10", + tags: ("medias", "films", "series", "books"), + author: "Rémi Heredero", + summary: "My very opinionned ideas about somes films, series and books", + draft: false, + pdf: false +)) + +#title() + +Placeholder page for the medias category. +The real content comes later. + +#import "@preview/calepin:0.1.0" as calepin +#show: calepin.document + +== Films +#let posts = calepin.pages().filter(p => p.path.starts-with("medias/films/")).filter(p => not p.meta.at("draft", default: false)).sorted(key: p => p.meta.at("date", default: "")).rev() + +#for post in posts [ + - #link(post.href)[#post.title] \ + #post.meta.at("summary", default: []) +] + +== Series +#let posts = calepin.pages().filter(p => p.path.starts-with("medias/series/")).filter(p => not p.meta.at("draft", default: false)).sorted(key: p => p.meta.at("date", default: "")).rev() + +#for post in posts [ + - #link(post.href)[#post.title] \ + #post.meta.at("summary", default: []) +] + +== Books +#let posts = calepin.pages().filter(p => p.path.starts-with("medias/books/")).filter(p => not p.meta.at("draft", default: false)).sorted(key: p => p.meta.at("date", default: "")).rev() + +#for post in posts [ + - #link(post.href)[#post.title] \ + #post.meta.at("summary", default: []) +] diff --git a/site/medias/plex.typ b/site/medias/plex.typ new file mode 100644 index 0000000..a21479c --- /dev/null +++ b/site/medias/plex.typ @@ -0,0 +1,12 @@ +#set document(title: [Plex]) +#metadata(( + translation_key: "plex", + date: "2026-10-10", + author: "Rémi Heredero", + summary: "Plex is a media server", + pdf: true +)) + +#title() + +I think I'll switch to Jellyfin not in so long time diff --git a/site/medias/series/the_expanse.typ b/site/medias/series/the_expanse.typ new file mode 100644 index 0000000..140cb33 --- /dev/null +++ b/site/medias/series/the_expanse.typ @@ -0,0 +1,17 @@ +#set document(title: [The Expanse]) +#metadata(( + translation_key: "the_expanse", + date: "2026-10-10", + author: "Rémi Heredero", + summary: " - S01: 9/10 + - S02: 9/10 + - S03: 8/10 + - S04: 8/10 + - S05: 8/10 + - S06: 8/10", + pdf: true +)) + +#title() + +I love hard science! diff --git a/site/ot/index.typ b/site/ot/index.typ new file mode 100644 index 0000000..cb87941 --- /dev/null +++ b/site/ot/index.typ @@ -0,0 +1,7 @@ +#set document(title: [OT]) +#metadata((title: "Overview", translation_key: "ot-index")) + +#title() + +Placeholder page for the OT category. +The real content comes later. diff --git a/site/security/index.typ b/site/security/index.typ new file mode 100644 index 0000000..0d70aa4 --- /dev/null +++ b/site/security/index.typ @@ -0,0 +1,7 @@ +#set document(title: [Security]) +#metadata((title: "Overview", translation_key: "security")) + +#title() + +Placeholder page for the security category. +The real content comes later. diff --git a/site/security/ssh.typ b/site/security/ssh.typ new file mode 100644 index 0000000..6ca0c38 --- /dev/null +++ b/site/security/ssh.typ @@ -0,0 +1,6 @@ +#set document(title: [SSH]) +#metadata((title: "SSH", translation_key: "security-ssh")) + +#title() + +Placeholder page — the real content comes later. diff --git a/site/tags.typ b/site/tags.typ new file mode 100644 index 0000000..26d2015 --- /dev/null +++ b/site/tags.typ @@ -0,0 +1,23 @@ +#import "/.calepin/calepin.typ" as calepin +#show: calepin.document + +#let taxonomy(field) = { + let pages = calepin.pages() + .filter(page => page.meta.at(field, default: ()) != ()) + let terms = pages + .map(page => page.meta.at(field)) + .flatten() + .dedup() + .sorted(key: term => lower(term)) + + for term in terms { + heading(term, level: 2) + for page in pages.filter( + page => term in page.meta.at(field) + ) [ + - #link(page.href)[#page.title] + ] + } +} + +#taxonomy("tags") diff --git a/site/themes/yggdrasil/layouts/site-landing.html b/site/themes/yggdrasil/layouts/site-landing.html new file mode 100644 index 0000000..0f8e955 --- /dev/null +++ b/site/themes/yggdrasil/layouts/site-landing.html @@ -0,0 +1,293 @@ +{% set calepin_theme_storage_key = "calepin-website-theme" %} +{% set calepin_theme_param = "theme" %} +{% include "partials/site-head.html" %} + +{{ doc.body_open }} +{% set show_site_sidebar = false %} +{% include "partials/site-nav.html" %} +
+ {{ doc.body }} +
+{% include "partials/site-footer.html" %} +{% include "partials/site-search.html" %} +{% include "partials/theme-scripts.html" %} +{{ doc.body_close }} diff --git a/site/themes/yggdrasil/partials/site-nav-sidebar.html b/site/themes/yggdrasil/partials/site-nav-sidebar.html new file mode 100644 index 0000000..5018419 --- /dev/null +++ b/site/themes/yggdrasil/partials/site-nav-sidebar.html @@ -0,0 +1,47 @@ + diff --git a/site/themes/yggdrasil/theme.toml b/site/themes/yggdrasil/theme.toml new file mode 100644 index 0000000..4f40ac0 --- /dev/null +++ b/site/themes/yggdrasil/theme.toml @@ -0,0 +1 @@ +extends = "calepin"