notiz:nixos-tarball
NixOS als Tarball
{ config, pkgs, modulesPath, ... }:
let
# format target device with `mkfs.ext4 -L NIXOS_ROOT`
rootfsLabel = "NIXOS_ROOT";
in {
imports = [
(modulesPath + "/installer/cd-dvd/system-tarball.nix")
# (modulesPath + "/profiles/base.nix")
];
tarball.contents = [
{
source = pkgs.writeText "grub.cfg" ''
insmod gfxterm
insmod png
set gfxpayload=keep
menuentry "NixOS" {
search --set=drive1 --label ${rootfsLabel}
linux ($drive1)${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile} init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}
initrd ($drive1)${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}
}
'';
target = "/boot/grub.cfg";
}
];
fileSystems."/" = {
device = "/dev/disk/by-label/${rootfsLabel}";
fsType = "ext4";
};
}
nix-build "<nixpkgs/nixos>" -A config.system.build.tarball -I nixos-config=tarball.nix
{ hostName }:
let
# format target device with `mkfs.ext4 -L NIXOS_ROOT`
rootfsLabel = "NIXOS_ROOT";
configuration =
{ config, pkgs, lib, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/cd-dvd/system-tarball.nix")
(./configuration/hosts + "/${hostName}/configuration.nix")
];
tarball.contents = [
{
source = pkgs.writeText "grub.cfg" ''
insmod gfxterm
insmod png
set gfxpayload=keep
menuentry "NixOS" {
search --set=drive1 --label ${rootfsLabel}
linux ($drive1)${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile} init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}
initrd ($drive1)${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}
}
'';
target = "/boot/grub.cfg";
}
];
fileSystems."/" = lib.mkForce {
device = "/dev/disk/by-label/${rootfsLabel}";
fsType = "ext4";
};
};
evaluatedHost = import <nixpkgs/nixos> {
inherit configuration;
};
in
evaluatedHost.config.system.build.tarball
nix-build tarball.nix --argstr hostName myhost
notiz/nixos-tarball.txt · Zuletzt geändert: von clerie
