Skip to content

Latest commit

 

History

2,069 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

CI

Personal system configuration using Nix and Home Manager.

Features

  • 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

Supported Platforms

  • x86_64-linux
  • aarch64-darwin (Apple Silicon Macs)

Prerequisites

  • Nix with flakes enabled
  • Git

Note: Home Manager will be installed automatically during setup.

Installation

# 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

Usage

Update Configuration

# 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

Working with the Repository

# Enter shell with linting and formatting tools
nix develop

Structure

Core Configuration

  • flake.nix - Top-level flake for development environment and pre-commit hooks
  • setup.sh - Initial setup script for installing Nix, Home Manager, and dependencies

Home Manager

  • config/home-manager/ - Main user environment configuration
    • flake.nix - Home Manager flake with platform detection
    • home.nix - Base configuration entry point
    • programs/ - Application-specific configurations (Git, Emacs, VS Code, etc.)
    • services/ - System services (Dunst, GPG agent, Picom, etc.)
    • home/packages/ - Package lists organized by platform

Window Management

  • xmonad/ - XMonad window manager configuration (Linux only)
    • Configuration and source files for the custom XMonad build
  • config/polybar/ - Status bar configuration for Linux

Shell and Terminal

  • config/fish/ - Fish shell configuration and plugins
  • emacs.d/ - GNU Emacs configuration files
  • Library/Preferences/ - iTerm2 settings (macOS)

macOS Specific

  • Brewfile - Homebrew package definitions for macOS applications

Utilities

  • scripts/ - Python scripts for updating external dependencies (Cursor, VSCode Insiders, extensions)
  • function/ - Setup and installation helper functions

Additional Notes

iTerm2 Configuration (macOS)

The iTerm2 configuration file is included but not automatically deployed. To use it:

  1. Open iTerm2 Preferences > General > Preferences
  2. Enable "Load preferences from a custom folder or URL"
  3. Select Library/Preferences/com.googlecode.iterm2.plist from this repository

License

MIT License

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages