fix: Fix more installation errors and potential security flaws

This commit is contained in:
Tera << 8 2025-05-05 16:28:37 -04:00
parent 86c41180b8
commit dd929d89d3
Signed by: imterah
GPG key ID: 8FA7DD57BA6CEA37
6 changed files with 29 additions and 15 deletions

View file

@ -1,7 +1,9 @@
keys:
- &primkey age199lxhl3xjuf0xxgskxa3kdz89atnt6689g0pqr6kup4kvqe49vmsq63t35
- &userkey age199lxhl3xjuf0xxgskxa3kdz89atnt6689g0pqr6kup4kvqe49vmsq63t35
- &hostkey age1g2qdzlgqsnuz2mc2cwlt5up3d9h8krkquhryt76e2j47dzgz498sudy45e
creation_rules:
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
key_groups:
- age:
- *primkey
- *userkey
- *hostkey

View file

@ -8,9 +8,11 @@ This is a work-in-progress and currently DOES NOT WORK. Please check back later.
## Setup
### Bootstrapping a New Device
### Setting up Sops
This guide assumes you have a somewhat sane sops setup.
TODO.
### Bootstrapping a New Device
1. First, boot the NixOS live environment (minimal ISO is recommended).
2. Then, get the harddrive ID using `lsblk` or `fdisk -l`:
@ -46,5 +48,11 @@ This guide assumes you have a somewhat sane sops setup.
4. Add the host to `flake.nix`.
5. Modify the disko configuration for our host to use the correct disk ID that we found earlier.
6. Make any other additional modifications if needed.
7. Copy/clone the configuration over to the host to install.
8. Run `sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount -f "$PWD#hostname"` to prepare the disk, replacing `hostname` with the host you want to switch to (ex. `andromeda`).
### Installing the Configuration
1. Copy/clone the configuration over to the host to install.
2. Copy the sops key data to the host you are installing on (sops `key.txt` and `ssh_host_ed25519_key` to `/var/lib/sops-nix/`)
3. Run `sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount -f "$PWD#hostname"` to prepare the disk, replacing `hostname` with the host you want to install (ex. `andromeda`).
4. Before installing, prepare sops inside the mounted filesystem: `sudo mkdir -p /mnt/persist/var/lib/sops-nix/; sudo cp -r /var/lib/sops-nix/ /mnt/persist/var/lib/sops-nix/`
5. Run `sudo nixos-install --flake "$PWD#hostname"` to install the OS, replacing `hostname` with the host you want to install (ex. `andromeda`).

View file

@ -1 +0,0 @@

View file

@ -30,11 +30,10 @@
extraGroups = [
"wheel"
"networkmanager"
"docker"
];
openssh.authorizedKeys.keys = [
(builtins.readFile ../../secrets/id_user.pub)
(builtins.readFile ../../data/id_user.pub)
];
};
@ -45,10 +44,13 @@
boot.supportedFilesystems = [];
# Services
services.docker.enable = true;
virtualisation.docker = {
enable = true;
storageDriver = "btrfs";
};
environment.systemPackages = builtins.attrValues {
inherit (pkgs.unstable) htop btop micro nano;
inherit (pkgs) htop btop micro nano;
};
system.stateVersion = "24.11";

View file

@ -35,6 +35,7 @@
"/var/lib/nixos"
"/var/lib/docker"
"/var/lib/systemd/coredump"
"/var/lib/sops-nix"
"/etc/nixos"
"/etc/NetworkManager"
];
@ -42,7 +43,6 @@
"/etc/machine-id"
"/etc/ssh/ssh_host_ed25519_key"
"/etc/ssh/ssh_host_ed25519_key.pub"
"/var/lib/sops-nix/key.txt"
];
};
}

View file

@ -1,4 +1,4 @@
{inputs, ...}; let
{inputs, ...}: let
secretspath = builtins.toString inputs.nix-secrets;
in
{
@ -9,11 +9,14 @@ in
sops = {
defaultSopsFile = "${secretspath}/secrets.yaml";
age = {
# I'd prefer different OpenSSH keys for different hosts so I'm not 100% screwed if one of my devices get compromised.
# Therefore, we set a custom path for the sops key.
sshKeyPaths = ["/var/lib/sops-nix/ssh_host_ed25519_key"];
keyFile = "/var/lib/sops-nix/key.txt";
generateKey = false;
};
secrets = {
tera_passwd = {
tera_password = {
neededForUsers = true;
};
};