- π Overview
- π Project Structure
- π Home Manager Profile Graph
- πΊοΈ Network Topology
- βοΈFlake Inputs
- π Secrets Management
- π Related Repositories
This repository contains primarily nix configurations, leveraging Nix Flakes, Home Manager, and system-specific modules (NixOS, nix-darwin, nix-on-droid) to achieve a purely declarative, reproducible, and consistent environment across multiple OSes on multiple hosts for multiple users:
- π macOS (via
nix-darwin) - π€ Android (via
nix-on-droid) - π§ *nix (NixOS) (including WSL via
NixOS-WSL)
The repository is organized using flake-parts for better modularity.
βββ OS-nixCfg/
βββ .editorconfig
βββ .envrc
βββ .gitattributes
βββ .gitignore
βββ .mcp.json
βββ CLAUDE.md
βββ CODEOWNERS
βββ flake.lock
βββ flake.nix
βββ LICENSE
βββ README.md
βββ SECURITY.md
βββ shell.nix
βββ .github/
βΒ Β βββ FUNDING.yml
βΒ Β βββ workflows/
βββ assets/
βΒ Β βββ home_graph.png
βΒ Β βββ qezta.gif
βΒ Β βββ qezta.png
βββ common/
βΒ Β βββ all/
βΒ Β βββ home/
βΒ Β βββ hosts/
βββ flake/
βΒ Β βββ actions/
βΒ Β βββ checks.nix
βΒ Β βββ default.nix
βΒ Β βββ devshells.nix
βΒ Β βββ formatters.nix
βΒ Β βββ mkHost.nix
βββ home/
β βββ default.nix
β βββ ai/
βΒ Β βββ comms/
βΒ Β βββ dev/
βΒ Β βββ gui/
βΒ Β βββ keyboard/
βΒ Β βββ media/
βΒ Β βββ tools/
βΒ Β βββ tty/
βΒ Β βββ web/
βββ hosts/
βΒ Β βββ default.nix
βΒ Β βββ darwin/
βΒ Β βββ droid/
βΒ Β βββ nixos/
βββ lib/
βΒ Β βββ custom.nix
βΒ Β βββ default.nix
βββ modules/
βΒ Β βββ default.nix
βΒ Β βββ home/
βΒ Β βββ hosts/
βββ overlays/
βΒ Β βββ default.nix
βΒ Β βββ nixpkgs.nix
βββ pkgs/
β βββ custom/
β βββ darwin/
βΒ Β βββ pypi/
βββ templates/
βΒ Β βββ default.nix
βΒ Β βββ vanilla/
βββ utils/
βββ home_rebuild.sh
βββ hosts_rebuild.sh
This dependency graph visualizes the dependencies of the Home-Manager profile configuration:
The network topology visualizations are automatically generated using nix-topology and provide a comprehensive view of the infrastructure setup across all hosts and networks.
Complete view of all nodes, networks, and their interconnections:
Focused visualization of network segments and connectivity:
Note: These topology diagrams are automatically built and updated via GitHub Actions whenever topology configurations.
This flake relies on several external inputs to manage dependencies and configurations:
- Core & System:
nixpkgs: The core Nix package set (trackingnixpkgs-unstable).nixpkgs-master: Tracks the master branch of Nixpkgs (used occasionally).systems: Provides standard system identifiers (e.g.,x86_64-darwin).
- Flake Helpers:
flake-parts: Used for structuring the flake outputs with modularity.flake-utils: General utilities for flakes.devshell: Provides convenient development shells.pre-commit-hooks: Manages Git hooks for code quality and formatting.treefmt-nix: For code formatting integration.
- OS Integration:
home-manager: Manages user-level configurations and dotfiles.nix-darwin: Enables declarative macOS system configuration.nix-homebrew: For Homebrew package integration withinnix-darwin.nixos-wsl: Provides modules for running NixOS on WSL.nix-on-droid: Enables declarative Android configuration via Termux fork.
- Secrets Management:
agenix: Base library for managing secrets declaratively via age encryption.ragenix: Rust implementation/wrapper foragenix.OS-nixCfg-secrets: (Private Repository) Contains encrypted secrets managed byragenix.
- Application/Tooling Specific:
nix-index-database: Provides a database fornix-index.Vim-Cfg: My external Neovim configuration repository (used as a source).nvchad4nix: Integrates Neovim configurations (like NvChad or custom starters) with Home Manager.kanata-tray: Provides a system tray application for managing Kanata keyboard remapping presets.betterfox: Nix integration for Betterfox Firefox hardening.brew-nix: Alternative Nix integration for Homebrew casks/formulae.brew-api: Homebrew API data used bybrew-nix.
(See flake.nix for the complete list and specific sources/versions)
Secrets (API keys, passwords, sensitive configurations) are managed via agenix or specificaly ragenix.
- Secrets are encrypted using
sshkeys. My public key is explicitly available toragenix. - The encrypted files reside in a private GitHub repository:
DivitMittal/OS-nixCfg-secrets. This repository is referenced as a flake input. - During the Nix build process,
agenixdecrypts these files using my private key. - The decrypted files are placed in the Nix store & symlinked to their target locations.
DivitMittal/OS-nixCfg-secrets repo and the corresponding age private ssh key.
DivitMittal/OS-nixCfg-secrets: (Private) Contains encrypted secrets managed byagenix&ragenix.- DivitMittal/Vim-Cfg: Pure lua standalone Neovim configuration, deployed via
nix4nvchad. - DivitMittal/Emacs-Cfg: An elisp doomemacs configuration, used as an input via
nix-doom-emacs-unstraightened. - DivitMittal/TLTR: Cross-platform complex multi-layer keyboard layout tailored for programmers.
- DivitMittal/hammerspoon-nix: A nix home-manager module for hammerspoon & my hammerspoon lua configuration.
- DivitMittal/firefox-nixCfg: A personal nix home-manager module/configurations for firefox.

