My current NixOS (and constant changing) configuration
- Multiple NixOS configurations, including laptop and desktop
- Install and partitioning commands via just
- Declarative partitioning with disko.
- Flexible Home Manager with feature flags
- Modular configuration
- Wayland/X11 Setups
- Multiple fully featured desktop environments (KDE Plasma 5/6 and XFCE)
- Live image ISO build with Nvidia drivers, experimental nix features already enabled, unfree software usage, and some nice options for cli and neovim
- Declarative themes with theme module and stylix
- Deployment of secrets using agenix (with yubikey) and evaluation secrets with git-crypt
- Includes pre-commit scripts to make sure flake is correctly setup and ready to be published to a git repository
- Mistero77’s nix-config and nix starter configs - Makes up a large majority of the entire config, primary template used when making the config
- Hlissner’s dotfiles - Security hardening configs
- Baitinq’s nixos-config - Partitioning scripts
- Theopn’s and yutkat’s dotfiles - Wezterm settings
- Getchoo’s flake - Nvidia settings
- sagikazarmark’s nix-config - Structure of host configurations
- archer-65’s nix-dotfiles - Structure of host configurations
- lgug2z Handling Secrets in NixOS Blogpost - Git-crypt implementation for secrets required during flake evaluation
- Lillian-Violet’s NixOS-Configuration - some ISO/live-image settings
- EmergentMind’s nix-config - just file integration and helpful secret tips
- x0ba’s dotfiles - Agenix NixOS/Home-Manager setup with Yubikey-support
- Kranzes’ nix-config - Agenix formatting
- Babeuh’s nix-config - Yubikey secrets setup with age (most importantly, pcsd service startup during boot process)
- sickle-phin’s dots-nix - Extra Nvidia environment variables
Here’s an overview of the repo’s file structure (Generated with eza --icons=never --tree
):
. ├── documentation/ ├── home/ │ ├── common/ │ ├── lib/ │ ├── nixos/ │ │ ├── features/ │ │ └── image.nix │ └── novaviper/ │ ├── dotfiles/ │ ├── features/ │ ├── global/ │ ├── ryzennova.nix │ └── yoganova.nix ├── hosts/ │ ├── common/ │ │ ├── core/ │ │ ├── iso/ │ │ ├── optional/ │ │ ├── users/ │ │ │ ├── nixos/ │ │ │ └── novaviper/ │ ├── live-image/ │ ├── ryzennova/ │ └── yoganova/ │ ├── hardware/ │ │ ├── default.nix │ │ ├── disks.nix │ │ └── hardware-configuration.nix │ └── default.nix ├── modules/ │ ├── home-manager/ │ └── nixos/ ├── overlays/ ├── pkgs/ ├── scripts/ ├── secrets/ ├── flake.lock ├── flake.nix ├── justfile ├── README.org └── shell.nix
flake.nix
: Entrypoint for host and home configurations. Also exposes a devshell for boostrapping the system (nix develop
ornix shell
).hosts
: NixOS Configurations, accessible vianixos-rebuild --flake
.common
: Shared configurations consumed by the machine-specific ones.core
: Configurations applied across all hostsiso
: Configurations applied ONLY to live-image/VM builds, trimmed down version ofcore
optional
: Opt-in configurations/feature flags that one or more host can useusers
: Configurations for each system on the machines
ryzennova
: Primary PC - 32GB RAM, Ryzen 5600G, RTX 2060 6GB | KDE Plasma 6yoganova
: Lenovo Yoga 7i 16IRL8 (Type 82YN) - 8GB RAM, Intel i5 1335U | KDE Plasma 6live-image
: ISO configuration | Nvidia drivers included | KDE Plasma 6
home
: My Home-manager configuration, accessible viahome-manager --flake
when standalone, ornixos-rebuild --flake
when NixOS module- Each directory here is a “feature” each HM configuration can toggle, thus customizing each machine with configurations for the specific user
modules
: Custom modules that aren’t available in nixpkgs. Can be NixOS or Home-Manager modules (or both!)overlay
: Patches and version overrides for some packages. Accessible vianix build
.pkgs
: Custom nix packages defined similarly to nixpkg ones. Also accessible vianix build
. You can compose these into your own configuration by using my flake’s overlay, or consume them through NUR.secrets
: All user/host age secrets are located herescripts
: Bash/Posix scripts needed for variousprecommit
andjust
commandsjustfile
: Command recipe file forjust
, contains various helpful commands for the flakeshell.nix
: Declaration of nix-shell, used fornix-shell
andnix develop
For installation, check out the installation guide located under documentation/installation.org! Check out documentation/tips.org for some tips and important information regarding how the entire flake works.
Main user relevant apps
- kde plasma 6
- doom emacs
- zsh + powerlevel10k
- vivaldi
- keepassxc/pass
- gpg + ssh-agent + yubikey
- tailscale
- kdeconnect
- krita
- libreoffice
- bat
- jellyfin (feishin)
- konsole+tmux
- and quite a bit more…
Nix stuff
- home-manager
- NixOS and nix, of course
I designed my NixOS flake to be modular and customizable; so feel free to change it up and use it in your own setups!