Personal system configuration using Nix and Home Manager.
- Declarative configuration management with Nix Flakes
- Cross-platform support for macOS (Apple Silicon) and Linux
- Automated setup for tools and applications
- Pre-configured shells, editors, and utilities
- x86_64-linux
- aarch64-darwin (Apple Silicon Macs)
- Nix with flakes enabled
- Git
Note: Home Manager will be installed automatically during setup.
# Clone the repository
git clone https://github.com/cariandrum22/dotfiles.git
cd dotfiles
# Run the setup script (installs Nix, Home Manager, and other dependencies)
bash setup.sh
# Apply Home Manager configuration
cd config/home-manager
nix run --impure . -- switch
# Update flakes (run in each directory)
nix flake update
cd config/home-manager && nix flake update
cd xmonad && nix flake update # Linux only
# Apply changes
cd config/home-manager
nix run --impure . -- switch
# Enter shell with linting and formatting tools
nix develop
flake.nix
- Top-level flake for development environment and pre-commit hookssetup.sh
- Initial setup script for installing Nix, Home Manager, and dependencies
config/home-manager/
- Main user environment configurationflake.nix
- Home Manager flake with platform detectionhome.nix
- Base configuration entry pointprograms/
- Application-specific configurations (Git, Emacs, VS Code, etc.)services/
- System services (Dunst, GPG agent, Picom, etc.)home/packages/
- Package lists organized by platform
xmonad/
- XMonad window manager configuration (Linux only)- Configuration and source files for the custom XMonad build
config/polybar/
- Status bar configuration for Linux
config/fish/
- Fish shell configuration and pluginsemacs.d/
- GNU Emacs configuration filesLibrary/Preferences/
- iTerm2 settings (macOS)
Brewfile
- Homebrew package definitions for macOS applications
scripts/
- Helper scripts for updating VS Code extensionsfunction/
- Setup and installation helper functions
The iTerm2 configuration file is included but not automatically deployed. To use it:
- Open iTerm2 Preferences > General > Preferences
- Enable "Load preferences from a custom folder or URL"
- Select
Library/Preferences/com.googlecode.iterm2.plist
from this repository
MIT License