Skip to content

djm/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

648 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

     _  _
  __| |(_) _ __ ___
 / _` || || '_ ` _ \
| (_| || || | | | | |
 \__,_|/ ||_| |_| |_|
     |__/

dotfiles

macOS system configuration using nix-darwin and home-manager, managed as a single Nix flake.

Structure

.
├── flake.nix                 # Flake inputs & system definition
├── flake.lock
├── host/
│   ├── configuration.nix     # System-level config (nix settings, shell, Touch ID)
│   ├── packages.nix          # CLI packages (installed via Nix)
│   ├── homebrew.nix          # GUI apps (installed via Homebrew)
│   └── macos.nix             # macOS system defaults
└── home/
    ├── default.nix           # Home-manager entry point (PATH, misc dotfiles)
    ├── shell.nix             # Zsh, starship, direnv, fzf, bat, eza
    └── apps/
        ├── atuin.nix         # Shell history sync
        ├── git.nix           # Git config, aliases, SSH signing
        ├── vim.nix           # Vim plugins & settings
        ├── ghostty.nix       # Ghostty terminal config
        └── maestral.nix      # Dropbox sync (maestral + launchd agent)

Nix manages CLI tools and system config. Homebrew is reserved for macOS GUI apps that Nix can't handle. Everything is declarative and reproducible.

From-scratch setup

1. Install Nix via Lix

Lix is a community fork of the Nix package manager focused on correctness and usability. This installs the Nix engine and CLI tooling needed to evaluate flakes and build the system configuration.

curl -sSf -L https://install.lix.systems/lix | sh -s -- install

2. Clone this repo

git clone https://github.com/djm/dotfiles.git ~/Source/dotfiles

3. Build and apply

sudo darwin-rebuild switch --flake ~/Source/dotfiles

This will install all packages, configure macOS defaults, set up zsh, and symlink all dotfiles.

4. Switch to Ghostty

Close the current terminal and open Ghostty. It was installed in step 3 and is the configured terminal from here on.

Post-install setup

These services require one-time configuration after a fresh install.

Atuin (shell history sync)

atuin login

When prompted for the encryption key, retrieve it from 1Password. Then pull down history:

atuin sync

Maestral (Dropbox sync)

maestral setup

This will walk you through linking your Dropbox account and choosing which folders to sync.

Day-to-day usage

After making changes to any .nix file:

rebuild-nix

This is an alias for sudo darwin-rebuild switch --flake ~/Source/dotfiles.

Releases

No releases published

Packages

 
 
 

Contributors

Languages