SkillAgentSearch skills...

Dotfiles

Set up a developer friendly Arch Linux system in minutes. Also supports WSL 2, Debian, Ubuntu and macOS for CLI tools!

Install / Use

/learn @nickjj/Dotfiles
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

dotfiles

This readme along with an install script will help you get everything running in a few minutes. It contains a bunch of configuration for the tools I use. I also have a number of blog posts and videos related to my dev environment.

🧬 Who Is This For?

This project is more than a few config files. In 1 command and ~5 minutes it can take a new or existing system and install / configure a number of tools aimed at developers. It will prompt or warn you if it's doing a destructive action like overwriting a config file. You can run the idempotent install script multiple times to stay up to date.

Philosophy

I deeply understand one person's bloat is another person's treasure. All packages, configs and symlinks are configurable before you modify your system. A mini-goal of this project is to avoid needing to fork this project while still giving you a reasonable amount of control, and if you want to fork it that's fine too.

Your machine is yours. If you want to dual boot, do it up. If you want multiple users, sure thing. If you don't want to encrypt your drive, no problem. Everyone is welcome here and you have full control.

🎁 What's in the Box?

Command Line

Supports Arch Linux, Debian, Ubuntu and macOS. It also supports WSL 2 for any supported Linux distro.

  • Highlights:
    • Tweak out your shell (zsh)
    • Set up tmux
    • Fully configure Neovim
    • Create SSH / GPG keys if they don't already exist
    • Install modern CLI tools and programming languages

(Optional) Scrolling / Tiling Desktop Environment

Supports Arch Linux.

  • Highlights:
    • niri (Wayland compositor), Waybar (status bar), Walker (app launcher) and friends
    • Hotkey focused but tons of mouse / trackpad support
    • Prefer TUI (Terminal User Interface) apps over GUI apps when possible
    • Development / media creation focused apps are ready to go

Why niri and not XYZ?

It's resource efficient, extremely stable, lightning fast, infinitely tweakable, intuitively handles scrolling / tiling / floating windows, integrates awesomely with multiple monitors, actively developed, well thought out, has great documentation and the author is very helpful.

niri feels like a perfect match and I wanted to make a special call out because it's that good. I'm the "I was there 3,000 years ago" meme from Windows 2000, XP, 7, 10 and also macOS on company issued laptops. Nothing I have ever used in ~25 years has approached how I feel using this set up. It's not even close (yes I tried Hyprland too).

I recorded a demo video on how I use niri in my day to day. This repo will always have the most up to date changes so what you see on video will likely evolve over time!

Full Package List

There's docs with a complete list of packages along with what they're being used for and why.

The source of truth can always be found near the top of the install script. If you scroll down a little bit you'll see variables for each package manager. You can search for PACKAGES_PACMAN and go from there.

🧾 Documentation

🎨 Themes

Since these dotfiles are constantly evolving and I tend to reference them in videos, blog posts and other places I thought it would be a good idea to include screenshots in 1 spot.

Tokyonight Moon

Tokyonight Moon

Gruvbox Dark (Medium)

Gruvbox Dark Medium

I prefer using themes that have good contrast ratios and are clear to see in video recordings. These dotfiles currently support easily switching between both themes but you can use any theme you'd like.

If you want to see icons you'll need a "nerd font". There's hundreds of them on https://www.nerdfonts.com/font-downloads with previews. I personally use Inconsolata NF which these dotfiles install for you.

Setting a theme

# Get a full list of themes by running: dot-theme-set --list
# There's also a --menu flag to preview themes in the desktop environment.
#
# Optionally you can skip adding a theme name and the next theme will be picked.
dot-theme-set THEME_NAME

When switching themes most terminal apps will update automatically, but if you have a bunch of shells already open you can run the SZ (source zsh) alias to source new theme related configs.

Not all terminals are supported, if yours didn't change then check theming custom apps.

You can look in the themes/ directory to see which apps are themed and add additional apps too. If you don't like the included themes that's no problem. You can add custom themes and remove the defaults.

Wallpapers

Only available when the desktop environment is set up.

# Get a full list of wallpapers by running: dot-theme-set-bg --list
# There's also a --menu flag to preview wallpapers.
#
# Optionally you can skip adding a wallpaper name and the next wallpaper will be picked.
dot-theme-set-bg WALLPAPER_NAME

You can cycle between wallpapers that are compatible with the active theme. This is controlled through the _theme.json file in each theme's directory, it's under the wallpaper.synergy object.

✨ Quickly Get Set Up

There's an ./install script you can run to automate installing everything. That includes installing system packages such as zsh, tmux, Neovim, etc. and configuring 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 when running the script as well as view and / or change any system packages that get installed before your system is modified.

If you're setting up a brand new system and plan to use the desktop environment you'll want to set up a bootable USB stick with the official Arch Linux ISO and then run the official archinstall script. There is a FAQ item covering all of that.

🌱 On a fresh system?

We're in a catch-22 where this install script will set everything up for you but to download and run the script to completion a few things need to exist on your system first.

It comes down to needing these packages, you can skip this step if you have them:

  • curl to download the install script
  • bash 4+ since the install script uses modern Bash features
    • This is only related to macOS, all supported Linux distros are good to go out of the box

Here's 1 liners you can copy / paste once to meet the above requirements on all supported platforms:

Debian / Ubuntu

# You can run this as root.
apt-get update && apt-get install -y curl

macOS

If you run bash --version and it says you're using Bash 3.X please follow the instructions below:

# Curl is installed by default but bash needs to be upgraded, we can do that
# by brew installing bash. Once this command completes you can run the install
# script in the same terminal where you ran this command. Before running the
# install script `bash --version` should return a version > 3.X.

# OPTION 1: Using Apple silicon?
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" \
  && eval "$(/opt/homebrew/bin/brew shellenv)" \
  && brew install bash \
  && bash

# OPTION 2: Using an Intel CPU?
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" \
  && eval "$(/usr/local/bin/brew shellenv)" \
  && brew install bash \
  && bash

# The colors will look bad with the default macOS Terminal app. These dotfiles install: https://ghostty.org/

⚡️ Install script

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

BOOTSTRAP=1 bash <(curl -fsSL https://raw.githubusercontent.com/nickjj/dotfiles/master/install)

The above command only downloads a few files into a temporary directory and then provides a little bit of help text on how to proceed with the installation. Think of it as a pre-installer.

If you're not comfortable blindly running a script on the internet, that's no problem. You can view the install script to see exactly what it does. The bottom of the file is a good place to start. Alternatively you can look around this repo and reference the config files directly without using any script.

🐳 Try it in Docker without modifying your system:

# Start a Debian container, we're passing IN_CONTAINER to be explicit we're in Docker.
docker container run --rm -it -e "IN_CONTAINER=1" -v "${PWD}:/app" -w /app debian:stable-slim bash

# Copy / paste all 3 lines into the container's prompt and run it.
#
# Since we can't open a new terminal in a container we'll need to manually
# launch zsh and source a few files. That's what the last line is doing.
apt-get update && apt-get install -y curl \
  && bash <(curl -sS https://raw.githubusercontent.com/nickjj/dotfiles/master/install) \
  && zsh -c ". ~/.config/zsh/.zprofile && . ~/.config/zsh/.zshrc; zs

Related Skills

View on GitHub
GitHub Stars1.1k
CategoryCustomer
Updated7h ago
Forks194

Languages

Shell

Security Score

100/100

Audited on Mar 22, 2026

No findings