hosts/zinc: custom network setup in initrd
This commit is contained in:
parent
fe7ccf245b
commit
bfdfc7ee68
@ -1,6 +1,31 @@
|
||||
{ config, ... }:
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
configure_network = pkgs.writeScriptBin "configure-network" ''
|
||||
ifdisplay=""
|
||||
while true; do
|
||||
ifdisplay_new=$(ipconfig -t 10 all)
|
||||
ipconfig_status=$?
|
||||
|
||||
# Only show network config if something changes
|
||||
if [[ "$ifdisplay" != "$ifdisplay_new" ]]; then
|
||||
ifdisplay=$ifdisplay_new
|
||||
echo
|
||||
echo "$ifdisplay"
|
||||
echo
|
||||
fi
|
||||
|
||||
# Wait a little before checking again
|
||||
if [[ $ipconfig_status == 0 ]]; then
|
||||
sleep 5
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
||||
in {
|
||||
|
||||
boot.initrd.network.enable = true;
|
||||
boot.initrd.network.ssh = {
|
||||
@ -16,7 +41,21 @@
|
||||
"igc" # integrated rj45 network interface
|
||||
"cdc_ether" # external 5G modem via usb
|
||||
];
|
||||
boot.kernelParams = [ "ip=dhcp" ];
|
||||
|
||||
boot.initrd.extraUtilsCommands = ''
|
||||
copy_bin_and_libs ${configure_network}/bin/configure-network
|
||||
'';
|
||||
|
||||
boot.initrd.network.postCommands = mkBefore ''
|
||||
configure-network &
|
||||
'';
|
||||
|
||||
boot.initrd.postMountCommands = mkBefore ''
|
||||
pkill -x configure-network
|
||||
|
||||
# Override the previously set interfaces with the ones that really exist
|
||||
ifaces=$(ip -o link show | grep "link/ether" | cut -d: -f2 | xargs -n 1)
|
||||
'';
|
||||
|
||||
boot.initrd.network.wireguard = {
|
||||
enable = true;
|
||||
|
Loading…
Reference in New Issue
Block a user