Thanks to visit codestin.com
Credit goes to github.com

Skip to content

towry/dots

Repository files navigation

🏠 Dotfiles

Build nix cache Check Nix flake Update flake dependencies

A declarative, reproducible, and version-controlled system configuration using Nix, nix-darwin, and home-manager.

✨ Overview

This repository contains my personal dotfiles and system configuration managed with Nix. It uses:

  • Nix - The purely functional package manager
  • nix-darwin - macOS system configuration
  • home-manager - User environment configuration

The configuration is defined as a Nix flake, making it reproducible and easy to deploy across multiple machines.

🛠️ Features & Tools

This configuration includes setup for:

Shell & Terminal

  • Fish Shell - Default shell with custom plugins and configurations
  • Starship - Cross-shell prompt with custom theme
  • Tmux - Terminal multiplexer with custom keybindings and plugins
  • Zellij - Terminal workspace manager (configured but disabled by default)

Development Tools

  • Neovim - Text editor with extensive configuration
  • Git - Version control with custom aliases and configuration
  • JJ - Modern version control system (alternative to Git)
  • Lazygit - Terminal UI for Git
  • Rust - Rust programming language toolchain
  • Node.js - JavaScript runtime with fnm, pnpm, and other frontend tools
  • Elixir - Elixir programming language support
  • Python - Python programming environment

System Tools

  • Yabai - Tiling window manager for macOS
  • Skhd - Simple hotkey daemon for macOS
  • Karabiner - Keyboard customization for macOS
  • AutoRaise - Window focus follows mouse for macOS
  • dark-mode-notify - Automatically switch themes based on macOS appearance

CLI Utilities

  • Bat - A cat clone with syntax highlighting
  • Ripgrep - Fast search tool
  • Fd - Simple, fast alternative to find
  • Fzf - Fuzzy finder
  • Eza - Modern replacement for ls
  • Zoxide - Smarter cd command
  • Yazi - Terminal file manager
  • Bottom - System monitor
  • Cachix - Binary cache for Nix

🚀 Getting Started

Prerequisites

Installation

  1. Clone this repository:

    git clone https://github.com/towry/dots.git ~/.dotfiles
    cd ~/.dotfiles
  2. Install Nix (if not already installed):

    make install-nix
  3. Bootstrap nix-darwin:

    make boot
  4. Apply the configuration:

    make rebuild

🔄 Updating

To update your system after making changes to the configuration:

make rebuild

To update flake inputs (dependencies):

make update-input

📝 Notes

  • Fish shell is configured as the default shell through nix-darwin, no manual configuration required

  • All Nix binaries are available at $HOME/.nix-profile/bin/

  • You can edit the command prompt with alt+e

🛠️ Structure

  • flake.nix - The main entry point for the Nix flake
  • nix/ - Contains all Nix configuration files
    • darwin/ - nix-darwin specific configuration
    • hm/ - home-manager specific configuration
    • modules/ - Shared configuration modules
    • lib/ - Helper functions and utilities
    • pkgs/ - Custom package definitions
    • home.nix - Main home-manager configuration

📚 Resources

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

TODO