A declarative, reproducible configuration for my system using NixOS, Home Manager, and a literate Emacs environment.
—
This repository contains my personal system and user configurations. The setup is designed to be fully reproducible across my machines, leveraging the power of Nix flakes and the declarative nature of the Nix ecosystem.
- OS: NixOS (with Flakes)
- User Environment: Home Manager
- Primary Editor / OS: Emacs (tailored for Clojure, Emacs Lisp, and development workflows)
- Secrets Management: SOPS-Nix / Agenix
.
├── flake.nix # Main entry point for the system flake
├── hosts/ # Machine-specific configurations
│ └── mary/ # Framework 13 hardware and specific tweaks
└── modules/ # Shared/reusable NixOS & Home Manager modules
├── nixos/ # System-level base configurations
└── home/ # Home Manager configuration
Emacs is central to my workflow. The configuration is optimized for:
- Development: Deep integration with functional programming paradigms (Clojure via CIDER, Emacs Lisp).
- Tools: Magit for Git wizardry,
mu4efor email management, andgptelfor local AI/Ollama workflows. - Templates: Extensive use of
tempelfor fast, contextual code snippets.
Ensure you have Nix installed with flakes enabled. If you are on a non-NixOS system, you will need Home Manager standalone.
- Clone this repository into your home directory (traditionally
~/dotfilesor~/.config/dotfiles):git clone https://github.com/dpom/dotfiles.git ~/dotfiles cd ~/dotfiles
- In emacs tangle Config.txt and Emacs.txt files.
- To apply the NixOS configuration for a specific host:
sudo nixos-rebuild switch --flake .#mary - To apply the Home Manager standalone configuration (if applicable):
home-manager switch --flake .#dan
If you install ent (or use my configuration) you could run the 2,3, and 4 steps from emacs with the ent tasks:
- update-system
- update-home
Secrets (such as SSH keys, API tokens, and email credentials) are managed securely using declarative secret tooling pinned to ~/.ssh. Do not commit unencrypted secrets to this repository.
This project is licensed under the GPL 3.0 License - see the LICENSE file for details.