Nix Milan | 110 Members | |
| https://milano.nix.pizza/ | 7 Servers |
| Sender | Message | Time |
|---|---|---|
| 2 Nov 2025 | ||
| 17 MB e' la risorsa che identifica o l'URL stesso? (comunque no, nessuna idea) | 15:08:01 | |
Unrelated, c'ho un URL da 17MB che non cambia mai che devo fetchare ad evaluation-time (contiene una serie di coppie (URL, hash)). Potrei usare builtins.fetchurl ma a quanto capisco cacha solo per un'ora e quindi ogni ora dovrei fetcharmi tutto il file. builtins.fetchtarball mi permette di specificare un hash, che è bello, ma a quanto capisco cacha comunque solo per un'ora. Idee? | 14:57:54 | |
Se vuoi una versione ancora piu' pompata c'e' pure writeShellApplication che fa anche andare shellcheck nella checkPhase della derivazione | 15:46:45 | |
Inoltre e' una derivazione, quindi ha una closure e si porta dietro tutte le dipendenze. Se dentro lo script usi tipo ${pkgs.foo}/bin/foo allora la derivazione si porta dietro foo | 15:46:13 | |
In reply to geckoperche' proprio ad eval time? IMO e' meglio evitare il piu' possibile, se e' per scaricare roba "privata" puoi aggiungere token al file pntato da nix-netrc.Comunque credo che usando pure-eval (di default se usi i flake) builtins.fetchurl dovrebbe chiederti anche un hash, immagino tu non stia usando i flake pero' magari puoi comunque passarglielo l'hash?Tra l'altro dove hai letto che cacha solo per un'ora? Non la trovo nella documentazione | 15:42:24 | |
In reply to gecko writeShellScriptBin ritorna una derivazione che una volta buildata produce una una cartella contenente bin/tuo-script.sh.Quindi pui fare tipo environment.systemPackages = [ (writeShellScriptBin {...}) ] | 15:44:40 | |
In reply to Andrea CiceriHai ragione, la doc di fetchtarball dice cacha un'ora, fetchurl no. Però se provi la seconda volta è più veloce.Non sto usando i flake, ma mi pare strano che la funzione prenda un argomento in più se sei in un flake 🤔 In realtà questo diventerà parte di un flake. Comunque non è roba privata, è che sono proprio gli URL di cui voglio fare pkgs.fetchurl, che quindi devo fare a evaluation time (credo).Io vorrei una roba che cachi indefinitamente e chi mi chiede l'hash. L'URL è questo btw: https://download.visualstudio.microsoft.com/download/pr/5011a9cc-e8ef-42cb-ad72-87de1031accc/b674dd46f83a684142689b3a86c73ba5f2e2477018087e4df218516214bbad58/VisualStudio.vsman | 16:40:04 | |
A 'sto punto non mi è ben chiaro l'uso di builtins.fetch{url,tarball} 🤔 | 17:01:29 | |
Mmh, dici di fare semplicemente builtins.readFile (pkgs.fetchurl ...)? Pensavo fosse haram, ma forse funziona. | 17:00:50 | |
| IDF? | 17:05:00 | |
OK, quindi quello che dicevo prima builtins.readFile. Se funziona figo, di nuovo però non capisco perché non usare sempre questo invece che builtins.fetchtarball. | 17:07:09 | |
| I guess per funzionare anche se non hai abilitato IFD | 17:08:11 | |
| Io ne ho bisogno ad evaluation time | 17:02:58 | |
| Se non passi per il build time, non puoi fare caching nel nix store | 17:04:49 | |
| Lol, IDF lo scambio sempre 🙈 | 17:05:44 | |
| Hai bisogno del valore ad evaluation time, ma questo non implica che tu lo debba scaricare ad eval time, puoi fare una IDF | 17:04:03 | |
| Credo tu abbia bisogno dei pkgs.fetch* invece dei builtins.fetch* | 16:57:02 | |
| Nixpkgs Reference Manual https://nixos.org/manual/nixpkgs/stable/#chap-pkgs-fetchers | 16:57:02 | |
| Import From Derivation | 17:05:16 | |
| Il tldr è che il download avviene in fasi diverse, evaluation Vs build time, c'è una tabellina riassuntiva nella doc | 17:02:11 | |
Bene, ho speso un paio d'ore a convertire uno script Python in nix builtins.convertHash). A ben pensarci, dato che non posso evitare IFD, tantovale teneremi lo script Python :| | 19:40:25 | |
| Ma perché vuoi evitare l'IFD? Cioè non è il top in certi casi ma non è nemmeno il male assoluto | 22:52:50 | |
| 3 Nov 2025 | ||
Ma no infatti, era solo una cosa che se evitavo preferivo. Comunque alla fine convertHash saves the day e son riuscito a fare tutto in pure nix (eccetto builtins.readFile che è IFD). Mi resta il dubbio se fosse meglio usare builtins.fetchurl ma va beh. | 07:55:24 | |
| Ah senno' se non vuoi usare i flake ma vuoi un tool cli che ti fa pinnare roba e metterla in un lockfile c'e' questo: https://github.com/andir/npins | 09:04:31 | |
| (non consiglio ma vorrei provarci un giorno, anche solo per cazzeggio) | 09:02:49 | |
| Comunque per use case molto estremi puoi creare nuove builtin (tipo questa per convertire gli hash) compilando un plugin e facendolo caricare dinamicamente a nix: https://nix.dev/manual/nix/2.24/command-ref/conf-file.html#conf-plugin-files | 09:02:18 | |
In reply to gecko> ma mi pare strano che la funzione prenda un argomento in più se sei in un flake Invece e' proprio cosi', una delle critiche ai flake infatti e' che fanno troppe cose tutte assieme (https://samuel.dionne-riel.com/blog/2023/09/06/flakes-is-an-experiment-that-did-too-much-at-once.html) Anche se nel caso particore della pure evaluation mode credo sia possibile attivarla anche senza flake (mai provato). Anche perche' senza hash come fa nix a garantire ad eval time che la roba scaricata dall'url sia sempre le stessa? Stesso motivo per cui nella pure eval mode non puoii fare builtins.getEnv o builtins.systemComunque se hai intenzione di usare i flake perche' non dichiari sta roba come input del flake direttamente? Sotto usa sempre builtins.fetchurl credo e lo fa ad eval time (lockando nel flake.lock)Anche se onestamente, se l'url non cambia spesso andrei di IFD e via... | 08:58:49 | |
| Si dice qualcosa qui: https://nix.dev/manual/nix/2.25/command-ref/conf-file#conf-pure-eval (comunque abbastanza vago) | 13:25:32 | |
| > Ma dov'è che è documentata 'sta cosa? Nella doc di fetchurl non se ne fa menzione. in effetti non dove la doc parla di builtins.fetchurl, forse una menzione ci stava li' siccome comunque moltissima gente parte direttamente coi flake | 13:25:10 | |
| esattamente questo intendevo | 13:24:03 | |