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.
This commit is contained in:
Jörg Thalheim 2023-10-28 15:35:56 +02:00 committed by Jörg Thalheim
parent af459e624e
commit 94b810348a

View File

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