!ZUiNnfpRqQMDrPLChM:nixos.org

Nix ♥ la francophonie

232 Members
Salon francographe de NixOS75 Servers

Load older messages


SenderMessageTime
3 Apr 2022
@raitobezarius:matrix.orgraitobezariusquitte à resplitter les parties non dynamiques avec du readFile15:03:11
@Sweenu:matrix.orgSweenu

Okay, merci pour vos réponses ! J'allais partir sur faire un import d'un fichier nix comme tu dis mais je voulais être sûr que y'avais pas mieux. Le seul désavantage avec ça c'est que éditer le fichier est moins pratique puisque mon editeur ne détecte pas que dans la string c'est du yaml et donc pas de couleur ou quoi. Fin bref, je vais surement partir la dessus quand même.

Dans l'idéal, je verrais bien un truc ou tu fais readTemplate et c'est comme readFile mais tu peux faire des ${} à l'intérieur. Si je deviens meilleur en Nix, j'essaierai d'implémenter ça :P

15:07:59
@raitobezarius:matrix.orgraitobezariusça me paraît complexe d'implémenter readTemplate si on autorise n'importe quoi dans les ${}15:10:36
@raitobezarius:matrix.orgraitobezariustechniquement, tu pourrais avoir une drv, ça revient à évaluer un fichier Nix15:10:54
@raitobezarius:matrix.orgraitobezariusla seule différence c'est que ton truc c'est un fichier Nix sans les dépendances explicites en les variables, ce qui m'a l'air d'être une mauvaise chose15:11:10
@raitobezarius:matrix.orgraitobezariusla seule chose pseudo possible, c'est d'utiliser qq chose comme https://github.com/NixOS/nix/issues/1491 pour parser des fichiers avec un fragment de Nix plus faible et de faire la substitution basé sur un contexte qui serait fourni à readTemplate15:12:00
@raitobezarius:matrix.orgraitobezariusje suis pas convaincu que ça soit utile / intéressant comparé à une approche purement Nix ou d'appeler un helper dans une dérivation, ce qui donne accès à Dhall, etc.15:12:29
@raitobezarius:matrix.orgraitobezariusen ce qui concerne ton éditeur, il existe des solutions15:13:08
@raitobezarius:matrix.orgraitobezariustreesitter est capable de parser plusieurs langages dans un même fichier15:13:37
@raitobezarius:matrix.orgraitobezariusça devrait être possible de l'adapter pour le laisser reconnaître les syntaxes dans les Nix litterals15:13:55
@raitobezarius:matrix.orgraitobezarius(c.f. https://github.com/tree-sitter/tree-sitter/discussions/793)15:14:11
@Sweenu:matrix.orgSweenuMerci pour les explications ! Je vais faire au mieux pour l'instant, je verrai pour améliorer plus tard. Pour l'éditeur, quand https://helix-editor.com/ (qui utilise treesitter) aura atteint la parité avec Kakoune, je passerai peut-être dessus. D'ici là, y'aura peut-être le multi language support :)15:18:12
@raitobezarius:matrix.orgraitobezariusaussi, je réalise que puisque c'est du YAML, c'est aussi tout à fait possible de l'écrire directement en Nix puis de faire un toYAML pour avoir la version YAML et de rester que sur des éléments Nix15:18:31
@raitobezarius:matrix.orgraitobezarius(mais c'est pas tjrs évident)15:18:42
@Sweenu:matrix.orgSweenuAh oui! je pourrais faire ça en effet. C'est pas toujours évident à quel niveau ?15:20:02
@raitobezarius:matrix.orgraitobezariussi tu utilises des outils extérieurs qui agissent sur tes YAML, c'est un peu chiant de les faire opérer sur des Nix (voire impossible)15:20:31
@Sweenu:matrix.orgSweenu

Juste, pour le substituteAll est-ce que je peux faire un truc du genre:

confFile = substituteAll {
      src = builtins.readFile ./traefik.yml;
      email = config.vars.email;
      domainName = config.vars.domainName;
    };

Je lis la doc, je regarde des exemples, mais j'ai quand même du mal à comprendre comment l'utiliser 🤔

15:32:31
@symphorien:xlumurb.eusymphorienmême pas sûr que readFile soit nécessaire15:36:39
@symphorien:xlumurb.eusymphorien src = ./foo.yml 15:36:51
@Sweenu:matrix.orgSweenuAh okay ! je test15:39:06
@syntheit:matrix.orgDaniel joined the room.17:43:10
@raitobezarius:matrix.orgraitobezarius
In reply to @Sweenu:matrix.org

Juste, pour le substituteAll est-ce que je peux faire un truc du genre:

confFile = substituteAll {
      src = builtins.readFile ./traefik.yml;
      email = config.vars.email;
      domainName = config.vars.domainName;
    };

Je lis la doc, je regarde des exemples, mais j'ai quand même du mal à comprendre comment l'utiliser 🤔

ça marchera pas
21:44:16
@raitobezarius:matrix.orgraitobezariussubstituteAll n'existe que sous forme de fonction bash21:44:24
@raitobezarius:matrix.orgraitobezariusdonc il faut une dérivation21:44:27
@raitobezarius:matrix.orgraitobezarius https://nixos.org/manual/nixpkgs/stable/#fun-substituteAll dit que ça prend infile et outfile et ça remplace @xxx@ par les vars d'env 21:45:10
@raitobezarius:matrix.orgraitobezariusdonc il faut faire qq chose du type21:45:14
@raitobezarius:matrix.orgraitobezarius ah pkgs.substituteAll existe en effet ahem 21:46:07
@raitobezarius:matrix.orgraitobezariusoui donc ça doit marcher21:46:09
4 Apr 2022
@mic92:nixos.devMic92 C'est mon oneliner pour toYAML: (pkgs.writeScriptBin "nix2yaml" "nix eval --json -f \"$@\" | ${pkgs.yq-go}/bin/yq e -P -") 07:12:00
@immae:immae.euimmaePour information, si tu n’as pas besoin de "mise en page", le format json est un sous-ensemble du format yaml (donc un fichier json est valide comme du yaml)07:15:20

Show newer messages


Back to Room ListRoom Version: 6