1
0
Files
configuration
flake
hosts
_iso
aluminium
astatine
backup-4
beryllium
carbon
clerie-backup
dn42-il-gw1
dn42-il-gw5
dn42-il-gw6
dn42-ildix-clerie
dn42-ildix-service
gatekeeper
hydra-1
hydra-2
krypton
mail-2
monitoring-3
nonat
osmium
palladium
porter
storage-2
tungsten
web-2
zinc
configuration.nix
hardware-configuration.nix
initrd.nix
programs.nix
secrets.json
ssh.pub
lib
modules
pkgs
profiles
users
.gitignore
README.md
flake.lock
flake.nix
nixfiles/hosts/zinc/initrd.nix

73 lines
1.7 KiB
Nix

{ 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 = {
enable = true;
port = 1022;
#shell = "/bin/cryptsetup-askpass";
authorizedKeys = config.users.users.clerie.openssh.authorizedKeys.keys;
hostKeys = [
"/var/src/secrets/initrd/ssh_host_ed25519_key"
];
};
boot.initrd.extraFiles."/root/.ash_history".source = pkgs.writeText ".ash_history" ''
cryptsetup-askpass
'';
boot.initrd.kernelModules = [
"igc" # integrated rj45 network interface
"cdc_ether" # external 5G modem via usb
];
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;
ipv6s = [ "2a01:4f8:c0c:15f1::8110/128" ];
ipv4s = [ "10.20.30.110/32" ];
privateKeyFile = "/var/src/secrets/wireguard/wg-initrd";
};
}