This is my NixOS config for both of my PCs and my home server. It uses flakes and is highly dependent on flake-utils-plus, home-manager, and devshell.
- hosts - Stores all machine-specific information.
- modules - Services, programs, Flatpak, and container configuration.
- home - All the Home Manager configs.
- pkgs - Custom/patched packages pulled in as an overlay.
- emacs - Emacs config and scripts for setting up Doom Emacs.
- Roshar - Desktop with an Nvidia GPU.
- Mishim - Laptop with AMD integrated graphics.
- Salas - Home server with some containers and native services.
This essentially acts as a custom interface for this project and a method for easy machine bootstrapping. Both commands run extra formatting and linting after each rebuild. More info can be found in devshell.toml.
Inside of the modules folder you'll find services (e.g. nextcloud, audiobookshelf, gotosocial) I run on my homelab, these all use caddy as a reverse proxy. (most can probably just be copied into another config with some modification)
I recommend you create your own config, as this one is tailored to my needs and may include non-standard configurations. You'll gain a deeper understanding of both Nix and Linux if you build your own config. It's also fun, so that's a plus!
First, you'll need to create a new host config. You can either copy one from this repo or use your own. default.nix
is for any config unique to the current host (e.g., thermald for a laptop). Ensure that you use your own hardware-config.nix
, and that hardware-config.nix
is imported in default.nix
.
Once you've done that, add your new host to the flake.nix
and run:
nix develop
rebuild