ndots¶
A declarative NixOS + nix-darwin configuration built with flakes, modularized via Flake-Parts, and auto-wired with nix-wire .
Utilities and scripts from utils .
Fully CLI-based - all hosts are managed via SSH + Tailscale. No GUI required for administration.
At a Glance¶
| Platforms | NixOS (Linux), nix-darwin (macOS) |
| Build System | Flakes + Flake-Parts + nix-wire |
| Disk Management | disko (declarative partitioning) |
| Secrets | sops-nix (age encryption) |
| Networking | Tailscale mesh VPN |
| Monitoring | Beszel hub + agents |
| Deployment | just deploy (auto-detects NixOS vs Darwin) |
| Theming | Stylix (kanagawa-dragon, cross-platform) |
Hosts¶
| Host | CPU | RAM | Role |
|---|---|---|---|
| mach | Intel i7-10510U (4c/8t) | 24 GB | Personal laptop |
| dsd | Intel i9-12900KS (16c/24t) | 64 GB | Work desktop |
| semi | Intel i9-14900K (24c/32t) | 128 GB | Semi-personal |
| obox | Ampere Neoverse-N1 (4c/4t) | 24 GB | Oracle Cloud VPS |
| jp-mbp | Apple M4 | - | MacBook Pro |
See Hosts for per-host details.
Services¶
- Beszel - system monitoring hub + agents
- Stirling PDF - self-hosted PDF tools
- FileBrowser Quantum - web file manager
- Caddy - reverse proxy
- Syncthing - cross-device file sync
- Tailscale - mesh VPN
- Docker & Podman - container runtimes
Modules¶
The flake exposes reusable modules you can import into your own configuration:
- NixOS Modules - system services, hardware, window manager
- Home Modules - shell, editor, AI, browser, terminal, theming
- Darwin Modules - macOS system settings, window managers, Homebrew
- Flake Modules - nix settings, binary caches
Packages¶
Custom packages exposed via the flake and overlays:
- Custom Packages -
copy,aria2tui,sklauncher,stremio-enhanced, etc.
Quick Start¶
# Deploy to current host
just deploy
# Deploy to a remote host
just deploy obox
# Build ISO installer
just iso
# Serve docs locally
just doc
See Deployment for full details.
Using This Flake Externally¶
Import modules into your own flake
Add this repo as a flake input and import any module:
{
inputs.ndots.url = "github:semi710/ndots";
outputs = { self, nixpkgs, ndots, ... }: {
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
ndots.nixosModules.tailscale
ndots.nixosModules.filebrowser
# ... see modules docs for the full list
];
};
};
}
You can also fetch disko schemas and custom packages: