Amsel-Suite sur NixOs
Rédigé le . Édité le .Après de multiples recherches, et n'ayant pas trouvé comment utilisé Amsel-Suite sur NixOs, j'ai finalement utilisé une IA pour parvenir à mes fins.
Au commencement était l'OS
J'ai appris l'existence de NixOs tardivement. Je me suis décidé, il y a un peu plus d'un an. J'ai quitté mes anciens Linux pour cette distribution.
Autant le dire tout de suite, la courbe d'apprentissage s'apparente à gravir le Mont Blanc. Autant le système est fiable et robuste, le nombre de paquets logiciel impressionnant. Autant utiliser un soft non prévu relève d'une certaine gageure.
Et puis vint le Verbe
C'est vers mes 13/14 ans que j'ai commencé les Jeux de Rôle. Ah ! Advanced Dungeon {{ content }}amp; Dragon (1ère édition). Mon premier Paladin, mon premier anneau d'invisibilité, ma première partie en tant que MD. Et c'est là qu'entre en jeu Amsel-Suite. Parce que préparer une partie, ça se prépare !
Mais hélas, mon OS l'a dans l'os, car seuls un .deb et un .rpm sont disponibles au moment ou j'écris ces lignes (la version 1.6.3).
Comment s'en sort-on ?
- NixOs ne supporte pas FHS (Filesystem Hierarchy Standard). Enfin, disons que si on lui demande très gentiment, il peut en quelque sorte l'émuler.
- Il y a les Flakes. C'est puissant, et reproductible (voir cet [exemple][]. Et ça permet de se faire son propre package.
- Un peu d'aide : je me suis basé sur un message qui indiquait avoir réussi à faire fonctionner Amsel-Suite. Hélas, ma non-maitrise ne m'a pas permis d'y arriver à mon tour.
- Au final, je n'ai rien fait. J'ai testé pour la première fois l'usage d'une IA en l'occurence Claude.ai. Il a fallu au moins 25 générations de
flake.nixet quelques heures de recherches et de tests, mais il y est arrivé. Je pense que de mon côté, je n'y serais jamais arrivé seul. J'aurais probablement réussi à lancer lelauncherde Amsel-SUite, mais pas la récupération et utilisation de Lore et Tome. D'ailleurs, je développe cette partie un peu plus loin, après la solution.
Tu nous la donnes la soluce ?
Oui elle arrive. N'oubliez pas cette solution est en DSSL (comme la LPRAB ou la WTFPL).
- Créez un répertoire, appelez-le comme vous voulez,
- Copiez-y la version
1.6.3de Amsel-Suite au format.deb(dans mon casamsel-suite_1.6.3_amd64.deb), - Créez-y un fichier
flake.nix, - Remplissez le du code suivant suivant :
{
description = "Flake pour Amsel Suite (Ollam Technologies)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
# Shims sudo/pkexec dans le nix store
sudoShim = pkgs.writeShellScriptBin "sudo" ''
#!/bin/sh
exec "$@"
'';
pkexecShim = pkgs.writeShellScriptBin "pkexec" ''
#!/bin/sh
# Ignorer les flags spécifiques à pkexec avant de lancer la commande
while [ $# -gt 0 ]; do
case "$1" in
--disable-internal-agent|--help|--version)
shift
;;
--)
shift
break
;;
-*)
shift
;;
*)
break
;;
esac
done
exec "$@"
'';
in {
packages.${system}.default = pkgs.stdenv.mkDerivation rec {
pname = "amsel-suite";
version = "1.6.3";
src = ./amsel-suite_1.6.3_amd64.deb;
nativeBuildInputs = with pkgs; [
binutils
zstd
autoPatchelfHook
wrapGAppsHook3
makeWrapper
];
buildInputs = with pkgs; [
stdenv.cc.cc.lib
glib
gsettings-desktop-schemas
gtk3
pango
cairo
nss
nspr
dbus.lib
at-spi2-atk
cups.lib
xorg.libX11
xorg.libXcomposite
xorg.libXdamage
xorg.libXfixes
xorg.libXrandr
xorg.libXext
xorg.libxcb
libgbm
libxkbcommon
alsa-lib
ffmpeg
libdrm
libGL
udev
expat
hicolor-icon-theme
];
dontConfigure = true;
dontBuild = true;
unpackPhase = ''
ar x $src
tar --no-same-permissions -xf data.tar*
'';
fhsEnv = pkgs.buildFHSEnvBubblewrap {
pname = "${pname}-fhs-env";
inherit version;
targetPkgs = pkgs: with pkgs; [
glib
gsettings-desktop-schemas
hicolor-icon-theme
nss
nspr
dbus.lib
at-spi2-atk
cups.lib
gtk3
pango
cairo
xorg.libX11
xorg.libXcomposite
xorg.libXdamage
xorg.libXfixes
xorg.libXrandr
libgbm
xorg.libxcb
libxkbcommon
alsa-lib
ffmpeg
libdrm
xorg.libXext
libGL
udev
expat
stdenv.cc.cc.lib
];
mkdir -p "$HOME/.local/share/amsel-suite/opt"
mkdir -p "$HOME/.config/launcher"
'';
extraBwrapArgs = [
"--bind $HOME/.local/share/amsel-suite/opt /opt"
"--bind $HOME/.config/launcher $HOME/.config/launcher"
];
extraEnv = [
"ELECTRON_DISABLE_SANDBOX=1"
];
runScript = "";
};
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r usr $out/
# Le wrapper principal lance le FHS env avec notre inner script comme argument
makeWrapper ${fhsEnv}/bin/${pname}-fhs-env $out/usr/lib/amsel-suite/amsel-suite \
--add-flags "$out/usr/lib/amsel-suite/amsel-suite-inner" \
"''${gappsWrapperArgs[@]}"
# On crée le inner script APRÈS makeWrapper pour éviter que wrapGAppsHook3 ne le rewrap
# Il tourne à l'intérieur du sandbox FHS, force le PATH, puis lance le vrai binaire
cat {{ content }}gt; $out/usr/lib/amsel-suite/amsel-suite-inner {{ content }}lt;{{ content }}lt; EOF
#!/bin/sh
export PATH="${sudoShim}/bin:${pkexecShim}/bin:\$PATH"
export ELECTRON_DISABLE_SANDBOX=1
exec "$out/usr/lib/amsel-suite/Amsel Suite" "\$@"
EOF
chmod +x $out/usr/lib/amsel-suite/amsel-suite-inner
rm -f $out/usr/bin/amsel-suite
ln -s $out/usr/lib/amsel-suite/amsel-suite $out/usr/bin/amsel-suite
runHook postInstall
'';
meta = with pkgs.lib; {
description = "Launcher pour Amsel Suite par Ollam Technologies";
homepage = "https://ollam.ai/";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = [];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
};
};
};
}
- Exécutez la commande suivante :
nix build .#(ça peut prendre du temps, la première fois) - Faites tourner le bouzin :
result/usr/bin/amsel-suite.
C'était quoi les points bloquants ?
- L'installation de
TomeetLoreEn fait, comme je n'ai pas de/optsur NixOs, l'installation fail assez vite. Du coup, reste plus questrace. - Le manque de documentation
C'est le plus gros point noir. Après un
stracede tout le launcher et de s'en taper la lecture, on fini par trouver que lelauncherveut installer les produit sus-cités dans/opt, mais qu'aussi il utilisepkexecetsudo.
[pid 96615] execve("/bin/sh", ["/bin/sh", "-c", "cd \"/home/user/T\303\251l\303\251chargements/amsel\"; \"/run/wrappers/bin/pkexec\" --disable-internal-agent /usr/bin/env bash -c \"echo SUDOPROMPT; mv \\"/home/user/.config/launcher/Tome/Tome-linux-x64\\" \\"/opt/Tome\\" {{ content }}amp;{{ content }}amp; chown root:root \\"/opt/Tome/chrome-sandbox\\" {{ content }}amp;{{ content }}amp; sudo chmod 4755 \\"/opt/Tome/chrome-sandbox\\"\""], 0x1724019af000 /* 92 vars */) = 0
[pid 96615] execve("/run/wrappers/bin/pkexec", ["/run/wrappers/bin/pkexec", "--disable-internal-agent", "/usr/bin/env", "bash", "-c", "echo SUDOPROMPT; mv \"/home/user/.config/launcher/Tome/Tome-linux-x64\" \"/opt/Tome\" {{ content }}amp;{{ content }}amp; chown root:root \"/opt/Tome/chrome-sandbox\" {{ content }}amp;{{ content }}amp; sudo chmod 4755 \"/opt/Tome/chrome-sandbox\""], 0x559c9b58b530 /* 92 vars */) = 0
J'avais oublié que sur d'autres distributions, les instalations se faisaient en tant que root.
- Electron et sa sandbox
Si j'ai bien tout compris NixOs,
chrome-sandboxest inutile; d'ou leELECTRON_DISABLE_SANDBOX=1.
D'autres informations peut-être ?
Avec plaisir :
- Tome {{ content }}amp; Lore sont téléchargés dans ${HOME}/.local/share/amsel-suite/opt/. Attention ça fait plus de 800MiB.
$ tree -L2 .local/share/amsel-suite/
.local/share/amsel-suite/
├── bin
│ ├── pkexec
│ └── sudo
└── opt
├── Lore
└── Tome
5 directories, 2 files
- Lorsque j'ai réussi à installé Tome {{ content }}amp; Lore, il y a eu un message d'erreur qui est apparu dans Amsel-Suite. Balek, ça fonctionne.
- Les dates sont stockées dans
${HOME}/.amselsuite/. - Lorsque la 1.9 est sortie hier, j'ai fait l'update, j'ai de nouveau eu un message d'erreur. De nouveau Balek, ça fonctionne. (Update du 11/02/2026)