This repo has my personal configuration for NixOS with a home-manager configuration.
Pretty much copied from yusefnapora's config.
flake.nix
: flake entrypointhome-manager
: home-manager configurations & featuresmodules
: nixos and home-manager modules that could potentially be upstreamednixos
: NixOS host configurations & featuresoverlays
: nixpkgs overlays, including local packages & nixpkgs-unstablepkgs
: local packages that could potentially be upstreamed to nixpkgs
The justfile
defines a few recipies using the just command runner. Run just --list
to list all recipies. The most important are just switch
, which builds the config (for the current hostname by default) and switches to it, just build
which builds but doesn't switch, and just trace
, which prints the stacktrace when things fail to build.
If you don't have just
installed but do have nix, run nix develop
to open a bootstrap shell environment.
- Remove albert as a dependency--it takes a long time to compile when version changes on the arm macbook, and there are simpler alternatives available (rofi/wofi)
- DHCP/DNS High-Availability
- remote builds:
- probably should pin kernel / nixpkgs version
- fix http over vpn?? -- only doesnt work for RAX80 access point...
- investigate ipv6 more--test-ipv6.com still fails
- Set up different vlans for regular clients and services -- keep mastodon traffic from clients
- home switch supports 802.1q vlans, as does proxmox host
- 803.1ad/802.1ax Link Aggregation -- I can "trunk" up to 4 ports on my switch -- should make a "router-bonding" branch
on reboot, nftables fails to come up because it depends on the wireguard interface existing. 2 options for solutions:Have the wireguard systemd unit automatically add/remove nftables rules on start/stop (this is how wireguard usually works with iptables). networking.wireguard.interfaces..{preSetup, postSetup, postShutdown} are list of commands concatenated by\n
--which means I can add/remove the vpn-specific nftables rules using thenft
command. Here's what I would have to do:Have the wireguard service create its own ingress chain instead of referencing the wireguard interface in the original ingress chain.add a rule to ingress_wan chain to accept incoming connections on the vpn port (will need to figure out handles because this accept port should take precedence over the final drop rule)append a rule to inbound_wanudp dport ${addresses.vpn.port} accept
append a rule to inbound chainiifname ${interfaces.vpn.name} jump inbound_vpn
append a rule to the forward chainiifname ${interfaces.vpn.name} oifname { ${interfaces.lan.name}, lo } accept
Add wireguard vpn server (will require nftables configuration)Switch from dnsmasq to BINDSwap DHCP server from dnsmasq to Kealocal DNS is broken because dnsmasq doesn't know about dhcp leases anymore--Will require configuring kea-ddns-server
- set up remote builds (on nix-devbox)
- DHCP/DNS High-Availability