mirror of
https://github.com/nickolaj-jepsen/nixos.git
synced 2026-01-22 08:06:50 +01:00
feat: update bootstrap image
This commit is contained in:
parent
dfce77913b
commit
8e8dd928be
4 changed files with 117 additions and 8 deletions
|
|
@ -1,5 +1,75 @@
|
||||||
{username, ...}: {
|
{
|
||||||
networking.wireless.enable = false;
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Minimal system without desktop or dev tools
|
||||||
|
fireproof.desktop.enable = false;
|
||||||
|
fireproof.dev.enable = false;
|
||||||
|
fireproof.work.enable = false;
|
||||||
|
fireproof.homelab.enable = false;
|
||||||
|
|
||||||
|
# Use the nixos installation ISO as base
|
||||||
|
imports = [
|
||||||
|
"${inputs.nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Disable systemd-boot as we're using ISO bootloader
|
||||||
|
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
# Enable SSH for remote installation
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PermitRootLogin = lib.mkForce "yes";
|
||||||
|
PasswordAuthentication = lib.mkForce true;
|
||||||
|
KbdInteractiveAuthentication = lib.mkForce true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set a root password for the live environment (override the ISO's empty password)
|
||||||
|
users.users.root = {
|
||||||
|
initialHashedPassword = lib.mkForce null;
|
||||||
|
initialPassword = lib.mkForce "nixos";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Networking
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
users.users.${username}.extraGroups = ["networkmanager"];
|
networking.wireless.enable = lib.mkForce false; # Conflicts with networkmanager
|
||||||
|
|
||||||
|
# Installation tools
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# Disk tools
|
||||||
|
gptfdisk
|
||||||
|
parted
|
||||||
|
cryptsetup
|
||||||
|
btrfs-progs
|
||||||
|
dosfstools
|
||||||
|
ntfs3g
|
||||||
|
|
||||||
|
# NixOS installation
|
||||||
|
nixos-install-tools
|
||||||
|
|
||||||
|
# Network tools
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
|
||||||
|
# Editors
|
||||||
|
vim
|
||||||
|
nano
|
||||||
|
|
||||||
|
# System tools
|
||||||
|
htop
|
||||||
|
pciutils
|
||||||
|
usbutils
|
||||||
|
lsof
|
||||||
|
|
||||||
|
# Hardware detection
|
||||||
|
nixos-facter
|
||||||
|
];
|
||||||
|
|
||||||
|
# System state version (use mkForce to override the default)
|
||||||
|
system.stateVersion = lib.mkForce "25.11";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
7
hosts/bootstrap/disk-configuration.nix
Normal file
7
hosts/bootstrap/disk-configuration.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Bootstrap disk configuration
|
||||||
|
# This is a placeholder - the ISO doesn't use disko for its own disk
|
||||||
|
# but disko is available for formatting target systems
|
||||||
|
_: {
|
||||||
|
# No disko configuration needed for the live USB
|
||||||
|
# The installation medium uses the standard ISO layout
|
||||||
|
}
|
||||||
|
|
@ -57,11 +57,6 @@ with lib; let
|
||||||
);
|
);
|
||||||
in {
|
in {
|
||||||
config.flake.nixosConfigurations = {
|
config.flake.nixosConfigurations = {
|
||||||
bootstrap = mkSystem {
|
|
||||||
hostname = "bootstrap";
|
|
||||||
username = "nixos";
|
|
||||||
};
|
|
||||||
|
|
||||||
laptop = mkSystem {
|
laptop = mkSystem {
|
||||||
hostname = "laptop";
|
hostname = "laptop";
|
||||||
username = "nickolaj";
|
username = "nickolaj";
|
||||||
|
|
@ -78,5 +73,9 @@ in {
|
||||||
hostname = "homelab";
|
hostname = "homelab";
|
||||||
username = "nickolaj";
|
username = "nickolaj";
|
||||||
};
|
};
|
||||||
|
bootstrap = mkSystem {
|
||||||
|
hostname = "bootstrap";
|
||||||
|
username = "nickolaj";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
33
justfile
33
justfile
|
|
@ -79,6 +79,39 @@ disko-install hostname disk:
|
||||||
iso hostname:
|
iso hostname:
|
||||||
{{ nixcmd }} build .#nixosConfigurations.{{ hostname }}.config.formats.install-iso
|
{{ nixcmd }} build .#nixosConfigurations.{{ hostname }}.config.formats.install-iso
|
||||||
|
|
||||||
|
[doc('Build the bootstrap ISO for USB installation')]
|
||||||
|
[group('deploy')]
|
||||||
|
bootstrap-iso:
|
||||||
|
@echo "Building bootstrap ISO..."
|
||||||
|
{{ nixcmd }} build .#nixosConfigurations.bootstrap.config.system.build.isoImage {{ nix_output_monitor }}
|
||||||
|
@echo "ISO built: $(ls -1 result/iso/*.iso)"
|
||||||
|
|
||||||
|
[doc('Flash the bootstrap ISO to a USB drive')]
|
||||||
|
[group('deploy')]
|
||||||
|
bootstrap-flash device:
|
||||||
|
#!/usr/bin/env -S bash -e
|
||||||
|
if [ ! -b "{{ device }}" ]; then
|
||||||
|
echo "Error: {{ device }} is not a block device"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build the ISO first if needed
|
||||||
|
if [ ! -d "result/iso" ]; then
|
||||||
|
just bootstrap-iso
|
||||||
|
fi
|
||||||
|
|
||||||
|
iso_file=$(ls -1 result/iso/*.iso | head -1)
|
||||||
|
echo "Flashing $iso_file to {{ device }}..."
|
||||||
|
echo "WARNING: This will ERASE ALL DATA on {{ device }}"
|
||||||
|
read -p "Are you sure? (y/N) " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
sudo dd if="$iso_file" of="{{ device }}" bs=4M status=progress oflag=sync
|
||||||
|
echo "Done! You can now boot from {{ device }}"
|
||||||
|
else
|
||||||
|
echo "Aborted"
|
||||||
|
fi
|
||||||
|
|
||||||
[doc('Runs (r)age with yubikey identity')]
|
[doc('Runs (r)age with yubikey identity')]
|
||||||
[group('secret')]
|
[group('secret')]
|
||||||
age *ARGS="--help":
|
age *ARGS="--help":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue