My current NixOS (and constant changing) configuration
Note: There are upcoming changes being actively made so documentation will change and may not necessarily be update to date!
- Multiple NixOS configurations, including laptop and desktop
- Install and partitioning commands via just
- Declarative partitioning with disko.
- Flexible NixOS and Home Manager configs through importable feature flags
- Automatically append users to multiple hosts along with specific user settings for each user with a primary user and extra users
- Modular configuration, easily add new users and machines
- Wayland/X11 Setups
- Multiple fully featured desktop environments (KDE Plasma 6)
- Live image ISO build with Nvidia drivers, experimental nix features already enabled, unfree software usage, and some nice options for cli
- Declarative themes with stylix
- Deployment of secrets using sops-nix (with yubikey) via a private repository called
nix-secrets
- Includes pre-commit scripts to make sure flake is correctly setup and ready for publication to a git repository
- Remote building with desktop configurations
- Built-in development shell via
direnv
- Runarsf's dotfiles and imatpot's dotfiles - Custom library and inspiration for more traditional flake layout
- Llakala's nixos config - Additional libraries for home-manager cli integration and inspiration for integrating more HM stuff into the NixOS-specific configs
- Mistero77's nix-config and nix starter configs - Original inspiration for flake, opinionated settings, overlay/devshell setup, sops-nix setup, and better home-manager/nixos split layout
- 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 and nix-secrets-reference - just file integration and helpful secret tips and nix-secrets + sops-nix deployment inspiration
- sickle-phin's dots-nix - Extra Nvidia environment variables
Here's an overview of the repository's file structure (Generated with eza --icons=never --tree
):
./
├── checks/
├── core/
│ ├── extras/
│ ├── home-manager/
│ ├── stylix/
│ └── ...
├── extra/
│ ├── assets/
│ ├── documentation/
│ ├── homeModules/
│ ├── nixosModules/
│ └── scripts/
├── features/
│ ├── home/
│ │ ├── apps/
│ │ │ ├── backup/
│ │ │ ├── browser/
│ │ │ │ ├── firefox/
│ │ │ │ ├── floorp/
│ │ │ │ ├── vivaldi/
│ │ │ │ └── zen/
│ │ │ ├── discord/
│ │ │ ├── editor/
│ │ │ │ ├── doom-emacs/
│ │ │ │ └── neovim/
│ │ │ ├── music-player/
│ │ │ └── terminal/
│ │ │ ├── alacritty/
│ │ │ ├── ghostty/
│ │ │ ├── kitty/
│ │ │ ├── konsole/
│ │ │ ├── rio/
│ │ │ └── wezterm/
│ │ ├── cli/
│ │ │ ├── deco/
│ │ │ │ ├── cava/
│ │ │ │ └── fastfetch/
│ │ │ ├── dev/
│ │ │ ├── history/
│ │ │ │ ├── atuin/
│ │ │ │ └── mcfly/
│ │ │ ├── misc/
│ │ │ │ ├── pass/
│ │ │ │ └── topgrade/
│ │ │ ├── multiplexer/
│ │ │ │ ├── tmux/
│ │ │ │ └── zellij/
│ │ │ ├── prompt/
│ │ │ │ └── oh-my-posh/
│ │ │ ├── shell/
│ │ │ │ ├── fish/
│ │ │ │ └── zsh/
│ │ │ └── utilities/
│ │ │ ├── git/
│ │ │ │ └── ...
│ │ │ └── ...
│ │ └── services/
│ │ └── syncthing/
│ └── system/
│ ├── apps/
│ │ ├── android-vm/
│ │ ├── games/
│ │ ├── libvirt/
│ │ └── obs/
│ ├── desktop/
│ │ └── plasma6/
│ ├── hardware/
│ │ ├── bluetooth/
│ │ ├── hard-accel/
│ │ ├── qmk/
│ │ ├── rgb/
│ │ └── yubikey/
│ ├── lang/
│ │ └── us-english/
│ ├── services/
│ │ ├── gps/
│ │ ├── localsend/
│ │ ├── packaging/
│ │ ├── pretty-boot/
│ │ ├── printing/
│ │ ├── sunshine-server/
│ │ ├── tailscale/
│ │ └── vr/
│ │ ├── alvr/
│ │ └── wivrn/
│ └── theme/
│ └── dracula/
├── hosts/
│ ├── installer/
│ │ ├── config/
│ │ ├── features.nix
│ │ ├── hardware-configuration.nix
│ │ └── hostVars.nix
│ ├── ryzennova/
│ │ ├── config/
│ │ │ ├── disko.nix
│ │ │ └── ...
│ │ ├── features.nix
│ │ ├── hardware-configuration.nix
│ │ ├── hostVars.nix
│ │ └── ssh_host_ed25519_key.pub
│ └── yoganova/
│ ├── config/
│ │ ├── disko.nix
│ │ └── ...
│ ├── features.nix
│ ├── hardware-configuration.nix
│ ├── hostVars.nix
│ └── ssh_host_ed25519_key.pub
├── myLib/
├── overlays/
├── pkgs/
│ └── common/
├── users/
│ ├── nixos/
│ │ ├── config/
│ │ ├── home.nix
│ │ └── system.nix
│ └── novaviper/
│ ├── config/
│ ├── dotfiles/
│ ├── hosts/
│ │ ├── base.nix
│ │ ├── ryzennova.nix
│ │ └── yoganova.nix
│ ├── home.nix
│ ├── ssh.pub
│ └── system.nix
├── flake.lock
├── flake.nix
├── justfile
├── LICENSE
├── README.md
├── shell.nix
└── statix.toml
flake.nix
: Entrypoint for host and home configurations. Also exposes a devshell for boostrapping the system (nix develop
ornix shell
).myLib
: Custom library functions for various parts of the flake, imported into HomeManager and NixOShosts
: Configurations for each machine, accessible vianixos-rebuild --flake
.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 6installer
: ISO configuration | Nvidia drivers included | KDE Plasma 6
users
: Configurations for each user, includes both host OS specific (NixOS or Darwin) and Home Manager configurations. Built together with thehosts
configurations vianixos-rebuild --flake
(or the darwin equivalent)extra
: Extra stuff like custom modules and flake documentationnixosModules
: Custom NixOS modules used throughout the flake (and some being upstreamable)homeModules
: Custom Home-Manager modules used throughout the flake (and some being upstreamable)scripts
: Bash/Posix scripts needed for variousprecommit
andjust
commandsassets
: Repository assets like images and videos
core
: Shared configurations applied to all hosts and usersfeatures
: Opt-in configurations/feature flags that one or more users/hosts can usehome
: NixOS specific feature flags (some features contain some shared Home-manager options that get applied to all users)system
: Home-Manager specific feature flags
checks
: Flake evaluation tools for ensuring the flake is properly formatted and builds successfully. Also contains git-hooks to ensure the repository is properly setup. Accessible vianix flake check
overlays
: Patches and version overrides for some packages, applied to all systems and even the devshell. Accessible vianix build
.pkgs
: Custom nix packages defined similarly to the nixpkgs ones. Also accessible vianix build
. You can compose these into your own configuration by using my flake’s overlay, or consume them through NUR.justfile
: Command recipe file forjust
, contains various helpful commands for the flakeshell.nix
: Declaration of nix-shell, used fornix-shell
andnix develop
. Used for bootstrapping the system
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 + atuin + fzf + oh-my-posh
- floorp
- keepassxc
- vesktop
- sops-nix + gpg + ssh-agent + yubikey
- tailscale
- kdeconnect
- krita
- libreoffice
- kitty + tmux
- prusa-slicer
- 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!