A highly opinionated dotfiles that makes my life much easier as a developer and an individual.
actually it's slightly more than just dotfiles
It's aimed to:
- be reproducible across multiple devices
- be modular and minimal and clean
- be frequently updated as necessary
- be used for anyone if desired*
- be adaptable to new ways of doing things as things arise**
- capture recent useful changes in my workstations into more permanent fashion
- share what I learned to configure better settings
- I try my best to leave no names or email addresses or assumed specific home path of mine in this repo
- But this doesn't mean bootstrapping will not conflict with your own dotfiles if you already manage them
- so a recommended way to try this repo is to do it inside a (throwaway) VM or a container or at least with a clean user account. >
For example, the main package installation choice was used to be to brew but now it's nix at the moment.
You may clone this repository to start using. I usually clone to
${HOME}/dotfiles
or ~/dotfiles
but it should work regardless of location.
Rest of my instruction will assume that you cloned to ~/dotfiles
though.
These scripts that you are about to run have a high probability of overwriting your existing folders and files especially other "dotfiles". Since the scripts are meant to not run interactively most of the time, there is a high chance it doesn't prompt to double check of what it is about to do. Therefore you must read what they do beforehand to avoid unwanted behavior.
It also installs Nix the package manager, and it does create a volume on macOS to workaround the limitation that doesn't exist on Linux. This might affect across all user accounts locally.
The safe ways to try these out are below:
- run these inside virtual machines as it makes easy to "uninstall".
- things might partially work on Github Codespaces if not all
- I've run these inside containers before
- https://github.com/ryuheechul/dotfiles-launchpad uses Vagrant and Docker
container version to bootstrap the portable environment
- dotfiles-launchpad clones this repo as submodule and many times it's not up-to-date, FYI.
~/dotfiles/bootstrap/foundation/darwin/essential.sh
# recommended you to look
at an example below
or
~/dotfiles/bootstrap/foundation/nixos/switch.sh
# recommended you to look at
an example below
or
~/dotfiles/bootstrap/foundation/linux.sh
# recommended to look at an example
below
~/dotfiles/bootstrap/configuration.sh
# recommended you to look at an example
below
# this should prepare essential stuff
~/dotfiles/bootstrap/foundation/darwin/essential.sh
# do below only optionally since it's heavily customized to the author
# make sure to sign in to appstore first
~/dotfiles/bootstrap/foundation/darwin/extra.sh
# this should prepare platform agnostic essential stuff
# you might need to open a new terminal window to be able to do this successfully
~/dotfiles/bootstrap/configuration.sh
# optionally - you probably want to run this first to be able to clone this repo and also use the vim editor
nix-shell -p git vim
# this should prepare essential stuff
~/dotfiles/bootstrap/foundation/nixos/switch.sh
# this should prepare platform agnostic essential stuff
# you might need to open a new terminal window to be able to do this successfully
~/dotfiles/bootstrap/configuration.sh
~/dotfiles/bootstrap/foundation/linux.sh
source /etc/profile.d/nix.sh
source /etc/profile.d/user-shim-for-nix-path.sh
~/dotfiles/bootstrap/configuration.sh
See https://github.com/ryuheechul/dotfiles-launchpad/tree/master/Vagrantfile for more details
All the source code here aim to be self explanatory. You can take a look at
directories and files especially top level ones and
bootstrap/configuration.sh
, nix/pkgs/
. Frequent updates are expected as the
needs grow.
https://github.com/ryuheechul/dotfiles-launchpad might be useful to see how it's being used