Code Monkey home page Code Monkey logo

dotfiles's Introduction

Dotfiles

My macOS dotfiles for Zsh.

Features

Note: Installation of Oh My Zsh is not optional. Everything else listed below can be opted-out of.

Installation

The installation step requires the XCode Command Line Tools and may overwrite existing dotfiles in your HOME and .vim directories.

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

If you wish to fork this project and maintain your own dotfiles, fork it and run the following:

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

Usage

Run the dotfiles command:

dotfiles

You should run the update when:

  • You make a change to ~/.dotfiles/git/gitconfig (the only file that is copied rather than symlinked).
  • You want to pull changes from the remote repository.
  • You want to update Homebrew formulae and Node packages.

Options:

-h, --help Help
-l, --list List of additional applications to install
--no-packages Skip package (brew/node/etc) updates
--no-sync Skip pulling from the remote repository
--no-macos Skip macOS settings update
--with-apps Opt-in to install mac apps via brew cask (won't install/update if it's already present)

Oh My Zsh

These dotfiles essentially wrap Oh My Zsh. When you install the dotfiles, Oh My Zsh will also get installed for you directly into the ~/.dotfiles directory.

  • $ZSH will be ~/.dotfiles/oh-my-zsh
  • $ZSH_CUSTOM will be ~/.dotfiles/oh-my-zsh-custom
  • Opinionated set of plugins are loaded
  • Everything is configurable if you want to change things

Oh My Zsh Plugins

  • aws
  • git
  • iterm2
  • history-substring-search
  • nvm
  • z

Homebrew formulae

Mac Applications Installed via Homebrew cask

  • Alfred 4
  • AppCleaner
  • Brave Browser
  • CloudApp
  • Docker Desktop
  • Express VPN
  • Google Chrome
  • Google Drive
  • iTerm2
  • Notion
  • Postman
  • Slack
  • Spotify
  • Visual Studio Code
  • zoom.us

Node packages

Custom macOS defaults

Custom macOS settings can be applied during the dotfiles process. You'll be prompted before this happens so you can say no.

They can also be applied independently by running the following command:

macosdefaults

Local/private

Any private and custom Bash commands and configuration should be placed in a ~/.zshrc.before or ~/.zshrc.after file. These files will not be under version control or committed to a public repository. If either or both exists, they will be sourced for inclusion in .zshrc.

  • ~/.zshrc.before: Sourced before oh-my-zsh.sh is loaded, therefore allowing you to effect what happens when oh-my-zsh.sh runs, without changing any tracked files. Some examples would be the ZSH_THEME or specific Oh My Zsh plugin configurations.
  • ~/.zshrc.after: Sourced after oh-my-zsh.sh is loaded. You can override anything that was set by oh-my-zsh.sh.

Here is an example ~/.zshrc.before:

# PATH exports
PATH=$PATH:~/.gem/ruby/1.8/bin
export PATH

# Git credentials
# Not under version control to prevent people from
# accidentally committing with your details
GIT_AUTHOR_NAME="Chris O'Donnell"
GIT_AUTHOR_EMAIL="[email protected]"

# Set the credentials (modifies ~/.gitconfig)
git config --global user.name "$GIT_AUTHOR_NAME"
git config --global user.email "$GIT_AUTHOR_EMAIL"

# Work Machine Aliases
alias web="cd ~/Sites/company/web"

ZSH_THEME="amuse"

Here is an example ~/.zshrc.after:

# override something
alias ll="ls -aGlFh"

Note: Because the dotfiles/gitconfig file is copied to ~/.gitconfig, any private git configuration specified in ~/.zshrc.before or ~/.zshrc.after will not be committed to your dotfiles repository.

Acknowledgements

Inspiration and code was taken from many sources, including:

dotfiles's People

Contributors

alrra avatar bronxct1 avatar codfish avatar necolas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dotfiles's Issues

Install failed at line 63

sh: line 63: /Users/john/.dotfiles/oh-my-zsh-custom/00-dotfiles.zsh: No such file or directory

I had ohmyzsh install previously so not sure if conflict

When New Version !?!?!

The maintainers are slacking, really need to update for Mac changing default shells to zsh

issues setting up dotfiles on m1 chip mac

  • Error: Homebrew not found.
    • /Users/codonnell/.dotfiles/oh-my-zsh-custom/01-exports.zsh:52: command not found: brew
    • Solution --> need to add eval "$(/opt/homebrew/bin/brew shellenv)" after brew installation
  • mv: rename composer.phar to /usr/local/bin/composer: No such file or directory
    • add $DOTFILES in the path of the mv command (I think)
    • ls: /usr/local/bin: No such file or directory .... why not
    • On an M1 Mac it will create a new installation under /opt/homebrew (on Intel it’s under /usr/local/bin).
    • Solution: Set HOMEBREW_DIR to /usr/local for macOS Intel, /opt/homebrew for Apple Siliconif [[ uname -m == 'arm64' ]]; then echo M1
      fi
  • Should I auto install Mac apps during an install? https://github.com/codfish/dotfiles/blob/master/install.sh#L72
  • some nvm command goes into an infinite c++ loop...
  • Error: No such keg: /opt/homebrew/Cellar/google-cloud-sdk

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.