Personal NixOS + Home Manager + Neovim configuration for WSL and desktop hosts.
- NixOS Flake (Nixpkgs
nixos-25.11+nixos-unstableoverlay) - Home Manager (release
25.11) - NixOS WSL module (
nix-community/nixos-wslrelease25.11) - Neovim config in Lua (tested with Neovim
0.11.5) - Nix apps for CI helpers (nixfmt, statix, deadnix, stylua, actionlint, yamllint)
- Nix with flakes enabled
- Linux
x86_64(flake systems list isx86_64-linuxonly) - For WSL hosts: WSL-enabled environment
- For desktop host profile: ThinkPad E14 Gen 2 (Intel i5-1135G7) specific modules are present
nixos/— NixOS flake, system modules, and Home Manager modulesnvim/— Neovim configuration in Lua.github/workflows/— CI workflows that call Nix appsscripts/— helper shell scriptsopencode/— OpenCode configuration
nixos/flake.nix— flake entrypoint and host definitionsnixos/system-modules/— system-level modules (roles, hardware, desktop, WSL)nixos/home-modules/— Home Manager modules (shell, tools, apps, theming)nixos/apps/— CI helpers and format/lint appsnixos/roles.nix— role definitions and helpers
nvim/init.lua— entrypointnvim/lua/core/— options, keymaps, OS/WSL handling, lazy setupnvim/lua/modules/— plugin group definitions
Defined in nixos/flake.nix:
wsl— base + interactive + dev + wsldmsdesktop— base + interactive + dev + desktop + thinkpadE14 + dms + gaminggnomedesktop— base + interactive + dev + desktop + thinkpadE14 + gnome + gaming
- Hosts are composed by role lists (
nixos/roles.nix) and role helpers (hasRole,mkIfRole,guardRole). - System modules and Home Manager modules are auto-imported from their directories via
nixos/lib/import-modules.nix. nixos-wslis conditionally imported for hosts that carry thewslrole.nixos-unstableis exposed through an overlay aspkgs.unstable.
sudo nixos-rebuild switch --flake ./nixos#<host>Examples:
sudo nixos-rebuild switch --flake ./nixos#wslsudo nixos-rebuild switch --flake ./nixos#dmsdesktopsudo nixos-rebuild switch --flake ./nixos#gnomedesktop
nix run ./nixos#ciPer-domain checks:
nix run ./nixos#nixos-cinix run ./nixos#nvim-cinix run ./nixos#workflows-ci
nix run ./nixos#nixos-fmtnix run ./nixos#nixos-lintnix run ./nixos#nvim-fmtnix run ./nixos#workflows-lint
scripts/create-ssh-keys.sh— interactive GitHub SSH key generatorscripts/git-auto-commit-opencode.sh— OpenCode-based conventional commit helper
The GitHub workflow (.github/workflows/ci.yml) runs per-path checks:
nixos-ciwhennixos/**changesnvim-ciwhennvim/**changesworkflows-ciwhen.github/workflows/**changes
- State versions:
systemStateandhomeStateare25.11innixos/lib/const.nix. - User home and dotfiles directory are defined in
nixos/lib/const.nix(/home/cristian/dotfiles).
See LICENSE.