Skip to content

Latest commit

Β 

History

History
168 lines (121 loc) Β· 4.64 KB

File metadata and controls

168 lines (121 loc) Β· 4.64 KB

Logo
CONFIG

My personal setup of dotfiles and applications

GitHub license git-last-commit GitHub commit activity GitHub 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.