Nonno Felice | In reply to Lucio Nel caso di Nix e NixOS, serve in buona sostanza ad avere una configurazione più ordinata e flessibile. In particolare invece di definire, ad esempio, dall'alto del flake gli output e gli argomenti di questi output è possibile decentralizzarli in altri file raggruppandoli per una qualche affinità. Solitamente ognuno di questi file definisce uno o più moduli flake-parts. È possibile avere infatti la configurazione NixOS e home manager nello stesso file ma con due moduli diversi.
Se avessi una configurazione modulare NON dentritica avresti ad esempio: Flake.nix Flake.lock homeModules nixosModules
Dove tutti gli output (nixosConfiguration, homeConfiguration,...) gli argomenti (user, hostname, ...) sono definiti nel flake.nix. Potresti avere poi un modulo multimedia.nix sia in nixosModules che in homeManager: #es. del solo modulo homeManager { config, lib, pkgs, ... }: { options.hm_multimedia.enable = lib.mkEnableOption "enables multimedia homeManager module"; config = lib.mkIf config.hm_multimedia.enable { home.packages = with pkgs; [ stable.davinci-resolve audacity yt-dlp ffmpeg imagemagick ghostscriptX # required by imagemagick loupe # image viewer ]; }; } Questo modulo va importato in home.nix dello specifico host e ne va abilitata l'opzione.
Se avessi invece una configurazione modulare DENDRITICA la struttura sarebbe: Flake.nix Flake.lock modules Il flake.nix importa ricorsivamente tutti i file nix in modules senza dover specificare quali, incluso multimedia.nix: {...}:{ flake.modules.homeManager.multimedia ={ home.packages = with pkgs; [ stable.davinci-resolve audacity yt-dlp ffmpeg imagemagick ghostscriptX # required by imagemagick loupe # image viewer ]; }; flake.modules.nixos.multimedia={ #contenuto per sistemi NixOS }; }
Questo modulo può essere attivato semplicemente importandolo dove ti serve, per esempio dove definisci hosts o utenti con: imports = [ inputs.self.modules.nixos.multimedia inputs.self.modules.homeManager.multimedia ] Sembra interessante, dovrò investigare meglio | 11:04:32 |