Skip to content

Repository files navigation

Logo
CONFIG

My personal setup of dotfiles and applications

GitHub licensegit-last-commitGitHub commit activityGitHub top language


📖 Table of Contents


📍 Overview

This repository contains my tracked shell, editor, terminal, and app configuration, plus bootstrap scripts for linking those files into a fresh machine safely.


📦 Prerequisites

  • Unix-like operating system (MacOS, Linux, etc.)
  • git installed on your machine
  • curl for downloading dependencies when needed
  • bash for the bootstrap scripts

📂 Repository Structure

config/
├── Brewfile # Homebrew packages and casks
├── bootstrap/
│ └── vscode/ # VS Code bootstrap settings/extensions
├── .config/ # tracked XDG config
│ └── zsh/ # aliases/functions split into modules
├── examples/ # local/private config templates
├── scripts/ # link and setup helpers
├── setup/ # tracked dotfiles linked into $HOME
└── install.sh # entrypoint for bootstrap commands

🚀 Getting Started

🔧 Installation

  1. Clone the config repository:
git clone https://github.com/johnie/config
  1. Change to the project directory:
cd config
  1. Create symlinks for the tracked dotfiles:
./install.sh link
  1. Run the setup doctor:
./install.sh doctor

The doctor checks:

  • Homebrew availability
  • Brewfile satisfaction
  • key commands used by the repo
  • managed symlink targets
  • expected local/private files such as ~/.gitconfig.local
  1. Optional follow-up steps for a fresh machine:
./install.sh packages
./install.sh macos
./install.sh ssh
./install.sh git
./install.sh vscode

./install.sh packages runs brew bundle against the checked-in Brewfile.

You can also run it directly:

brew bundle --file ./Brewfile

Private And Local Files

Tracked files are meant to be symlinked. Machine-local or secret-bearing files should stay outside the repo.

  • examples/gitconfig.local.example -> ~/.gitconfig.local
  • examples/functions.private.example -> ~/.functions.private
  • examples/zshrc.local.example -> ~/.zshrc.local
  • examples/npmrc.example -> ~/.npmrc

The linker backs up any existing target into ~/.dotfiles-backups/<timestamp>/ before replacing it with a symlink.


🤝 Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines

Click to expand
  1. Fork the Repository: Start by forking the project repository to your GitHub account.
  2. Clone Locally: Clone the forked repository to your local machine using a Git client.
    git clone <your-forked-repo-url>
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear and concise message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to GitHub: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.

Once your PR is reviewed and approved, it will be merged into the main branch.


📄 License

This project is protected under the MIT License.

About

💻 My main dotfiles

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages