GithubHelp home page GithubHelp logo

dotfiles's Introduction

This repository contains my personal dotfiles for working with Bash and Vim. By using Homebrew, Homebrew cask and npm everything is conveniently versioned on-line and scripted such that a fresh install is just one command away.

While looking for a way to easily distribute my .vimrc to different systems I ran into the dotfiles repository of iheitlager, which gave me a first insight into the wondrous world of .dotfiles.

This set-up modified versions of the scripts from iheitlager, mainly some renamings, placing some functionality in other places, and reducing the need for sudo.

Install

To install my exact configuration execute the following commands:

git clone https://github.com/EricBouwers/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./bootstrap

The following commands (located in 'bin') need to be run every now and then to stay up to date:

  • process_brew_packages to upgrade Homebrew packages
  • process_npm_packages to upgrade npm packages

These scripts can be run separately, or by simply typing dot.

If you want to create repository for your own dotfiles with a similar set-up you probably want to copy the basic structure from the dotfiles-skeleton branch and add your own specific configuration.

Project setup

The overall structure follows the structure of iheitlager and holman. Important things to note is that the set-up revolves around topics, where each topic can contain different components.

Topics

Everything is configured and tweaked within ~/.dotfiles. The actual dotfiles are symlinked from this folder during the bootstrap. This should remain on your system, and offers one place for versioning of your dotfiles, and for example allows .ssh to be excluded. Everything's built around topic areas. If you're adding a new area to your forked dotfiles โ€” say, "Java" โ€” you can simply add a java directory and put files in there. The complete dotfiles system consists of install time and runtime parts, in total four parts:

  • symlinks to dotfiles
  • topical extensions to be loaded by .bash_profile
  • topical brew based installers during script\bootstrap (run these with process_brew_files)
  • topical installers which run during bootstrap

Components

There's a few special files in the hierarchy.

  • bin/: bin/ will get added to your $PATH by .bash_profile and anything in there will be made available everywhere.
  • topic/bash_aliases: Any file named bash_aliases is loaded by .bash_profile and provides aliases available in your shell
  • topic/bash_env: Any file named bash_env is loaded by .bash_profile and provides environment variables available in your shell
  • topic/bash_completion: Any file named bash_completion is loaded by .bash_profile, is supposed to contain completion statements and is available in your shell
  • topic/brew_packages: Any file named brew_packages is executed when running process_brew_files, this provides a way to create Homebrew based installers.
  • topic/install.sh: Any file named install.sh is executed when running bootstrap, this provides a way to create topical installers
  • topic/*.symlink: Any files ending in *.symlink get symlinked into your $HOME. This is such that you can keep all of those versioned in your dotfiles directory, but still keep those autoloaded files in your home directory. These files get symlinked in when you run bootstrap.

Do not forget to never checkin secrets in any of these files, use ~/.localrc for this (sourced by .bash_profile)

Credits

dotfiles's People

Contributors

ericbouwers avatar

Watchers

 avatar

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.