nix config
1#!/usr/bin/env bash
2set -e
3
4unmount_usb() {
5 if mountpoint -q /mnt/usb; then
6 sudo umount /mnt/usb
7 echo -e "\e[0;32mUSB drive unmounted.\e[0m"
8 fi
9}
10
11mount_usb() {
12 if mountpoint -q /mnt/usb; then
13 echo -e "\e[0;32mUSB drive already mounted.\e[0m"
14 else
15 device_found=false
16 for dev in sda sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl; do
17 if sudo blkid /dev/$dev | grep -iq 'TYPE="vfat"'; then
18 device_found=true
19 mkdir -p /mnt/usb
20 sudo mount /dev/$dev /mnt/usb && { echo -e "\e[0;32mUSB drive mounted successfully on /dev/$dev.\e[0m"; break; } || echo -e "\e[0;31mFailed to mount /dev/$dev.\e[0m"
21 fi
22 done
23 if [ "$device_found" = false ]; then
24 echo -e "\e[0;31mNo USB devices found.\e[0m"
25 fi
26 fi
27}
28
29setup_ssh_directory() {
30 export SSH_DIR=/root/.ssh
31 mkdir -p $SSH_DIR
32}
33
34check_file_exists() {
35 if [[ ! -f $1 ]]; then
36 echo -e "\e[0;31mError: File $1 does not exist.\e[0m"
37 exit 1
38 fi
39}
40
41copy_keys() {
42 check_file_exists "/mnt/usb/id_ed25519_agenix.pub"
43 check_file_exists "/mnt/usb/id_ed25519_agenix"
44 cp /mnt/usb/id_ed25519_agenix.pub $SSH_DIR
45 cp /mnt/usb/id_ed25519_agenix $SSH_DIR
46 chmod 600 $SSH_DIR/id_ed25519_{agenix,agenix.pub}
47 echo -e "\e[0;32mKeys copied successfully.\e[0m"
48}
49
50set_keys() {
51 check_file_exists "/mnt/usb/id_ed25519_github.pub"
52 check_file_exists "/mnt/usb/id_ed25519_github"
53 cp /mnt/usb/id_ed25519_github.pub $SSH_DIR/id_ed25519.pub
54 cp /mnt/usb/id_ed25519_github $SSH_DIR/id_ed25519
55 chmod 600 $SSH_DIR/id_ed25519
56 chmod 644 $SSH_DIR/id_ed25519.pub
57}
58
59change_ownership() {
60 chown nixos:wheel $SSH_DIR/id_ed25519{,.pub}
61 chown nixos:wheel $SSH_DIR/id_ed25519_{agenix,agenix.pub}
62}
63
64trap unmount_usb EXIT
65
66setup_ssh_directory
67mount_usb
68copy_keys
69set_keys
70change_ownership
71unmount_usb