Skip to content

marcodeltongo/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Dotfiles

Personal configuration files for macOS, managed as a Git bare repository.

Table of Contents

Quick start

On a fresh Mac, run:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/marcodeltongo/dotfiles/main/install.sh)"

This will install Homebrew, clone the dotfiles, install all packages (formulae + casks, including fonts), set up mise tools, and set Fish as the default shell.

After it completes, see Personalization before making your first commit.

Manual setup

If you prefer to set things up yourself:

  1. Clone as a bare repository:

    git clone --bare https://github.com/marcodeltongo/dotfiles.git $HOME/.dotfiles
  2. Checkout the dotfiles into your home directory:

    git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME checkout

    If there are conflicts, back up existing files first, then retry.

  3. Suppress untracked file noise:

    git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME config --local status.showUntrackedFiles no
  4. Install Homebrew packages:

    brew install $(cat ~/.config/brew_formulas.txt)
    brew install --cask $(cat ~/.config/brew_casks.txt)
  5. You're all set! The dotfiles function from the Fish config is now available.

Personalization

If you're forking or cloning these dotfiles, update the following before making any commits.

Git identity

git config --global user.name  "Your Name"
git config --global user.email "you@example.com"

GPG commit signing

Commit and tag signing is enabled by default. GPG Suite is installed via the cask list.

To set it up:

  1. Open GPG Suite, import or generate your key
  2. Copy the key ID (the long hex string)
  3. Tell git about it:
git config --global user.signingKey YOUR_KEY_ID

To disable signing temporarily (e.g. while setting up):

git config --global commit.gpgsign false
git config --global tag.gpgSign false

Usage

The dotfiles function (defined in config.fish) is an alias for git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME.

Track a new file:

dotfiles add .config/something/config
dotfiles commit -m "Add something config"
dotfiles push

Update an existing file:

dotfiles add .gitconfig
dotfiles commit -m "Update git aliases"
dotfiles push

Check status / pull / log:

dotfiles status
dotfiles pull
dotfiles lo

Included configurations

Tool Config path
Fish .config/fish/config.fish
Git .gitconfig, .config/git/ignore
Ghostty .config/ghostty/config
Starship .config/starship.toml
Helix .config/helix/config.toml
Zed .config/zed/settings.json
mise .config/mise/config.toml
Topgrade .config/topgrade.toml
gh .config/gh/config.yml
gh-dash .config/gh-dash/config.yml
Homebrew .config/brew_formulas.txt, .config/brew_casks.txt
SSH .ssh/config
EditorConfig .editorconfig

Scripts

Script Description
install.sh Full macOS bootstrap — run once on a new machine
scripts/macos-defaults.sh Apply sensible macOS system defaults (Finder, Dock, keyboard, etc.)

Exporting Homebrew packages

To update the package lists after installing something new:

brew leaves --installed-on-request > ~/.config/brew_formulas.txt
brew list --cask > ~/.config/brew_casks.txt

This captures only the packages you explicitly requested, without dependencies.

Unlicense

TL;DR: Feel free to fork and customize!

This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, for any purpose, commercial or non-commercial, and by any means.

For more information, please refer to https://unlicense.org/.

About

My dotfiles, no extra tooling, no symlinks, files are tracked with git.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages