Git Product home page Git Product logo

dotfiles's Introduction

dotfiles

Getting started

Before dotfiles can be setup, install a few dependencies:

After installing brew, install the remaining dependencies using:

brew install gh go jq

Also install the terminal definitions for wezterm in a bash/zsh shell (this isn't valid fish):

bash
tempfile=$(mktemp) \
  && curl -o $tempfile https://raw.githubusercontent.com/wez/wezterm/main/termwiz/data/wezterm.terminfo \
  && tic -x -o ~/.terminfo $tempfile \
  && rm $tempfile

Installation

First, install the GitHub command-line tool gh and authenticate with GitHub.

gh auth login

Now, create a dotfiles repository on your GitHub account, from the Tutero dotfiles template.

GH_USER=$(gh api user | jq -r '.login')
cd ~
gh repo create $GH_USER/dotfiles --private --template=MathGaps/dotfiles
gh repo clone $GH_USER/dotfiles dotfiles
cd dotfiles
git remote add template https://github.com/MathGaps/dotfiles.git
git fetch template
git submodule update --remote

With the dotfiles repository created, run the installation process. First, modify the baseDir in config.yaml to /Users/<home-user> (no trailing /) or whichever directory you would like to install your dotfiles to. You may also customize the default folder locations.

go run .

Note

If the installation process hangs when installing dependencies for longer than 20-30 seconds, try cancelling with <Ctrl-C> and run go run . again. The script is idempotent.

After the installation process completes, it's recommended to logout and login again to ensure system changes (like key repeat) have been applied.

Important

If you already had <baseDir>/.config/* files, they will be moved to <baseDir>/.config.bak/*. Ensure any files you want to keep in your dotfiles are moved back to <baseDir>/.config/*.

Making changes

Updating your own dotfiles

Simply make changes to <repository clone dir>/config/* or equivalently the symbolic links inside <baseDir>/.config/* and push to git as normal. This will make changes to your own dotfiles repository, not the template.

Updating template dotfiles

Once you've made changes as above, you can:

  1. Create a new branch based off template/main, inside origin with git fetch template && git checkout -b <new-branch-name> template/main
  2. Make changes to this branch / cherry-pick from your other commits in origin.
  3. Push your changes to template with git push template HEAD
  4. Create a PR to MathGaps/dotfiles with gh pr create -B main -R MathGaps/dotfiles; and follow the process.
  5. Once merged, let everyone know via Slack if necessary.

Tracking configuration for new software

If you want to add and track changes to new software, then:

  1. Add your configuration to <repository clone dir>/config/<name>.

Important

Make sure your configuration is copied over from <baseDir>/.config/<name> before continuing. Any links in install.dotfiles.yaml will replace existing configuration with the source-of-truth in the repository.

  1. Add $BASE_DIR/.config/<name>: config/<name> to install.dotfiles.yaml so that the CLI knows to symbolically link these directories.
  2. Run go run . to create the symbolic link.
  3. If you make a PR to the template, make sure to let everyone know. Anyone wanting these changes should also run go run .

Updating

In order to pull updates from this repository when others make improvements, we need to merge your upstream branch with the template branch. We cannot assume equivalent histories given upstream changes can be made.

git fetch template
git merge template/main --allow-unrelated-histories
# Resolve any conflicts

Contribution

If you have any improvements, features, fixes, or new software that you think benefit everyone in the team,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.