Skip to content

Latest commit

 

History

History
90 lines (60 loc) · 5.42 KB

README.md

File metadata and controls

90 lines (60 loc) · 5.42 KB

dotfiles repo

This is my personal dotfiles repo. Feel free to explore it, copy bits and pieces for your own dotfiles, or fork the whole repo.

! NOTE
These dotfiles are tailored to my liking. If you want to use them, fork the repo, review the code, remove anything you don't want or need, and enjoy.

Platform Compatibility ⚠

This repository is currently tailored for macOS systems only.

Dotfiles might work with little/no changes on other systems (although no test has been performed to confirm that, so far). The installation process will more likely require more effort, as it is thoroughly tailored on macOS systems.

It's my intention to make it crossplatform one day, but it will require major changes: like switching from homebrew to Nix as a system package manager, and adapting all system and app preferences automation script.

Installation process

The installation process is largely automated, with only a few manual steps involved.

In a nutshell, to install the dotfiles on a brand new system, simply run the following shell commands:

# install the command line dev tools
xcode-select --install 

# clone this dotfile repository
git clone https://github.com/Amheklerior/dotfiles $HOME/.dotfiles

# move into the .dotfiles directory
cd $HOME/.dotfiles

# run the install script and follow the instructions...
./bootstrap.sh

For a step-by-step reference guide in setting up a new machine, checkout the stup-guide and the system and apps preferences page.

Repository Overview

Here's an overview of the repository structure

  • bootstrap.sh - the main script that is used to automate the installation process (it calls in order, all scripts defined in the scripts/ dir below)
  • scripts/ - scripts that are used to automate the installation process
  • bundles/
  • prefs/
    • apps/ - scripts to load preferences for the various apps
    • macos/ - script to load macos system preferences
    • raycast/ - raycast's config file
    • vscode/ - vscode settings, keybindings, and snippets
    • kbd/ - keyboard layout and mappings for my Nuphy Air75 keyboard
  • private/ - sensitive data like 2FA codes, keys, and tokens, all encrypted
  • ssh-keys - ssh key pairs for both personal and work accounts
  • system/ - dotfiles that are symlinked into the user's home dir
  • bin/ - scripts and utilities that are available in the PATH
  • wallpaper/ - a set of nice wallpapers for my mac

My dotfiles

My dotfiles are stored under the /system directory. They are symlinked into the user's $HOME dir using GNU stow. This makes it easy to update them without having to manually synk them between the system and the repo.

How private information are protected

Sensitive and private data, such as 2FA backup codes, SSH private keys, GitHub/GitLab access tokens, licence keys, personal and work related git repo lists, are all encrypted and protected with a password, using ansible-vault.

SSH key pairs are safely stored under the /ssh-keys directory. The private keys are stored encrypted, while the public ones are stored as is.

2FA codes, keys, and tokens for apps/services are stored encrypted in a *.codes, *.key, *.token file respectively, under the /private directory.

I've also integrated gitleaks to run as a pre-commit git hook, to scan for potential secrets being committed.

Feedback

If you have any suggestion/improvement be my guest!

Credits

Special thanks to: