add iso, change networking for fw

This commit is contained in:
2023-11-28 15:44:54 +01:00
parent d1437de4b1
commit c45fb4d230
6 changed files with 177 additions and 15 deletions

84
iso/default.nix Normal file
View File

@@ -0,0 +1,84 @@
{
system ? "x86_64-linux",
}:
(import <nixpkgs/nixos/lib/eval-config.nix> {
inherit system;
modules = [
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
./configuration.nix
({ config, pkgs, lib, ... }: {
systemd.services.install = {
description = "Bootstrap a NixOS installation";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "polkit.service" ];
path = [ "/run/current-system/sw/" ];
script = with pkgs; ''
echo 'journalctl -fb -n100 -uinstall' >>~nixos/.bash_history
set -eux
wait-for() {
for _ in seq 10; do
if $@; then
break
fi
sleep 1
done
}
dev=/dev/sda
[ -b /dev/nvme0n1 ] && dev=/dev/nvme0n1
[ -b /dev/vda ] && dev=/dev/vda
${utillinux}/bin/sfdisk --wipe=always $dev <<-END
label: gpt
name=BOOT, size=512MiB, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B
name=NIXOS
END
mkfs.fat -F 32 -n boot /dev/disk/by-partlabel/BOOT
sync
wait-for [ -b /dev/disk/by-partlabel/BOOT ]
wait-for mkfs.fat -F 32 -n boot /dev/disk/by-partlabel/BOOT
wait-for [ -b /dev/disk/by-partlabel/NIXOS ]
mkfs.ext4 -L nixos /dev/disk/by-partlabel/NIXOS
sync
mount /dev/disk/by-partlabel/NIXOS /mnt
mkdir /mnt/boot
wait-for mount /dev/disk/by-label/boot /mnt/boot
install -D ${./configuration.nix} /mnt/etc/nixos/configuration.nix
install -D ${./hardware-configuration.nix} /mnt/etc/nixos/hardware-configuration.nix
sed -i -E 's/(\w*)#installer-only /\1/' /mnt/etc/nixos/*
${config.system.build.nixos-install}/bin/nixos-install \
--system ${(import <nixpkgs/nixos/lib/eval-config.nix> {
inherit system;
modules = [
./configuration.nix
./hardware-configuration.nix
];
}).config.system.build.toplevel} \
--no-root-passwd \
--cores 0
echo 'Shutting off in 1min'
${systemd}/bin/shutdown +1
'';
environment = config.nix.envVars // {
inherit (config.environment.sessionVariables) NIX_PATH;
HOME = "/root";
};
serviceConfig = {
Type = "oneshot";
};
};
})
];
}).config.system.build.isoImage