My NixOS configuration
Find a file
Felix Schröter be9f968c51
All checks were successful
Test / tests (push) Successful in 12m39s
chore(flake): update inputs
2025-01-21 01:12:50 +01:00
.forgejo/workflows build(forgejo-ci): disable home-pc build for now 2025-01-19 17:25:53 +01:00
desktop chore: upgrade to NixOS 24.11 2024-12-08 16:09:48 +01:00
hardware style: reformat with nixfmt-rfc-style 2024-05-26 17:37:08 +02:00
home style: reformat & improve some files 2025-01-19 14:58:36 +01:00
hosts feat(home-server): add forgejo 2025-01-17 15:25:05 +01:00
lib style: reformat with nixfmt-rfc-style 2024-05-26 17:37:08 +02:00
modules style: reformat with nixfmt-rfc-style 2024-05-26 17:37:08 +02:00
pkgs style: reformat with nixfmt-rfc-style 2024-05-26 17:37:08 +02:00
scripts feat(scripts): remove swap subvolume & swapfile from setup-partitions 2023-04-11 17:18:00 +02:00
secrets feat(home-server): add forgejo runner 2025-01-17 15:25:05 +01:00
services style: reformat & improve some files 2025-01-19 14:58:36 +01:00
system fix: fix git permissions for system.autoUpgrade 2025-01-19 12:36:37 +01:00
templates style: reformat with nixfmt-rfc-style 2024-05-26 17:37:08 +02:00
virtualisation chore: upgrade to NixOS 24.11 2024-12-08 16:09:48 +01:00
.editorconfig style: add .editorconfig 2020-03-21 16:54:32 +01:00
.env.example chore: add restic variables to .env.example 2022-05-12 11:45:10 +02:00
.envrc chore: add restic secrets to .env 2022-05-09 12:26:12 +02:00
.gitignore chore: extend .gitignore 2022-08-08 23:00:01 +02:00
flake.lock chore(flake): update inputs 2025-01-21 01:12:50 +01:00
flake.nix chore: upgrade to NixOS 24.11 2024-12-08 16:09:48 +01:00
LICENSE add LICENSE 2020-07-03 08:48:51 +00:00
overlays.nix chore(flake): remove usage of flakehub again 2024-05-26 12:10:20 +02:00
README.md docs(README): add agenix instructions 2022-10-04 11:10:43 +02:00

felschr's NixOS configuration

Installation

Clone the configuration into /etc/nixos.

On a new machine run:

scripts/setup-partitions

Then move the resulting /mnt/etc/nixos/hardware-configuration.nix to ./hardware/<config>.nix. Update the configuration according to the script output, if necessary. Btrfs mount options likely need to be added, for example. Copy the configuration from /etc/nixos to /mnt/etc/nixos.

Reference this hardware config in a nixosConfigurations.<config> section in flake.nix.

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 <config> matches outputs.nixosConfigurations.<config> in flake.nix:

nixos-install --flake '/mnt/etc/nixos#<config>'

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#<config>' --target-host user@hostname --use-remote-sudo