nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 27 lines 892 B view raw
1use anyhow::{Context, Result}; 2 3use crate::{ 4 SYSROOT_PATH, config::Config, find_init_in_prefix, init, switch_root, verify_init_is_nixos, 5}; 6 7/// Entrypoint for the `initrd-bin` binary. 8/// 9/// Initialize `NixOS` from a systemd initrd. 10pub fn initrd_init() -> Result<()> { 11 let init_in_sysroot = 12 find_init_in_prefix(SYSROOT_PATH).context("Failed to find init in sysroot")?; 13 14 let init_path = if let Ok(toplevel) = verify_init_is_nixos(SYSROOT_PATH, &init_in_sysroot) { 15 log::info!("Initializing NixOS..."); 16 let config = Config::from_toplevel(&toplevel, SYSROOT_PATH) 17 .context("Failed to get configuration")?; 18 init(SYSROOT_PATH, &toplevel, &config)?; 19 None 20 } else { 21 log::info!("Not initializing NixOS. Switching to new root immediately..."); 22 Some(init_in_sysroot) 23 }; 24 25 switch_root(init_path)?; 26 Ok(()) 27}