motiejus/config

NixOS config
git clone https://git.jakstys.lt/motiejus/config.git
Log | Tree | Refs | README | LICENSE

commit fa3c813709c36d4acdb182c6dc4fe1effb9699a3 (tree)
parent b890def976b493df3f141d1611f49e26168a3cc2
Author: Motiejus Jakštys <motiejus@jakstys.lt>
Date:   Wed, 28 Jan 2026 16:18:33 +0000

more distros

Diffstat:
MREADME.md | 9+++++++++
Mflake.nix | 8++++++--
Mhosts/mtworx/configuration.nix | 43+++++++++++++++++++++++++++++++++++--------
Apkgs/mrescue-alpine.nix | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apkgs/mrescue-debian-standard.nix | 45+++++++++++++++++++++++++++++++++++++++++++++
Apkgs/mrescue-debian-xfce.nix | 45+++++++++++++++++++++++++++++++++++++++++++++
Dpkgs/mrescue.nix | 72------------------------------------------------------------------------
7 files changed, 212 insertions(+), 82 deletions(-)

diff --git a/README.md b/README.md @@ -35,6 +35,15 @@ netboot 1. `dmesg | grep enp0` <- find the usb interface 2. Disable power saving: `echo -1 | sudo tee /sys/bus/usb/devices/2-1/power/autosuspend`. +Testing netboot +--------------- + +``` +sudo ip tuntap add dev tap0 mode tap user "$USER" +sudo ip link set dev tap0 up +sudo ip link set dev tap0 master br0 +``` + efi: qemu-system-x86_64 \ diff --git a/flake.nix b/flake.nix @@ -105,7 +105,9 @@ tmuxbash = super.callPackage ./pkgs/tmuxbash.nix { }; sentinelone = super.callPackage ./pkgs/sentinelone { }; chronoctl = super.callPackage ./pkgs/chronoctl.nix { }; - mrescue = super.callPackage ./pkgs/mrescue.nix { }; + mrescue-alpine = super.callPackage ./pkgs/mrescue-alpine.nix { }; + mrescue-debian-standard = super.callPackage ./pkgs/mrescue-debian-standard.nix { }; + mrescue-debian-xfce = super.callPackage ./pkgs/mrescue-debian-xfce.nix { }; vanta-agent = super.callPackage ./pkgs/vanta-agent.nix { }; gcloud-wrapped = super.callPackage ./pkgs/gcloud-wrapped { }; go-raceless = super.callPackage ./pkgs/go-raceless { inherit (nicer) ; }; @@ -391,7 +393,9 @@ weather gamja chronoctl - mrescue + mrescue-alpine + mrescue-debian-standard + mrescue-debian-xfce sentinelone ; }; diff --git a/hosts/mtworx/configuration.nix b/hosts/mtworx/configuration.nix @@ -16,15 +16,27 @@ let :menu menu PXE Boot Menu - item mrescue Boot mrescue (Rescue System) + item alpine Boot Alpine Linux 3.23.2 + item debian-standard Boot Debian Live 13.3.0 (Standard) + item debian-xfce Boot Debian Live 13.3.0 (XFCE) item netbootxyz Boot netboot.xyz item shell iPXE Shell - choose --default mrescue --timeout 10000 selected || goto menu + choose --default alpine --timeout 10000 selected || goto menu goto ''${selected} - :mrescue - kernel http://10.14.143.1/boot/mrescue/kernel - initrd http://10.14.143.1/boot/mrescue/initrd + :alpine + kernel http://10.14.143.1/boot/alpine/kernel + initrd http://10.14.143.1/boot/alpine/initrd + boot + + :debian-standard + kernel http://10.14.143.1/boot/debian-standard/kernel boot=live components fetch=http://10.14.143.1/boot/debian-standard/filesystem.squashfs + initrd http://10.14.143.1/boot/debian-standard/initrd + boot + + :debian-xfce + kernel http://10.14.143.1/boot/debian-xfce/kernel boot=live components fetch=http://10.14.143.1/boot/debian-xfce/filesystem.squashfs + initrd http://10.14.143.1/boot/debian-xfce/initrd boot :netbootxyz @@ -47,11 +59,26 @@ let # TFTP root directory with all boot files tftp-root = pkgs.runCommand "tftp-root" { } '' - mkdir -p $out/mrescue + mkdir -p $out/alpine + mkdir -p $out/debian-standard + mkdir -p $out/debian-xfce + cp ${customIpxeEfi}/ipxe.efi $out/boot.efi cp ${customIpxeBios}/undionly.kpxe $out/boot.kpxe - cp ${pkgs.mrescue}/kernel $out/mrescue/kernel - cp ${pkgs.mrescue}/initrd $out/mrescue/initrd + + # Alpine + cp ${pkgs.mrescue-alpine}/kernel $out/alpine/kernel + cp ${pkgs.mrescue-alpine}/initrd $out/alpine/initrd + + # Debian Standard + cp ${pkgs.mrescue-debian-standard}/kernel $out/debian-standard/kernel + cp ${pkgs.mrescue-debian-standard}/initrd $out/debian-standard/initrd + cp ${pkgs.mrescue-debian-standard}/filesystem.squashfs $out/debian-standard/filesystem.squashfs + + # Debian XFCE + cp ${pkgs.mrescue-debian-xfce}/kernel $out/debian-xfce/kernel + cp ${pkgs.mrescue-debian-xfce}/initrd $out/debian-xfce/initrd + cp ${pkgs.mrescue-debian-xfce}/filesystem.squashfs $out/debian-xfce/filesystem.squashfs ''; in { diff --git a/pkgs/mrescue-alpine.nix b/pkgs/mrescue-alpine.nix @@ -0,0 +1,72 @@ +{ + pkgs, + stdenv, + fetchurl, +}: + +stdenv.mkDerivation rec { + pname = "mrescue-alpine"; + version = "3.23.2"; + + src = fetchurl { + url = "https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-netboot-${version}-x86_64.tar.gz"; + hash = "sha256-nFfzrPH1KI2R3OXBOluV7wB/hY63ImxWp/tyzBahpK0="; + }; + + nativeBuildInputs = with pkgs; [ + gzip + cpio + squashfsTools + findutils + zstd + ]; + + sourceRoot = "."; + + unpackPhase = '' + runHook preUnpack + mkdir alpine-boot + tar -xzf $src -C alpine-boot --strip-components=1 + runHook postUnpack + ''; + + buildPhase = '' + runHook preBuild + + mkdir -p work/initramfs-extracted + cd work + + gzip -dc < ../alpine-boot/initramfs-virt | \ + cpio -idm --quiet -D initramfs-extracted + + unsquashfs -f -d modloop-extracted ../alpine-boot/modloop-virt >/dev/null + + mkdir -p initramfs-extracted/lib/modules + cp -r modloop-extracted/modules/* initramfs-extracted/lib/modules/ + + # Initialize apk database + mkdir -p initramfs-extracted/lib/apk/db + mkdir -p initramfs-extracted/etc/apk + touch initramfs-extracted/lib/apk/db/installed + touch initramfs-extracted/etc/apk/world + echo "https://dl-cdn.alpinelinux.org/alpine/latest-stable/main" > initramfs-extracted/etc/apk/repositories + echo "https://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> initramfs-extracted/etc/apk/repositories + + cd initramfs-extracted + find * .[^.*] -print0 | sort -z | \ + cpio --quiet -o -H newc -R +0:+0 --reproducible --null | \ + zstd -19 -T8 > ../initramfs-combined.zst + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + install -Dm644 ../../alpine-boot/vmlinuz-virt $out/kernel + install -Dm644 ../initramfs-combined.zst $out/initrd + + runHook postInstall + ''; +} diff --git a/pkgs/mrescue-debian-standard.nix b/pkgs/mrescue-debian-standard.nix @@ -0,0 +1,45 @@ +{ + pkgs, + stdenv, + fetchurl, +}: + +stdenv.mkDerivation rec { + pname = "mrescue-debian-standard"; + version = "13.3.0"; + + src = fetchurl { + url = "https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-${version}-amd64-standard.iso"; + hash = "sha256-7is9X5vGfYAe7+3b1WmO+7CzU1hyS37T20Yb4/Xn7NY="; + }; + + nativeBuildInputs = with pkgs; [ + p7zip + ]; + + sourceRoot = "."; + + unpackPhase = '' + runHook preUnpack + mkdir debian-live + 7z x -odebian-live $src >/dev/null + runHook postUnpack + ''; + + buildPhase = '' + runHook preBuild + # No build phase needed - files are extracted directly + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + install -Dm644 debian-live/live/vmlinuz $out/kernel + install -Dm644 debian-live/live/initrd.img $out/initrd + install -Dm644 debian-live/live/filesystem.squashfs $out/filesystem.squashfs + + runHook postInstall + ''; +} diff --git a/pkgs/mrescue-debian-xfce.nix b/pkgs/mrescue-debian-xfce.nix @@ -0,0 +1,45 @@ +{ + pkgs, + stdenv, + fetchurl, +}: + +stdenv.mkDerivation rec { + pname = "mrescue-debian-xfce"; + version = "13.3.0"; + + src = fetchurl { + url = "https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-${version}-amd64-xfce.iso"; + hash = "sha256-xvHLR2gOOdsTIu7FrOZdxgfG6keqniEhhf9ywJmtNXQ="; + }; + + nativeBuildInputs = with pkgs; [ + p7zip + ]; + + sourceRoot = "."; + + unpackPhase = '' + runHook preUnpack + mkdir debian-live + 7z x -odebian-live $src >/dev/null + runHook postUnpack + ''; + + buildPhase = '' + runHook preBuild + # No build phase needed - files are extracted directly + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + install -Dm644 debian-live/live/vmlinuz $out/kernel + install -Dm644 debian-live/live/initrd.img $out/initrd + install -Dm644 debian-live/live/filesystem.squashfs $out/filesystem.squashfs + + runHook postInstall + ''; +} diff --git a/pkgs/mrescue.nix b/pkgs/mrescue.nix @@ -1,72 +0,0 @@ -{ - pkgs, - stdenv, - fetchurl, -}: - -stdenv.mkDerivation rec { - pname = "mrescue"; - version = "3.23.2"; - - src = fetchurl { - url = "https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-netboot-${version}-x86_64.tar.gz"; - hash = "sha256-nFfzrPH1KI2R3OXBOluV7wB/hY63ImxWp/tyzBahpK0="; - }; - - nativeBuildInputs = with pkgs; [ - gzip - cpio - squashfsTools - findutils - zstd - ]; - - sourceRoot = "."; - - unpackPhase = '' - runHook preUnpack - mkdir alpine-boot - tar -xzf $src -C alpine-boot --strip-components=1 - runHook postUnpack - ''; - - buildPhase = '' - runHook preBuild - - mkdir -p work/initramfs-extracted - cd work - - gzip -dc < ../alpine-boot/initramfs-virt | \ - cpio -idm --quiet -D initramfs-extracted - - unsquashfs -f -d modloop-extracted ../alpine-boot/modloop-virt >/dev/null - - mkdir -p initramfs-extracted/lib/modules - cp -r modloop-extracted/modules/* initramfs-extracted/lib/modules/ - - # Initialize apk database - mkdir -p initramfs-extracted/lib/apk/db - mkdir -p initramfs-extracted/etc/apk - touch initramfs-extracted/lib/apk/db/installed - touch initramfs-extracted/etc/apk/world - echo "https://dl-cdn.alpinelinux.org/alpine/latest-stable/main" > initramfs-extracted/etc/apk/repositories - echo "https://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> initramfs-extracted/etc/apk/repositories - - cd initramfs-extracted - find * .[^.*] -print0 | sort -z | \ - cpio --quiet -o -H newc -R +0:+0 --reproducible --null | \ - zstd -19 -T8 > ../initramfs-combined.zst - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - mkdir -p $out - install -Dm644 ../../alpine-boot/vmlinuz-virt $out/kernel - install -Dm644 ../initramfs-combined.zst $out/initrd - - runHook postInstall - ''; -}