aboutsummaryrefslogtreecommitdiff
path: root/system/encryption.nix
blob: 69de31b4503339e7d1bc0a7db80d6c70ad5dca83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{pkgs, ...}: {
  # The encrypted USB is NOT part of boot anymore
  # We do NOT use crypttab or systemd-cryptsetup units at all

  systemd.tmpfiles.rules = [
    "d /mnt/ssh-keys 0755 root root -"
    "d /mnt/nixos-config 0755 root root -"
    "d /mnt/storage 0755 root root -"
    "d /mnt/tools 0755 root root -"
    "d /mnt/isos 0755 root root -"
  ];

  environment.systemPackages = with pkgs; [
    cryptsetup
    # 🔓 Mount + unlock + load SSH key
    (writeShellScriptBin "keys-mount" ''
             set -e
             DEVICE="/dev/disk/by-uuid/d5aa2823-2023-410b-a83e-a4f707db5f7c"
             NAME="ssh-keys"
             MNT="/mnt/ssh-keys"
             MNT_CONFIG="/mnt/nixos-config"
             MNT_STORAGE="/mnt/storage"
             MNT_TOOLS="/mnt/tools"
             echo "🔐 Unlocking encrypted USB..."
             sudo cryptsetup open "$DEVICE" "$NAME"
             echo "📂 Mounting partitions..."
             sudo mount "/dev/mapper/$NAME" "$MNT"
             sudo mount -L nixos-config "$MNT_CONFIG"
             sudo mount -L storage "$MNT_STORAGE"
             sudo mount -L tools "$MNT_TOOLS"
             echo "🔑 Adding SSH keys..."
             ssh-add "$MNT/poseidon"
             ssh-add "$MNT/apollo"
             echo "🔑 Importing GPG key..."
      gpg --import "$MNT/gpg-privkey.asc"
             echo "✅ Done"
    '')
    # 🔒 Clean unmount + lock
    (writeShellScriptBin "keys-umount" ''
            set -e
            MNT="/mnt/ssh-keys"
            NAME="ssh-keys"
            echo "🔑 Removing SSH keys..."
            ssh-add -d "$MNT/poseidon" 2>/dev/null || true
            ssh-add -d "$MNT/apollo" 2>/dev/null || true
      	     echo "🔑 Clearing GPG key..."
      gpgconf --kill gpg-agent
            echo "📤 Unmounting..."
            sudo umount /mnt/nixos-config || true
            sudo umount /mnt/storage || true
            sudo umount /mnt/tools || true
            sudo umount "$MNT" || true
            echo "🔒 Closing encrypted device..."
            sudo cryptsetup close "$NAME" || true
            echo "✅ Done"
    '')
  ];
}