- π 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/
βββ .claude/
β βββ settings.json
βββ .github/
β βββ workflows/
β β βββ darwin-build.yml
β β βββ flake-check.yml
β β βββ flake-lock-update.yml
β β βββ flakehub-publish-tagged.yml
β β βββ home-build.yml
β β βββ nixos-build.yml
β β βββ topology-build.yml
β βββ FUNDING.yml
βββ assets/
β βββ topology/
β β βββ main.svg
β β βββ network.svg
β βββ home_graph.png
β βββ qezta.gif
β βββ qezta.png
βββ common/
β βββ all/
β βββ home/
β βββ hosts/
β βββ all/
β βββ darwin/
β βββ droid/
β βββ nixos/
βββ flake/
β βββ actions/
β βββ topology/
β βββ checks.nix
β βββ default.nix
β βββ devshells.nix
β βββ formatters.nix
β βββ mkHost.nix
βββ home/
β βββ ai/
β β βββ interface/
β βββ comms/
β β βββ email/
β β βββ irc/
β βββ dev/
β β βββ js/
β β βββ python/
β βββ gui/
β β βββ darwin/
β β βββ emulators/
β β βββ ide/
β β βββ linux/
β βββ media/
β β βββ music/
β βββ tools/
β β βββ keyboard/
β β βββ privacy/
β β βββ productivity/
β βββ tty/
β β βββ editors/
β β βββ fetchers/
β β βββ file/
β β βββ multiplexers/
β β βββ network/
β β βββ pagers/
β β βββ shells/
β β βββ vcs/
β βββ web/
β β βββ tui/
β βββ default.nix
βββ hosts/
β βββ darwin/
β β βββ L1/
β βββ droid/
β β βββ M1/
β βββ nixos/
β β βββ L2/
β β βββ WSL/
β βββ default.nix
βββ lib/
β βββ custom.nix
β βββ default.nix
βββ modules/
β βββ home/
β βββ hosts/
β β βββ darwin/
β βββ default.nix
βββ overlays/
β βββ default.nix
β βββ nixpkgs.nix
βββ pkgs/
β βββ custom/
β β βββ gittype-bin/
β β βββ gowa/
β βββ darwin/
β β βββ cliclick-bin/
β β βββ element/
β β βββ hot-bin/
β β βββ LibreScore-bin/
β β βββ LosslessSwitcher-bin/
β β βββ menubar-dock-bin/
β β βββ MultiSoundChanger-bin/
β β βββ wacom-toggle/
β βββ pypi/
β βββ flatlatex/
β βββ keymap-drawer/
βββ templates/
β βββ vanilla/
β β βββ flake/
β βββ default.nix
βββ utils/
β βββ home_rebuild.sh
β βββ hosts_rebuild.sh
βββ .editorconfig
βββ .envrc
βββ .gitattributes
βββ .gitignore
βββ .mcp.json
βββ CLAUDE.md
βββ CODEOWNERS
βββ flake.lock
βββ flake.nix
βββ LICENSE
βββ README.md
βββ SECURITY.md
βββ shell.nix
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.

