Personal NixOS system configuration using Nix flakes for declarative system and user environment management.
- x1carbon - ThinkPad X1 Carbon laptop configuration
- nixos - NixOS-WSL setup for Windows Subsystem for Linux
- Home Manager - User environment and application management
- Stylix - System-wide theming with Kanagawa color scheme
- Agenix - Encrypted secrets management
- Custom Neovim - Personal Neovim configuration
- Development Shells - Ready-to-use environments for various languages
- Desktop Environment - Sway compositor with Waybar and supporting tools
- Flake Templates - Reusable project templates with development tooling
- GitHub Automation - Scheduled workflow support for repository maintenance tasks
home/- User environment configurations (applications, desktop settings)hosts/- Host-specific system configurationsnixos/- System-level NixOS modulesshells/- Development environment shells (Python, Rust, Deno, etc.)secrets/- Encrypted secrets for API keys and credentialstemplates/- Flake templates for new projects
nrs- Rebuild and switch:sudo nixos-rebuild switch --flake .nrb- Rebuild for next boot:sudo nixos-rebuild boot --flake .nrt- Test configuration:sudo nixos-rebuild test --flake .
nfc- Check flake:nix flake checknfs- Show flake outputs:nix flake shownfu- Update flake inputs:nix flake updatend- Enter development shell:nix develop
# Make configuration changes
nfc # Validate changes
nrt # Test temporarily
nrs # Apply permanentlyIssue monitoris issue-driven: any issue in this repo can opt into monitoring by including a hidden config block in the issue body.- You can run it manually from the Actions tab or with:
gh workflow run issue-monitor.yml -f issue_number=3Example issue-body config:
<!-- issue-monitor-config
{
"name": "Example external tracker",
"watched_issues": [
{ "owner": "NixOS", "repo": "nixpkgs", "number": 343210 },
{ "owner": "NixOS", "repo": "nixpkgs", "number": 405893 }
],
"pr_search_queries": [
"repo:NixOS/nixpkgs is:pr \"swift 6\"",
"repo:NixOS/nixpkgs is:pr author:reckenrode swift"
],
"pr_search_limit": 10
}
-->The workflow keeps a hidden state comment per configured issue and only adds a visible comment when it finds new matching signals.
Enter with nix develop .#<shell-name>:
default- General development with common toolsrust- Rust development with cargo-crosspython- Python development environmentdeno- Deno/TypeScript developmentplaywright- Web testing with Playwrightnix- Nix development tools
Initialize a new project with the default template:
nix flake init -t github:hasundue/dotnixThe default template includes:
- Multi-platform Nix flake setup
- Treefmt for automatic code formatting
- Git pre-commit hooks
- Development shell with common tools
Clear separation between system (nixos/), user (home/), and host-specific
(hosts/) configurations. Desktop configurations are optional imports.
Uses modern Nix flakes with proper input management. All inputs follow nixpkgs for consistency to reduce duplication.
Input Isolation: Flake inputs are handled exclusively in flake.nix and
exposed to modules via overlays. Modules never receive inputs directly,
keeping them pure and reusable. External packages are accessed through pkgs.*
after being added to overlays.
flake.nixdefines inputs and system configurations- Host configurations import base modules and add customizations
- NixOS modules provide system-level configuration
- Home Manager modules configure user environment
- Overlays provide helper functions and custom packages