diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 130a3495c6d2..84b3adf72974 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22097,38 +22097,53 @@ with pkgs; nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { }; - /* - * Evaluate a NixOS configuration using this evaluation of Nixpkgs. - * - * With this function you can write, for example, a package that - * depends on a custom virtual machine image. - * - * Parameter: A module, path or list of those that represent the - * configuration of the NixOS system to be constructed. - * - * Result: An attribute set containing packages produced by this - * evaluation of NixOS, such as toplevel, kernel and - * initialRamdisk. - * The result can be extended in the modules by defining - * extra options in system.build. - * - * Unlike in plain NixOS, the nixpkgs.config, nixpkgs.overlays and - * nixpkgs.system options will be ignored by default. Instead, - * nixpkgs.pkgs will have the default value of pkgs as it was - * constructed right after invoking the nixpkgs function (e.g. the - * value of import { overlays = [./my-overlay.nix]; } - * but not the value of (import {} // { extra = ...; }). - * - * If you do want to use the config.nixpkgs options, you are - * probably better off by calling nixos/lib/eval-config.nix - * directly, even though it is possible to set config.nixpkgs.pkgs. - * - * For more information about writing NixOS modules, see - * https://nixos.org/nixos/manual/index.html#sec-writing-modules - * - * Note that you will need to have called Nixpkgs with the system - * parameter set to the right value for your deployment target. - */ + /* Evaluate a NixOS configuration using this evaluation of Nixpkgs. + + With this function you can write, for example, a package that + depends on a custom virtual machine image. + + Parameter: A module, path or list of those that represent the + configuration of the NixOS system to be constructed. + + Result: An attribute set containing packages produced by this + evaluation of NixOS, such as toplevel, kernel and + initialRamdisk. + The result can be extended in the modules by defining + extra attributes in system.build. + + Example: + + let + myOS = pkgs.nixos ({ lib, pkgs, config, ... }: { + + config.services.nginx = { + enable = true; + # ... + }; + + # This exports a runner for nginx + config.system.build.run-nginx = config.systemd.services.nginx.runner; + }); + in + myOS.run-nginx + + Unlike in plain NixOS, the nixpkgs.config, nixpkgs.overlays and + nixpkgs.system options will be ignored by default. Instead, + nixpkgs.pkgs will have the default value of pkgs as it was + constructed right after invoking the nixpkgs function (e.g. the + value of import { overlays = [./my-overlay.nix]; } + but not the value of (import {} // { extra = ...; }). + + If you do want to use the config.nixpkgs options, you are + probably better off by calling nixos/lib/eval-config.nix + directly, even though it is possible to set config.nixpkgs.pkgs. + + For more information about writing NixOS modules, see + https://nixos.org/nixos/manual/index.html#sec-writing-modules + + Note that you will need to have called Nixpkgs with the system + parameter set to the right value for your deployment target. + */ nixos = configuration: (import (self.path + "/nixos/lib/eval-config.nix") { inherit (pkgs.stdenv.hostPlatform) system;