Git Product home page Git Product logo

aquafiles's Introduction

AquaFiles (dotfiles)

Plain text configs for bootstrapping my (PDE) Personal Development Enviroment.

My primary operating system is macOS, but I do use Linux sometimes... (arch, btw!)

Also Ubuntu Server in the cloud

Feel free to try out my dotfiles or use them as inspiration! If you have a suggestion, improvement or question, please open an issue or PR!

Design Principles

Screenshots

Lazyvim Welcome screen

lazyvim welcome screen

Yabai bsp grid with 5 cmatrix running

yabai demo with cmatrix 5 grid

Zellij fastfetch, cmatrix, htop

zellij-in-action

Zellij Neovim htop cmatrix

zellij-neovim-htop-cmatrix

Zellij welcome screen

zellij-welcome-screen

warning WARNING
These dotfiles are for my own personal use and i update them very frequently. If you want to use them: fork the repo, review the code and take what you need from it. Use at your own risk!

Dev Setup

Requirements

  • Deno - For peek.nvim
  • Neovim >= 0.9.0 (needs to be built with LuaJIT)
  • Git >= 2.19.0 (for partial clones support)
  • LazyVim
  • Nerd Font(v3.0 or greater) (optional, but needed to display some icons, Patched Operator Mono Provided in the repo)
  • lazygit (optional)
  • C compiler for nvim-treesitter. See here
  • for telescope.nvim (optional)
  • a terminal that support true color and undercurl:
  • Patched Operator Mono
    • Added Nerd Fonts
    • Added Ligatures

Enable Key repeat for macOS

defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false              # For VS Code
defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false      # For VS Code Insider
defaults write com.vscodium ApplePressAndHoldEnabled -bool false                      # For VS Codium
defaults write com.microsoft.VSCodeExploration ApplePressAndHoldEnabled -bool false   # For VS Codium Exploration users
defaults delete -g ApplePressAndHoldEnabled

I also recommend increasing Key Repeat and Delay Until Repeat settings in System Preferences -> Keyboard.

WezTerm Setup

install wezterm through homebrew

brew install --cask wezterm
  • cd into AquaFiles
cd ~/AquaFiles/
  • stow the config
stow wezterm

Fish Shell Setup

  • install fish shell through homebrew
brew install fish
  • Add fish to the list of allowed shells by appending its path to /etc/shells
echo $(which fish) | sudo tee -a /etc/shells
  • set fish shell to the default shell
chsh -s /opt/homebrew/bin/fish
  • exit the current terminal
exit
  • check if fish shell is set as the default shell
echo $SHELL
# expected output:
# /opt/homebrew/bin/fish (if on macOS)
  • delete config folder
rm -rf ~/.config/fish
  • cd into AquaFiles
cd ~/AquaFiles/
  • stow the config
stow fish

Troubleshooting: if you don't see a recently added path in the $PATH make sure to delete ~/.config/fish/fish_variables, and exit the terminal and restart to clear the cache

Neovim setup

  • Install neovim
brew install neovim # make sure you have the latest version
  • install deno for (peek.nvim)
curl -fsSL https://deno.land/install.sh | sh
  • Backup previous config
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
  • Install LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim
  • Remove the .git folder, so you can add it to your own repo later
rm -rf ~/.config/nvim/.git
  • clone dotfiles (needs to be cloned in root directory for GNU Stow work)
git clone https://github.com/0xAquaWolf/AquaFiles ~/
  • delete lua directory in nvim
rm -rf ~/.config/nvim/lua/*
  • cd into AquaFiles
cd ~/AquaFiles/
  • if on macOS (you might need to delete DS_Store files)
dir="${1:-.}" && echo "Removing .DS_STORE files from $dir" && find "$dir" -type f -name .DS_STORE -delete && echo "ALL .DS_STORE files have been removed from $dir"
  • stow lazyvim
stow nvim
  • startup neovim
nvim
  • sit back and enjoy the installation

Git setup

xcode-select --install
git --version # check to make sure you have git installed
  • cd into AquaFiles
cd ~/AquaFiles/
  • stow git
stow git

Zellij setup

  • Install Zellij
brew install zellij
  • cd into AquaFiles
cd ~/AquaFiles/
  • stow zellij
stow zellij

Yabai Setup

  • Install Yabai
brew install koekeishiya/formulae/yabai

Disable System Integrity Protection

  1. Turn off your device
  2. Intel (apple docs):
    Hold down command ⌘+R while booting your device. Apple Silicon (apple docs):
    Press and hold the power button on your Mac until “Loading startup options” appears.
    Click Options, then click Continue.
  3. In the menu bar, choose Utilities, then Terminal
  4. Disable System Integrity Protection
#
# APPLE SILICON
#

# If you're on Apple Silicon macOS 13.x.x OR newer
# Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled
# (printed warning can be safely ignored)
csrutil enable --without fs --without debug --without nvram

# If you're on Apple Silicon macOS 12.x.x
# Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled
# (printed warning can be safely ignored)
csrutil disable --with kext --with dtrace --with basesystem

#
# INTEL
#

# If you're on Intel macOS 11.x.x OR newer
# Requires Filesystem Protections and Debugging Restrictions to be disabled (workaround because --without debug does not work)
# (printed warning can be safely ignored)
csrutil disable --with kext --with dtrace --with nvram --with basesystem
  1. Reboot
  2. For Apple Silicon; enable non-Apple-signed arm64e binaries
# Open a terminal and run the below command, then reboot
sudo nvram boot-args=-arm64e_preview_abi
  1. You can verify that System Integrity Protection is turned off by running csrutil status, which returns System Integrity Protection status: disabled. if it is turned off (it may show unknown for newer versions of macOS when disabling SIP partially).

If you ever want to re–enable System Integrity Protection after uninstalling yabai; repeat the steps above, but run csrutil enable instead at step 4.

Configure Scripting Additions

Why do you need scripting additions?

yabai uses the macOS Mach APIs to inject code into Dock.app; this requires elevated (root) privileges. You can configure your user to execute yabai --load-sa as the root user without having to enter a password. To do this, we add a new configuration entry that is loaded by /etc/sudoers.

# create a new file for writing - visudo uses the vim editor by default.
# go read about this if you have no idea what is going on.

sudo visudo -f /private/etc/sudoers.d/yabai

# input the line below into the file you are editing.
#  replace <yabai> with the path to the yabai binary (output of: which yabai).
#  replace <user> with your username (output of: whoami).
#  replace <hash> with the sha256 hash of the yabai binary (output of: shasum -a 256 $(which yabai)).
#   this hash must be updated manually after upgrading yabai.

<user> ALL=(root) NOPASSWD: sha256:<hash> <yabai> --load-sa

If you know what you are doing, the following one-liner can be used to update the sudoers file correctly:

echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d " " -f 1) $(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai

After the above edit has been made, add the command to load the scripting addition at the top of your yabairc config file

# for this to work you must configure sudo such that
# it will be able to run the command without password

yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
sudo yabai --load-sa

lastly make sure to uncomment the last line from the sudoers file

sudo visudo -f /private/etc/sudoers

it should read

#includedir /private/etc/sudoers.d (sometimes it has 2 ## it should only have 1)

finnaly reboot your mac

Test Scripting Additions

yabai -m space --focus recent

the intented result should be that you change your window focus, if not you did not correctly add the scripting additions

stow config

  • cd into AquaFiles
cd ~/AquaFiles/
  • stow yabai
stow yabai
  • start yabai service
yabai --start-service

skhd setup

  • Install skhd
brew install koekeishiya/formulae/skhd
  • start service
skhd --start-service
  • cd into AquaFiles
cd ~/AquaFiles/
  • stow zellij
stow skhd

Live Streaming on YouTube

Chronicling my journey of continuous learning and exploration in cutting-edge technologies including:

  • Algo Trading
  • Web3
  • AI/ML

Join me as I document my growth, share insights, and delve into the ever-evolving world of tech innovation.
0xAquaWolf YouTube Channel

Apps i use

MacOS

(Programming, Content creation, Writing)

Chrome Extensions

Desktop Apps

Footer

Join the Community on Discord

AquaWolf Academy: https://discord.gg/wzPBjEcn87

Todo List

  • add links for apps i use
  • neovim setup
  • fish setup
  • git setup
  • Zellij setup
  • skhd setup
  • yabai setup
  • obsidian setup & config
  • vs code setup & config
  • document how to use GNU Stow with my dotfiles
  • add a quick start guide (use this for video)
  • add a video showing how to bootstrap the install and using the config

aquafiles's People

Contributors

0xaquawolf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

aquafiles'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.