start to prepare for zeta ARM machine
This commit is contained in:
parent
2db5befa3d
commit
778580c440
5 changed files with 173 additions and 4 deletions
|
@ -10,6 +10,10 @@
|
||||||
/data/nixos/share/common.nix
|
/data/nixos/share/common.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# x86-64 machine
|
||||||
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
# our hostname
|
# our hostname
|
||||||
networking.hostName = "beta";
|
networking.hostName = "beta";
|
||||||
networking.hostId = "c07bab49";
|
networking.hostId = "c07bab49";
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
/data/nixos/share/common.nix
|
/data/nixos/share/common.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# x86-64 machine
|
||||||
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
# our hostname
|
# our hostname
|
||||||
networking.hostName = "miku";
|
networking.hostName = "miku";
|
||||||
networking.hostId = "4d00f481";
|
networking.hostId = "4d00f481";
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
/data/nixos/share/common.nix
|
/data/nixos/share/common.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# x86-64 machine
|
||||||
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
# our hostname
|
# our hostname
|
||||||
networking.hostName = "neko";
|
networking.hostName = "neko";
|
||||||
networking.hostId = "4836f248";
|
networking.hostId = "4836f248";
|
||||||
|
|
|
@ -23,9 +23,6 @@ in
|
||||||
# install release
|
# install release
|
||||||
system.stateVersion = "25.05";
|
system.stateVersion = "25.05";
|
||||||
|
|
||||||
# atm all stuff is x86_64
|
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
|
||||||
|
|
||||||
# enable ZFS
|
# enable ZFS
|
||||||
boot.supportedFilesystems = ["zfs"];
|
boot.supportedFilesystems = ["zfs"];
|
||||||
|
|
||||||
|
@ -115,7 +112,6 @@ in
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# use a high resolution
|
# use a high resolution
|
||||||
boot.loader.systemd-boot.consoleMode = "max";
|
boot.loader.systemd-boot.consoleMode = "max";
|
||||||
|
|
161
zeta/install.txt
Normal file
161
zeta/install.txt
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
#
|
||||||
|
# preparation of installer on NixOS machine
|
||||||
|
# details see https://github.com/nix-community/nixos-apple-silicon/blob/main/docs/uefi-standalone.md
|
||||||
|
#
|
||||||
|
|
||||||
|
# get the Apple Silicon support git
|
||||||
|
git clone https://github.com/nix-community/nixos-apple-silicon.git
|
||||||
|
cd nixos-apple-silicon
|
||||||
|
|
||||||
|
# build m1n1
|
||||||
|
nix build .#m1n1 -o m1n1
|
||||||
|
|
||||||
|
# build uboot
|
||||||
|
nix build .#uboot-asahi -o u-boot
|
||||||
|
|
||||||
|
# build installer ISO
|
||||||
|
nix build .#installer-bootstrap -o installer -j4 -L
|
||||||
|
|
||||||
|
# write to USB stick
|
||||||
|
doas dd if=result/iso/nixos-*-x86_64-linux.iso of=/dev/sda bs=4M conv=fsync
|
||||||
|
|
||||||
|
#
|
||||||
|
# enable ssh for root
|
||||||
|
#
|
||||||
|
|
||||||
|
sudo bash
|
||||||
|
systemctl start sshd
|
||||||
|
passwd
|
||||||
|
|
||||||
|
# get wlan
|
||||||
|
nmtui
|
||||||
|
|
||||||
|
#
|
||||||
|
# install script below
|
||||||
|
#
|
||||||
|
|
||||||
|
# host name to use
|
||||||
|
HOST=zeta
|
||||||
|
|
||||||
|
# disks to use
|
||||||
|
DISK=/dev/disk/by-id/nvme-SAMSUNG_MZVLB1T0HBLR-000L2_S4DZNX0R362286
|
||||||
|
DISKS="$DISK"
|
||||||
|
|
||||||
|
# create partition table on all disks and EFI partition
|
||||||
|
RAID=""
|
||||||
|
for D in $DISKS; do
|
||||||
|
# kill old data
|
||||||
|
sgdisk --zap-all $D
|
||||||
|
blkdiscard -v -f $D
|
||||||
|
wipefs -a $D
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Create partition table
|
||||||
|
parted $D -- mklabel gpt
|
||||||
|
|
||||||
|
# Create a /boot as $D-part1
|
||||||
|
parted $D -- mkpart ESP fat32 1MiB 1024MiB
|
||||||
|
parted $D -- set 1 boot on
|
||||||
|
|
||||||
|
# Create a /nix as $D-part2
|
||||||
|
parted $D -- mkpart NIX 1024MiB 100%
|
||||||
|
|
||||||
|
# boot partition after short sleep, needed on some machines
|
||||||
|
sleep 5
|
||||||
|
mkfs.vfat $D-part1
|
||||||
|
|
||||||
|
# add part2 to raid
|
||||||
|
RAID="$RAID $D-part2"
|
||||||
|
done
|
||||||
|
|
||||||
|
# take a look at the partitions
|
||||||
|
lsblk
|
||||||
|
|
||||||
|
# ZFS zpool creation with compression and encryption
|
||||||
|
zpool create \
|
||||||
|
-o ashift=13 \
|
||||||
|
-o autotrim=off \
|
||||||
|
-O acltype=posixacl \
|
||||||
|
-O atime=off \
|
||||||
|
-O canmount=off \
|
||||||
|
-O checksum=blake3 \
|
||||||
|
-O compression=lz4 \
|
||||||
|
-O dnodesize=auto \
|
||||||
|
-O utf8only=on \
|
||||||
|
-O normalization=none \
|
||||||
|
-O xattr=sa \
|
||||||
|
-O mountpoint=none \
|
||||||
|
-O encryption=on \
|
||||||
|
-O keylocation=prompt \
|
||||||
|
-O keyformat=passphrase \
|
||||||
|
zpool $RAID
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# take a look at the partitions
|
||||||
|
lsblk
|
||||||
|
|
||||||
|
# show the pool
|
||||||
|
zpool status
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# create all the volumes
|
||||||
|
zfs create -o recordsize=64K -o mountpoint=legacy zpool/data
|
||||||
|
zfs create -o recordsize=64K -o mountpoint=legacy zpool/nix
|
||||||
|
zfs create -o recordsize=64K -o mountpoint=legacy zpool/root
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# show the pool
|
||||||
|
zpool status
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# create ZFS snapshot that we'll rollback to on boot
|
||||||
|
# see https://ryanseipp.com/post/nixos-encrypted-root/
|
||||||
|
zfs snapshot zpool/root@blank
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# prepare install, root
|
||||||
|
mount -t zfs zpool/root /mnt
|
||||||
|
|
||||||
|
# Create directories to mount file systems on
|
||||||
|
mkdir -p /mnt/{data,nix,boot,root,etc/nixos}
|
||||||
|
|
||||||
|
# mount the ESP
|
||||||
|
mount $DISK-part1 /mnt/boot
|
||||||
|
|
||||||
|
# mount volumes
|
||||||
|
mount -t zfs zpool/data /mnt/data
|
||||||
|
mount -t zfs zpool/nix /mnt/nix
|
||||||
|
|
||||||
|
# bind mount persistent stuff to data
|
||||||
|
mkdir -p /mnt/data/{root,nixos/$HOST}
|
||||||
|
mount --bind /mnt/data/root /mnt/root
|
||||||
|
mount --bind /mnt/data/nixos/$HOST /mnt/etc/nixos
|
||||||
|
|
||||||
|
# create fake /data to have the right paths
|
||||||
|
mkdir -p /data
|
||||||
|
mount --bind /mnt/data /data
|
||||||
|
|
||||||
|
# take a look
|
||||||
|
mount
|
||||||
|
|
||||||
|
# configure
|
||||||
|
nixos-generate-config --root /mnt
|
||||||
|
|
||||||
|
# copy config data from another machine including secrets
|
||||||
|
doas scp -r /data/nixos root@192.168.13.102:/mnt/data
|
||||||
|
|
||||||
|
# install
|
||||||
|
nixos-install --option experimental-features 'nix-command flakes' --no-root-passwd --root /mnt
|
||||||
|
|
||||||
|
# unmount all stuff and sync
|
||||||
|
umount -Rl /data /mnt
|
||||||
|
zpool export -a
|
||||||
|
sync
|
||||||
|
|
||||||
|
# shutdown once
|
||||||
|
shutdown now
|
Loading…
Add table
Add a link
Reference in a new issue