Coder Social home page Coder Social logo

boldandbrad / dotfiles Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 437 KB

๐Ÿ’ป Automated macOS setup and .file management

License: MIT License

Shell 53.98% Ruby 7.81% Makefile 0.38% Lua 37.83%
dotfiles zshrc dotbot brewfile alacritty-config neovim-config vscodium-config git-config macos-setup tmux-conf

dotfiles's Introduction

๐Ÿ  boldandbrad's humble dotfiles

Welcome $HOME!

This repo makes moving into your new mac a breeze by automatically furnishing it with your favorite apps, and giving you the tools you need to maintain it. I have made my preferences open source to serve as a blueprint and inspiration for others.

Whether or not dotfile repos should be forked is a topic of hot debate. If you do fork this repo, I strongly recommend you personalize the contained files before unpacking.

Jump to: โœจ TL;DR | ๐ŸŽฅ Demo | ๐Ÿ“ฆ Unpack | ๐Ÿ› ๏ธ Maintain | ๐Ÿ›‹๏ธ Contents | ๐Ÿ–Œ๏ธ Personalize | ๐Ÿ’ก Inspiration | ๐Ÿ“š Resources

โœจ TL;DR

The floor plan at a glance:

Operating System macOS
Package Manager homebrew
Dotfile Manager dotbot
Terminal Emulator alacritty
Terminal Multiplexer tmux
Shell zsh
Shell Prompt oh my posh / starship
Editor neovim / vscodium
Typeface Anonymous Pro / Anonymice Pro Nerd Font
Theme Catppuccin Mocha

๐ŸŽฅ Demo

Gif/Video coming soon.

๐Ÿ“ฆ Unpack

Warning: Before unpacking, consider reviewing the repo contents to make sure they match your style. Any existing configs may be overwritten.

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

This will download and run ship.sh, which clones this repo to ~/Setup/dotfiles (if not present), and then prompts you to run unpack.sh.

Alternatively you can clone the repo yourself and run unpack.sh manually.

git clone --recursive https://github.com/boldandbrad/dotfiles.git ~/Setup/dotfiles
cd ~/Setup/dotfiles && ./unpack.sh

The unpack script explains what it will do, prompts before doing so, and is idempotent. This means it can be safely run multiple times without compounding changes or breaking.

In brief, unpacking does the following:

  • โœ… Verify system compatibility
  • ๐Ÿ”„ Check and prompt for system updates
  • โฌ‡๏ธ Install or update user packages and apps
  • ๐Ÿ”— Symlink user dotfiles and configs
  • โš™๏ธ Apply user system settings
  • ๐ŸŒฑ Clone user github repos

Continue reading for more details on what to expect.

๐Ÿ› ๏ธ Maintain

To make system maintanence simpler post-install, a handful of convenient command aliases are provided. Invoke these from anywhere.

Command Description
sys-refresh Rerun system setup (unpack.sh)
sys-clean Clean system caches and app data (โŒ Coming soon)
dot-commit Persist current dotfiles to github (โŒ Coming soon)
dot-relink Relink installed dotfiles
zsh-reload Reload shell environment (.zshrc)
dep-check Check if all apps and dependencies are installed
dep-refresh Install/update all apps and dependencies
dep-prune Uninstall apps and dependencies that aren't needed
git-reclone Reclone user github repos

๐Ÿ›‹๏ธ Contents

The contents of this repo are organized into a few high level directories.

dotfiles/
โ”œโ”€โ”€ config/         # Config files for packages and apps. Symlinked by dotbot.
โ”‚  โ””โ”€โ”€ ..
โ”œโ”€โ”€ scripts/        # Shell scripts for system and tool setup. Called by unpack.sh.
โ”‚  โ””โ”€โ”€ ..
โ”œโ”€โ”€ vendor/         # Dependencies which are managed as git submodules.
โ”‚  โ””โ”€โ”€ ..
โ”œโ”€โ”€ ..
โ”œโ”€โ”€ Makefile        # Helpful development commands.
โ”œโ”€โ”€ ship.sh         # Remote installation script.
โ”œโ”€โ”€ unpack.sh       # Main installation and setup script.
โ””โ”€โ”€ symlinks.yaml   # Dotbot symlink configuration.

Configs

The config/ directory contains config files for packages and apps. They are symlinked to their respective locations on the system by dotbot as specified in symlinks.yaml at the repo root.

Most packages and apps respect the XDG base directory specification to determine where to store configurations and data. This creates consistency and predictability while keeping your $HOME free of clutter.

The following XDG variables are defined in .zshenv, which is sourced before symlinking.

Env Variable Location
XDG_BIN_HOME ~/.local/bin
XDG_CACHE_HOME ~/.local/var/cache
XDG_CONFIG_HOME ~/.config
XDG_DATA_HOME ~/.local/share
XDG_LIB_HOME ~/.local/lib
XDG_STATE_HOME ~/.local/state

Scripts

The scripts/ directory contains shell scripts that automate system and tool setup. This includes OS specific scripts for installing apps and dependencies, and system configurations. Most of these scripts are called directly from unpack.sh at the repo root.

Docs coming soon.

๐Ÿ–Œ๏ธ Personalize

If you have cloned or are reusing snippets from this repo for your own system setup, there are a handful of things that should change before unpacking.

  • Change the value of GITHUB_USER username in both ship.sh and unpack.sh. This is used to automatically clone your public git repos, including this one.
  • Search for and replace all other 'boldandbrad' references with your preferred user name or value.

๐Ÿ’ก Inspiration

There are tons of great dotfile and machine setup repos out there. In particular, I took inspiration from these gems:

๐Ÿ“š Resources

โš–๏ธ License

Copyright (c) 2021-present Bradley Wojcik. Released under the MIT License. See LICENSE for details.

dotfiles's People

Contributors

boldandbrad avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

dotfiles's Issues

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.