My NixOS configuration
- Nix 84.7%
- Lua 11.3%
- Nushell 2.3%
- Shell 1.7%
|
Some checks failed
Test / tests (push) Failing after 5m11s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| desktop | ||
| hardware | ||
| home | ||
| hosts | ||
| lib | ||
| modules | ||
| overlays | ||
| pkgs | ||
| scripts | ||
| secrets | ||
| services | ||
| system | ||
| templates | ||
| virtualisation | ||
| .editorconfig | ||
| .env.example | ||
| .envrc | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
felschr's NixOS configuration
Installation
- Create config for new host in
hosts/<host>/1.1. thehosts/<host>/hardware.nixwill be generated in the following step - Install NixOS via
disko-install:
1.1. When asked enter the LUKS passphrase 1.1. When asked enter the user passwordsudo nix --experimental-features 'nix-command flakes' \ run 'git.felschr.com/nixos-config#install' -- \ --flake .#<host> \ --disk <disk-name> <disk-device>
Now set up a device key that will be used by agenix.
Create a new key and re-encrypt the secrets on an existing device & pull the changes.
To create a new key run:
mkdir -p /mnt/etc/secrets/initrd
ssh-keygen -t ed25519 -N "" -f /mnt/etc/secrets/initrd/ssh_host_ed25519_key
You will likely need to temporarily set age.identityPaths for the installation to succeed:
age.identityPaths = "/etc/secrets/initrd/ssh_host_ed25519_key";
To install run the following command where <host> matches outputs.nixosConfigurations.<host> in flake.nix:
nixos-install --flake '/mnt/etc/nixos#<host>'
After the installation finished, set a password for the user:
passwd <user>
Updating
Update all flake inputs:
nix flake update
Update a specific flake input:
nix flake lock --update-input <input>
Rebuilding the system
Rebuild the system:
sudo nixos-rebuild switch
Rebuild the system for a remote machine:
sudo nixos-rebuild switch --flake '/etc/nixos#<host>' --target-host user@hostname --use-remote-sudo