From 05757c6c9d3f434bc9c8eb2e1d5848e9462a21f6 Mon Sep 17 00:00:00 2001 From: Pierre Martin Date: Mon, 3 Aug 2026 12:33:27 +0200 Subject: [PATCH] feat(ai): configure LM Code for pi --- programs/pi.nix | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/programs/pi.nix b/programs/pi.nix index 7939b6f..0249362 100644 --- a/programs/pi.nix +++ b/programs/pi.nix @@ -1,15 +1,43 @@ -{ ... }: +{ config, pkgs, ... }: let # Ces dotfiles ne sont pas un flake (config par channels) : on résout donc # les sorties du flake pi.nix à la main, en épinglant le rev. # Mise à jour : remplacer le rev par le dernier de https://github.com/lukasl-dev/pi.nix pi = builtins.getFlake "github:lukasl-dev/pi.nix/1d37b58675b763ae6c9dc05d62321109066a4126"; + + # Passerelle LLM interne Lundi Matin (LiteLLM), même endpoint et même jeton + # que la fonction zsh `lmc`. Côté serveur, LM-Code route vers glm-5.2. + lmcModels = (pkgs.formats.json { }).generate "pi-models.json" { + providers.lundimatin = { + baseUrl = "https://llm-core.lundimatin.app"; + api = "anthropic-messages"; + # Résolu à chaque requête : le jeton ne passe pas par le store Nix. + apiKey = "!cat ${config.home.homeDirectory}/.config/lmc-token"; + # La passerelle renvoie des blocs thinking sans signature ; sans ça pi + # les dégrade en texte au lieu de les rejouer. + compat.allowEmptySignature = true; + models = [ + { + id = "LM-Code"; + name = "LM-Code (glm-5.2 — Lundi Matin)"; + reasoning = true; + contextWindow = 500000; + maxTokens = 64000; + } + ]; + }; + }; in { imports = [ pi.homeModules.default ]; programs.pi.coding-agent = { enable = true; + models = lmcModels; + settings = { + defaultProvider = "lundimatin"; + defaultModel = "LM-Code"; + }; }; }