/dotfiles

Settings for various tools I use.

Primary LanguageShellMIT LicenseMIT

dotfiles

Automate the customization of your developer workstation in under 5 minutes.

Run the install script to automatically:

  • Install your core development apps and tools
  • Configure your zsh shell
  • Optimize your operating system settings

Supported operating systems:

  • Linux
  • MacOS
  • Windows

Quickly Get Set Up with These Dotfiles

Run the ./install script to automate installing everything.

That includes installing system packages such as tmux, nano, zsh, etc. as well as other apps that a developer will need. It also configures a number of tools in your home directory.

It even handles cloning down this repo. You'll get a chance to pick the clone location in the script as well as view and / or change any system packages that get installed.

The install script is optimized for:

  • Ubuntu 20.04 LTS+ (native or WSL)
  • Debian 11+ (Debian 10 will work if you enable backports for tmux)
  • macOS 10.15+

It will still work with other distros of Linux if you skip installing system packages (more details are below).

You can download and run the install script with this 1 liner:

bash <(curl -sS https://raw.githubusercontent.com/l3x/dotfiles/master/install)

That above could be useful if you're using a non-Debian based distro of Linux, in which case you'll need to install the dependent system packages on your own beforehand. Besides that, everything else is supported since it's only dealing with files in your home directory.

My set up targets zsh 5.0+ and tmux 3.0+. As long as you can meet those requirements you're good to go.

Did you install everything successfully?

Nice!

If you haven't done so already please close your terminal and open a new one, then follow the step(s) below:

1. Configure your git name and email

One of the things the install script did was copy a git ignored git config file into your home directory. You're meant to put in your name and email address so that your details are used when you make git commits.

nano ~/.gitconfig.user

2. (Optional) confirm that a few things work

# Check to make sure git is configured with your name and email.
git config --list

# Sanity check to see if you can run some of the tools we installed.
nano --version
tmux -V
node --version
yarn --version
ng --version

Before you start customizing certain config files, take a look at the [personalization question in the FAQ] (#how-to-personalize-these-dotfiles).

FAQ

How do I develop locally (adding scripts and chaning things)

If you are changing thing, just run the install script from the directory where you have cloned this repo.

For example, if you clone the repo into $HOME/REPOs/dotfiles/l3x/dotfiles then run the install script there. Otherwise, this script will assume you want to get all the scripts and configurations from the remote repo.

What packages are installed?

apt_packages="\
    curl \
    git \
    go \
    iproute2 \
    python3-pip \
    ripgrep \
    tmux \
    zsh \
    nano"

apt_packages_optional="\
    gnupg \
    htop \
    jq \
    gopass \
    pwgen \
    rsync \
    shellcheck \
    unzip \
    wget"

brew_packages="\
    diffutils \
    git \
    go \
    gpg \
    gnupg \
    pinentry-mac \
    nano \
    python \
    ripgrep \
    soundflower \
    tmux \
    zsh"

brew_packages_optional="\
    htop \
    jq \
    gopass \
    pwgen \
    rsync \
    shellcheck"

brew_cask_packages="\
    chromium \
    iglance \
    iterm2 \
    postman \
    robo-3t \
    virtualbox"

brew_cask_packages_optional="\
    gitkraken \
    sizeup \
    tg-pro \
    vlc"

(as of 3 Dec 2021)

How to personalize these dotfiles?

Chances are you'll want to personalize some of these files. Since this is a git repo you can always do a git pull to get the most up to date copy of these dotfiles, but then you may find yourself clobbering over your own personal changes.

Since we're using git here, we have a few reasonable options.

For example, from within this dotfiles git repo you can run git checkout -b personalized and now you are free to make whatever changes that you want on your custom branch. When it comes time to pull down future updates you can run a git pull origin master and then git rebase master to integrate any updates into your branch.

Another option is to fork this repo and use that, then periodically pull and merge updates. It's really up to you.

On a Mac, how do I get QuickTime to record audio with a Screen Recording?

Ensure you are installing the soundflower package.

Next, open the Audio MDI Setup.app

  • Click <+> button at bottom left

  • Rename "Create Aggregate Device" to "QuickTime Player"

  • Select [QuickTime Player]

  • Check [Soundflower (2ch)] and [MacBook Pro Microphone]

  • Click <+> button at bottom left, again

  • Rename "Create Multi-Output Device" to "Screen Record with Audio" in the list of devices

  • Select [Screen Record with Audio]

  • Check [Soundflower (2ch)] and [MacBook Pro Speakers]

Exit the Audio MDI Setup.app

  • Goto Apple Menu > System Preferences > Sound
  • Select [Output] tab
  • Select [Screen Record with Audio]

Open QuickTime.app

  • Select File > New Screen Recording (A QuickTime panel will pop up)
  • Select Options > Soundflower (2ch)
  • Select whether whole screen or selection and hit Enter
  • Record your video/screenshare
  • Click the Cicle with the square in the top menu to stop recording

I see an error message. What does it mean?

If you see something like the following after running the install script:

. . .
Installing tmux plugins...
Already installed "tpm"
Already installed "tmux-resurrect"
Already installed "tmux-yank"
Password:
2021-12-06 16:39:39.645 systemsetup[89813:236792] ### Error:2 File:/System/Volumes/Data/SWE/macOS/BuildRoots/220e8a1b79/Library/Caches/com.apple.xbs/Sources/Admin/Admin-876.1/InternetServices.m Line:379
. . .

You need to check your timezone setting.
This is an error that recently appeared from a change at Apple. I expect it to be resolved by Apple.