Configuration files for NixOS + Home Manager.
Allow devices on the WiFi network (192.168.50.x) to access the 3D printer on the Ethernet subnet (10.1.0.x). This enables printer access from phones and other WiFi devices when used with a static route on the router. Changes: - Add bidirectional forwarding rules between wlo1 and enp34s0 - Remove stateful connection restriction for simpler routing - Improve comments to clarify traffic direction Requires router configuration: Route 10.1.0.0/24 via 192.168.50.237 (fuchsia's WiFi IP) |
||
|---|---|---|
| assets | ||
| home-manager/sajenim | ||
| modules | ||
| nixos | ||
| overlays | ||
| pkgs | ||
| .envrc | ||
| .gitignore | ||
| .mcp.json | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| shell.nix | ||
NixOS & Home-Manager Configuration
My NixOS and Home-Manager config files. Based upon Misterio77's starter configs.
This repo is often neglected and doesn't necesarrily follow best practices.
I recommend only using this repo for inspiration and instead use this boilerplate
Preview
Features
- Opt-in persistance with ephermeral btrfs.
- Secrets managed with agenix and rekeyed with yubikey.
- Standalone nixvim configuration for neovim.
- Custom haskell packages for xmonad & xmobar.
- Declarative minecraft server with nix-minecraft.
- Borgbackup of mutable service/container data.
- Media server with typical *arr stack.
- FQDN with private DNS for all internal services.
- Crowdsecurity for all public services.
Installation
# Prepare disks, create an EFI System partition and Linux Filesystem partition
fdisk /dev/nvme0n1
# Create our filesystems
mkfs.fat -F32 -n ESP /dev/nvme0n1p1
mkfs.btrfs -L ${hostname} /dev/nvme0n1p2
# Create our subvolumes
mount /dev/nvme0n1p2 /mnt/btrfs
btrfs subvolume create /mnt/btrfs/{root,nix,persist,swap}
umount /mnt/btrfs
# Prepare for installation
mount -o compress=zstd,subvol={root,nix,persist,swap} /dev/nvme0n1p2 /mnt/{nix,persist,swap}
mount /dev/nvme0n1p1 /mnt/boot
# Clone the configuration files and enter repo
git clone https://github.com/sajenim/dotfiles.nix.git && cd dotfiles.nix
# Install our system configuration
nixos-install --flake .#hostname
FAQ
- What is nix?
Nix is a tool that takes a unique approach to package management and system configuration. - Nix benefits
Nix is reproducible, declarative and reliable. - Why flakes?
Flakes allow you to specify your code's dependencies (e.g. remote Git repositories) in a declarative way, simply by listing them inside a flake.nix file.
