My NixOS configuration
  • Nix 86.1%
  • Lua 9.5%
  • Nushell 3%
  • Shell 1.4%
Find a file
Felix Schröter ff92aece33
All checks were successful
Test / tests (push) Successful in 4m51s
fix(dns): replace shut down Mullvad public DNS with Quad9
Mullvad is retiring its public encrypted DNS servers on 2026-11-02 and
points users at Quad9 instead.

Use the no-threat-blocking variant (dns10.quad9.net / 9.9.9.10) to keep
the previous unfiltered semantics: AdGuard Home already applies its own
blocklists, and upstream blocking only hides the cause of a block from
the query log.
2026-10-29 19:08:33 +01:00
.forgejo/workflows ci: build homeConfigurations activation packages 2026-08-23 17:22:41 +02:00
desktop fix(flake): adapt home-assistant & openwrt configs to updated inputs 2026-08-26 15:42:15 +02:00
hardware feat(planck): add udev rules for rmk / probe-rs flashing 2026-10-28 14:46:15 +01:00
home feat(shell): expose the gh token as GITHUB_TOKEN 2026-10-29 16:11:11 +01:00
hosts feat(home-server): enable the hardware watchdog 2026-10-29 14:03:42 +01:00
lib fix(flake): adapt home-assistant & openwrt configs to updated inputs 2026-08-26 15:42:15 +02:00
modules feat(systemdNotify): limit to one invocation every 15 minutes per service 2025-09-23 22:18:04 +02:00
overlays fix(overlays): use stdenv.hostPlatform.system instead of deprecated pkgs.system 2026-08-21 12:35:14 +02:00
pkgs chore: remove custom brlaser 2025-05-18 19:42:55 +02:00
scripts fix(home): retry and skip locked browser dbs in site data sync 2026-10-18 04:24:59 +02:00
secrets chore(firefox): dedupe site data exceptions 2026-10-16 17:05:44 +02:00
services fix(dns): replace shut down Mullvad public DNS with Quad9 2026-10-29 19:08:33 +01:00
system fix(dns): replace shut down Mullvad public DNS with Quad9 2026-10-29 19:08:33 +01:00
templates style: reformat with nixfmt-rfc-style 2024-05-26 17:37:08 +02:00
virtualisation feat(libvirt): enable spice-vdagentd for clipboard sharing 2026-08-23 17:52:31 +02: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: ignore result-* build symlinks 2026-10-20 00:12:53 +02:00
AGENTS.md feat(deploy): enable unattended deployments to home-server 2026-10-15 19:17:22 +02:00
flake.lock chore(flake): update inputs 2026-10-28 14:47:39 +01:00
flake.nix feat(home): switch agent tools to llm-agents packages 2026-10-15 11:04:56 +02:00
LICENSE add LICENSE 2020-07-03 08:48:51 +00:00
README.md docs(readme): rewrite installation instructions for disko-install 2026-08-23 17:22:34 +02:00

felschr's NixOS configuration

Installation

  1. Create config for new host in hosts/<host>/ 1.1. the hosts/<host>/hardware.nix will be generated in the following step
  2. Install NixOS via disko-install:
    sudo nix --experimental-features 'nix-command flakes' \
      run 'git.felschr.com/nixos-config#install' -- \
      --flake .#<host> \
      --disk <disk-name> <disk-device>
    
    1.1. When asked enter the LUKS passphrase 1.1. When asked enter the user password

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