From 3134b38e0a3b50db8ccbdcdae2eccf2b51d71dff Mon Sep 17 00:00:00 2001
From: Millian Poquet <millian.poquet@irit.fr>
Date: Fri, 10 May 2024 01:08:29 +0200
Subject: [PATCH] artifact guide: nix binary cache + v traceability

---
 artifact-overview.typ | 58 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 53 insertions(+), 5 deletions(-)

diff --git a/artifact-overview.typ b/artifact-overview.typ
index ee7332f..a807b5f 100644
--- a/artifact-overview.typ
+++ b/artifact-overview.typ
@@ -69,6 +69,7 @@
   - Artifact data on Zenodo. #todo([zenodo link])
   - Artifact code on Software Heritage. #todo([software heritage link])
   - Artifact code on a GitLab instance. #todo([git link])
+  - Artifact Nix binary cache. #url("https://lightweight-pred-sched-europar24.cachix.org")
   #line(length:100%, stroke: .5mm)
 ]
 
@@ -176,13 +177,60 @@ Please note that the way to enable flakes depend on whether you are on NixOS or
 - Launching `nix build 'github:nixos/nixpkgs?ref=23.11#hello'` should create a `result` symbolic link in your current directory. Then, launching `./result/bin/hello` should print `Hello, world!`.
 - Launching `nix shell 'github:nixos/nixpkgs?ref=23.11#hello' --command hello` should print `Hello, world!`.
 
-== Configure Nix to use our binary cache
-This step is completely optional but recommended for this artifact reviewers, as it enables to download precompiled versions of our software environments instead of building them on your own machine.
-
-#todo[cachix]
+== Using our Nix binary cache
+*This step is completely optional*.
+Using our binary cache is however recommended
+as it enables to download precompiled versions of our software environments instead of building them on your own machine.
+Our cache has the following properties.
+- URL is #url("https://lightweight-pred-sched-europar24.cachix.org")
+- Public key is #text(size: 9pt, raw("lightweight-pred-sched-europar24.cachix.org-1:dHsm8geVskEOsZIjzXtVCmPvh0L2zwTlLm8V4QoJdgI="))
+
+Once again, we recommend to use #link("https://nixos.wiki/wiki/Binary_Cache#Using_a_binary_cache")[up-to-date documentation on using a Nix binary cache]
+but show how to use our cache as of 2024-05-07.
+
+If *you are using NixOS*, you must edit your Nix#underline[OS] configuration file to add our cache URL in the `nix.settings.substituters` array,
+and our cache public key in the `nix.settings.trusted-public-keys` array.
+
+If you are *not using NixOS*,
+you must edit your #underline[Nix] configuration file (`~/.config/nix/nix.conf` on Linux) to add our cache URL in the `substituters` array,
+and our cache public key in the `trusted-public-keys` array. Please find below a *2-line* example configuration file that only enables the NixOS binary cache and ours.
+
+#{
+  set text(size: 9pt)
+  show raw.where(block: true): it => [
+    #let nlines = it.lines.len()
+    #table(columns: (auto, auto), align: (right, left), inset: 0.0em, gutter: 0.5em, stroke: none,
+      ..it.lines.enumerate().map(((i, line)) => (math.mono(text(gray)[#(i + 1)]), line)).flatten()
+    )
+  ]
+  rect(stroke: (thickness: .05mm), fill: luma(97%), outset:0mm)[
+    ```
+    substituters = https://cache.nixos.org https://lightweight-pred-sched-europar24.cachix.org
+    trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= lightweight-pred-sched-europar24.cachix.org-1:dHsm8geVskEOsZIjzXtVCmPvh0L2zwTlLm8V4QoJdgI=
+    ```
+  ]
+}
 
 == Version traceability
-#todo[dump all envs versions]
+All the software versions we use are *fully and purely defined* in the `flake.nix` and `flake.lock` files,
+and in the `flake.nix` and `flake.lock` of the flake inputs (recursively).
+
+For the sake of traceability, here are the versions that we think are the most important.
+- This artifact Git repository commit #todo[git repo commit]
+- Nix 2.18.0
+- Nixpkgs commit `057f9aecfb71c4437d2b27d3323df7f93c010b7e`
+- NUR-kapack commit `4d8ca88fd8a0a2287ee5c023877f14d53d4854c1`
+- SimGrid release 3.34 (commit `036c801d55e3ab07b470c79640109080fed049a1`)
+- intervalset commit `13d8f2d7000d4dc4e3202422658b0b5d83f83679`
+- batprotocol commit `25bc5bbf039c18a8024c4ab326047ba56800376a`
+- easy-powercap release europar24 (commit `659660c35650e9f46ec47e8c0743d75649e68d7b`)
+- Batsim commit `ee797ccebbb95410479663ee0547e752112fc83e`
+- Python 3.11.6
+  - Pandas 2.1.1
+  - fastparquet release 2024.2.0 (commit `eec9e614603f9be3cb495409ccb263caff53fe9d`)
+- R 4.3.2
+  - tidyverse 2.0.0
+- Typst commit `21c78abd6eecd0f6b3208405c7513be3bbd8991c` (after 0.11.0)
 
 = Step-by-Step Instructions
 All the scripts strongly related to the experiments of Article @lightpredenergy are available on #todo[git repo].
-- 
GitLab