| 5 Oct 2025 |
Francesco | È un po' macchinoso in effetti | 20:06:08 |
Francesco | In reply to gecko Madò ho capito perché non-ricordo-il-nome di Torino aveva detto di fare la config di nftables con i moduli, così le cose si possono automergiare tra diversi moduli che contribuiscono in maniera indipendente alle regole del firewall 🤯 (il tizio di Torino sono io) sì infatti io preferisco creare delle opzioni perché poi posso definire pezzi di configurazione in moduli diversi! | 19:54:05 |
David | Ma le regole di iptables sono valutate in ordine, come vengono messe poi nello script finale? | 19:57:41 |
gecko | Le cose che devo fare io sono abbastanza ortogonali tra loro e dovrebbe venire fuori bene. Non so sarebbe abbastanza generale da coprire tutti gli use case e, per dire, andare in nixpkgs. | 20:11:06 |
Francesco | Tranquillo lol anch'io | 20:21:19 |
gecko | In reply to Francesco (il tizio di Torino sono io) sì infatti io preferisco creare delle opzioni perché poi posso definire pezzi di configurazione in moduli diversi! Sorry ma coi nomi son pessimo | 20:17:00 |
| 6 Oct 2025 |
Alessandro Candido | In reply to Francesco Se non ricordo male ci sono degli helper in lib che puoi usare per dire alla merge function di mettere qualcosa prima o dopo di qualcos'altro Secondo me è chiaramente qualcosa con cui fare il callo. Ma non è così terribile. Se hai poche occorrenze, puoi usare mkBefore/mkAfter. Se ne hai tante, cominci a usare mkOrder 1000, 2000, 3000... che poi è quello che fai tipicamente anche coi file in etc/ quando la configurazione è in una cartella e non in un unico file
https://nixos.org/manual/nixos/stable/#sec-option-definitions-ordering | 03:23:10 |
David | si è un workaround 🤷♂️ | 07:36:30 |
David | se non ha un default significa che viene valutata solo nei casi in cui è obbligatorio metterci un valore, in quel caso probabilmente sai che valore vuoi metterci | 07:39:09 |
Andrea Ciceri | Io quello intendevo per "unsettare" | 07:46:01 |
Andrea Ciceri | Non funziona sempre pero', se un default non ce l'ha? | 07:37:17 |
Andrea Ciceri | Non puoi neanche togliere elementi da una lista gia' settati in altri moduli che io sappia (o forse c'era un modo? O un workaround?) | 07:43:32 |
Andrea Ciceri | Il module system e' veramente versatile, puoi anche creare dei nuovi tipi che "mergiano" come vuoi te.
L'unico limite che mi da fastidio con cui spesso mi sono scontrato e' che non puoi "unsettare" un'opzione settata un altro modulo. | 07:35:18 |
Andrea Ciceri | Questo e' vero anche per i freeform module? Tipo se importo un modulo che mi setta app.settings.chiave (che e' un freeform module diciamo) ma io non voglio ce chiave appaia nel json/toml/quello che e' | 07:42:50 |
David | me le segno e controllo, non avevo mai pensato al primo caso | 07:44:22 |
David | non so se si può fare qualche magia facendo un modulo wrapper | 07:47:47 |
David | Puoi forzare il valore a il suo default | 07:36:03 |
David | tecnicamente è vero, non si può fare unset, non c'è un valore per "undefined" | 07:39:46 |
David | nel secondo in non vuoi fare "unset" del valore, vuoi proprio togliere una definition e non si può fare | 07:45:11 |
Andrea Ciceri | E comunque non lo usi da dentro il modulo stesso, devi prendere il punto fisso gia' computato | 07:53:16 |
Andrea Ciceri | Ma e' computazionalmente pesante | 07:52:20 |
David | non si può fare il filter perché:
- se fai il set alla stessa priorità diventa un infinite recursion
- se fai il set a una priorità più alta non hai accesso alla versione calcolata delle altre priorità | 07:51:10 |
Andrea Ciceri | esatto, stavo per scrivere la prima! Forse puoi usare extendModules | 07:51:58 |
David | o forse si, ma è una cosa così internal che non la userei comunque | 07:51:30 |
Francesco | Anzi il filter non so se sia possibile, ma mkForce sì | 07:50:02 |
Francesco | Nel secondo caso credo che tu possa andare a fare un filter sulla lista. So che se vuoi forzare una lista ad essere vuota puoi usare mkForce tipo environment.defaultPackages = lib.mkForce [] ti toglie tutti i default packages | 07:48:57 |
Francesco | Eh sì hai ragione | 07:51:50 |
Andrea Ciceri | In reply to David non so se si può fare qualche magia facendo un modulo wrapper Alla fine ho sempre trovato un modo eh, pero' sarebbe bello ci fosse un modo meno hacky. C'e' anche l'opzione drastica di usare disableModules e copia/incollare una versione diversa del modulo | 07:50:40 |
Francesco | A questo punto servirebbe un meccanismo tipo gli overlay per le options ma mi sembra un po' eccessivo 😅 | 08:08:34 |
Francesco | In reply to Andrea Ciceri esatto, stavo per scrivere la prima! Forse puoi usare extendModules Non lo conoscevo extendModules, interesting | 08:08:55 |