No description
| .forgejo/workflows | ||
| configurations/nixos | ||
| modules | ||
| overlays | ||
| packages | ||
| .envrc | ||
| .gitignore | ||
| .sops.yaml | ||
| flake.lock | ||
| flake.nix | ||
| hosts.json | ||
| justfile | ||
| README.md | ||
| secrets.yaml | ||
Overview
This repository contains a collection of NixOS configurations, modules, and tools designed to make system management more efficient. The goal is to make wiring easy and deployment straight forward.
Features
- 🏗️ Flake-based configuration management
- 🔐 Secrets management with sops-nix
- 🚀 Deployment tools with deploy-rs
- 🔍 Package search with nix-index-database
- 🌐 Remote installation support with nixos-anywhere
Prerequisites
- Nix with flakes enabled
- direnv
- just
Quick Start
-
Enter the development shell: only needed if missing direnv
just dev -
Update dependencies:
just update -
Check the configuration:
just check
Directory Structure
.
├── configurations/ # System configurations
│ └── nixos/ # NixOS system configurations
├── modules/ # Reusable NixOS and flake modules
│ ├── flake/ # Flake-specific modules
│ └── nixos/ # NixOS modules
├── overlays/ # Custom package overlays
├── packages/ # Custom packages
├── flake.nix # Main flake configuration
├── flake.lock # Flake lock file
└── justfile # Common commands
Available Commands
The repository includes several convenient commands via just:
just- List all available commandsjust update- Update nix flake dependenciesjust lint- Lint nix filesjust check- Check nix flakejust dev- Enter development shelljust run- Activate the configuration
Configuration
System Configuration
System configurations are located in configurations/nixos/. Each system should have its own directory with the following structure:
configurations/nixos/<system-name>/
├── default.nix # Main system configuration
├── hardware.nix # Hardware-specific configuration
└── secrets/ # Encrypted secrets (if using sops-nix)
Development
Adding New Modules
- Create a new module in
modules/nixos/ormodules/flake/ - Update the flake.nix to include the new module
- Test the module with
just check
Adding New Packages
- Create a new package in
packages/<name>/default.nix - Update the flake.nix to include the new package
- Test the package with
just check