{pkgs, config, ...}: let inherit (pkgs.lib) mergeOneOption mkOption mkIf; in { require = [ { environment = { checkConfigurationOptions = mkOption { default = true; example = false; description = " If all configuration options must be checked. Non-existing options fail build. "; }; nix = mkOption { default = pkgs.nixUnstable; example = pkgs.nixCustomFun /root/nix.tar.gz; merge = mergeOneOption; description = " Use non-default Nix easily. Be careful, though, not to break everything. "; }; extraPackages = mkOption { default = []; example = [pkgs.firefox pkgs.thunderbird]; description = " This option allows you to add additional packages to the system path. These packages are automatically available to all users, and they are automatically updated every time you rebuild the system configuration. (The latter is the main difference with installing them in the default profile, /nix/var/nix/profiles/default. The value of this option must be a function that returns a list of packages. The function will be called with the Nix Packages collection as its argument for convenience. "; }; pathsToLink = mkOption { default = ["/bin" "/sbin" "/lib" "/share" "/man" "/info" "/etc"]; example = ["/"]; description = " Lists directories to be symlinked in `/var/run/current-system/sw'. "; }; cleanStart = mkOption { default = false; example = true; description = " There are some times when you want really small system for specific purpose and do not want default package list. Setting cleanStart to true allows you to create a system with empty path - only extraPackages will be included. "; }; }; } ]; }