| 27 Oct 2025 |
gecko | Il segreto non deve finire mai in chiaro da nessuna derivation chiaramente, questa è la cosa importante. Per quello pensavo di usare agenix.
Se agenix me lo mette in una qualche path noto fuori da /nix/store o in una variabile d'ambiente a me va bene, poi m'arrangio. | 14:40:39 |
gecko | In reply to Andrea Ciceri Lo script eseguito come activation script si aspetta che l'host abbia le chiavi ssh giuste per decriptare i segreti ma non puo' saperlo quando nix valuta e builda le derivazioni. Quindi magari il sistema parte e tutto pero' mancano i segreti dentro /run/agenix e i servizi che li cercano falliscono quindi Non mi è chiaro come funzioni l'"activation script", ma mi pare che alla fine l'assenza delle chiavi SSH sia un'impurità che in questo caso giocherebbe esattamente a mio favore. Nel senso che il fatto che tu la abbia o no non finisce nell'hash della derivation. | 14:39:13 |
gecko | In reply to Andrea Ciceri Comunque, per curiosita', che derivazione stai buildando a cui serve un segreto? Magari c'e' un modo piu' pulito di gestire la cosa. Altrimenti concordo con @steinuil, non credo si possa fare altro...
Perche' comunque va bene introdurre una impurita' nella sandbox per leggere il segreto ma poi l'output finale nella derivazione non contiene piu' in nessun modo il segreto? Chiedo perche' senno' cosi' sei da capo Diciamo che ho un """compilatore""" closed di cui pago la licenza. Io vorrei che la CI lo possa usare, ma gli utenti no. Gli utenti devono però essere in grado di tirare giù dalle cache binarie delle derivation che hanno usato quel compilatore. | 14:37:10 |
David | ma il compilatore deve avere il segreto nella derivation o può leggerlo da una variabile d'ambiente o da un file fuori dal nix store? | 14:39:41 |
gecko | Sì ma popolare a mano il nix store fa schifo :P | 14:52:40 |
gecko | Come no? | 14:49:53 |
David | @gecko4242 metti un attimo da parte nix. come faresti senza? Se il segreto può essere messo in una variabile d'ambiente e ti serve in CI, usere lo strumento della CI | 14:44:42 |
gecko | Aaaaah sad | 14:52:01 |
gecko | Ma quindi agenix può solo rendere disponibili dei segreti a runtime (e.g., in un servizio systemd su nixos), non li rende disponibili in builder. Corretto? | 14:51:45 |
gecko | Ma perché fare una build impura quando potrei usare agenix 🤔 | 14:49:14 |
Alessandro Candido | (Secondo me) agenix e' solo piu' comodo che doverlo fare a mano e gestirsi i path e le chiavi. Cosi' almeno quella parte rimane tutta dichiarativa, e ti committi i segreti cifrati su un repo | 14:56:45 |
Alessandro Candido | Se non vuoi che la licenza sia world-readable, allora devi avere un input esterno, e quindi diventa impuro | 14:51:32 |
Marco Turchetto | Si ma lo fa a runtime non a build time, non sarebbe tanto diverso da chiamare sops age all'interno del tuo build script | 14:54:30 |
Alessandro Candido | Anche se per il file alla fine usassi agenix | 14:51:42 |
gecko | agenix non mette le cose nello store AFAIU | 14:53:08 |
Alessandro Candido | Credo che la build impura serva a prescindere | 14:50:12 |
David | perché quello che viene passato al builder non è segreto | 14:49:34 |
gecko | Sì, ma il builder mi filtra via le variabili d'ambiente, no? Also, se voglio dare accesso a più persone al compilatore closed mi pare più pulito usare agenix. | 14:46:49 |
Alessandro Candido | Tipicamente, per i servizi che hanno bisogno di un segreto, gli dai il path del file dove trovarlo | 14:52:16 |
gecko | Eh infatti non capivo, ora ha senso | 14:53:42 |
Alessandro Candido | Nel senso che una derivazione pura deve essere completamente riproducibile. Per cui hai bisogno di mettere nello store anche il compilatore e la licenza | 14:51:03 |
Alessandro Candido | Esatto | 14:51:55 |
David | il builder mi filtra via le variabili d'ambiente, no? questo perché vuoi usare il compilatore da nix build? devi fare una build impura in quel caso | 14:48:33 |
David | metti il file con il segreto in chiaro nel nix store. Funziona eh, ma magari non lo vuoi, dipende chi e cosa accede allo stesso store | 14:55:36 |
Alessandro Candido | Secondo me agenix puo' essere comunque utile, per strutturare la gestione del segreto, e la condivisione con altri | 14:53:13 |
Alex0 | Ha senso se è in una repo pubblica | 14:47:39 |
Alex0 | È lo stesso modo in cui tipo mathlab viene installato su nix
Se hai il binario, puoi caricarlo sullo store e poi usarlo nelle tue derivazioni | 14:46:16 |
Alex0 | Isn't this the case? | 14:46:59 |
Alex0 | Dipende dal context su dove viene runnato/buildato | 14:49:28 |
Alex0 | Se è privata fai quello che vuoi | 14:47:46 |