CNG / dotfiles_mac

My personal system configuration files (I am redoing this for Arch Linux in conjunction with finally ditching Mac.)
MIT License
5 stars 3 forks source link

@CNG/dotfiles

This project controls my desktop and laptop configurations, including software installation. It takes @holman/dotfiles’s topic based approach to grouping configurations a step further by allowing for installation and uninstallation per grouping, which I call modules.

Do not run this program without modification. I am working to generalize this so it becomes portable to others, but for now, please use it as a starting point or for ideas.

Notably, you should review any Brewfile files and comment out any lines for software you do not want installed upon installing the module. Also, you can create these two Zsh configuration files to contain any personal settings, aliases, functions, etc.:

Standalone functions

This project contains functions and scripts that might be useful outside the project itself.

Installation

You can install this program anywhere, but many similar projects use ~/.dotfiles. If you install it somewhere else, define DOTFILES=/path/to/dotfiles in mods-available/zsh/zshenv.local.symlink.

git clone https://github.com/CNG/dotfiles.git ~/.dotfiles
~/.dotfiles/dotfiles install

If you later move the directory, you should run dotfiles install --force to update any symbolic links set up by installed modules.

Configuration

Installable modules are simply folders in mods-available that contain any number of files outlined below. Each module's files can be customized, and new modules can be created simply by creating a directory. Modules are not actually installed until the dotfiles install module_name command is run.

Module structure

Usage

Notes

I do not yet have a totally sensible split between the modules zsh, base, macos and developer.

@holman/dotfiles had a bin folder that got linked in $PATH and thus allowed for scripts written in any language. I moved most of that to the functions folders for Zsh autoloading, but now I think that only supports scripts written in shell. Modules can update the $PATH to include anything, so I won't worry about it for now.