installer/cd-dvd/channel: allow to disable bundled channel

When building kexec-based installer every mb saved will reduce the RAM usage and allow to install NixOS on smaller machines.
It also means that less data has to be downloaded from the network.
When using flakes or niv we no longer rely on nix channels beeing present
and when using something like nixos-anywhere, we no longer need to evaluate anything in the installer at all.

Changed files
+26 -24
nixos
modules
installer
cd-dvd
+26 -24
nixos/modules/installer/cd-dvd/channel.nix
···
echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
echo ${config.system.nixos.versionSuffix} | sed -e s/pre// > $out/nixos/svn-revision
'';
-
in
{
-
# Pin the nixpkgs flake in the installer to our cleaned up nixpkgs source.
-
# FIXME: this might be surprising and is really only needed for offline installations,
-
# see discussion in https://github.com/NixOS/nixpkgs/pull/204178#issuecomment-1336289021
-
nix.registry.nixpkgs.to = {
-
type = "path";
-
path = "${channelSources}/nixos";
-
};
+
options.system.installer.channel.enable = (lib.mkEnableOption "bundling NixOS/Nixpkgs channel in the installer") // { default = true; };
+
config = lib.mkIf config.system.installer.channel.enable {
+
# Pin the nixpkgs flake in the installer to our cleaned up nixpkgs source.
+
# FIXME: this might be surprising and is really only needed for offline installations,
+
# see discussion in https://github.com/NixOS/nixpkgs/pull/204178#issuecomment-1336289021
+
nix.registry.nixpkgs.to = {
+
type = "path";
+
path = "${channelSources}/nixos";
+
};
-
# Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required
-
# for nixos-install.
-
boot.postBootCommands = lib.mkAfter
-
''
-
if ! [ -e /var/lib/nixos/did-channel-init ]; then
-
echo "unpacking the NixOS/Nixpkgs sources..."
-
mkdir -p /nix/var/nix/profiles/per-user/root
-
${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \
-
-i ${channelSources} --quiet --option build-use-substitutes false \
-
${lib.optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root
-
mkdir -m 0700 -p /root/.nix-defexpr
-
ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
-
mkdir -m 0755 -p /var/lib/nixos
-
touch /var/lib/nixos/did-channel-init
-
fi
-
'';
+
# Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required
+
# for nixos-install.
+
boot.postBootCommands = lib.mkAfter
+
''
+
if ! [ -e /var/lib/nixos/did-channel-init ]; then
+
echo "unpacking the NixOS/Nixpkgs sources..."
+
mkdir -p /nix/var/nix/profiles/per-user/root
+
${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \
+
-i ${channelSources} --quiet --option build-use-substitutes false \
+
${lib.optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root
+
mkdir -m 0700 -p /root/.nix-defexpr
+
ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
+
mkdir -m 0755 -p /var/lib/nixos
+
touch /var/lib/nixos/did-channel-init
+
fi
+
'';
+
};
}