# FaultyBranches Dotfiles Yet another repository of dotfiles, this time for the FaultyBranches way of setting up a non-machine specific user's software. Included are configs for: - neovim - tmux - wezterm - zsh Planned configs are: - gitconfig - newsboat ## Deployment > [!CAUTION] > This script _WILL_ clobber existing configuration files for the above applications. Read the script and backup files before running if needed. Just run `./deploy.sh` Configurations will be deployed to standard locations for a *nix/Mac user directory by force creating a symlink back to this repository's files. ### Additions Configurations and their destinations are listed in the deploy script's associative array (dict) named `configs`. Additions or alterations to locations or new configs are to be added there. ## Updating `git pull` will give the latest changes and via symlinks they will immediately be available to the appropriate applications. ## Applications ### Neovim Console/terminal based text editor with hefty extensibility, speed and flexibility. The configs are an attempt at including some IDE functionalities - Auto-complete via nvim-cmp - LSP setup via lspconfig and mason - Debugging via DAP and plugins - Code snippets via luasnips and a base set of snippets - Git integration via gitsigns - Syntax highlighting and symbol parsing via treesitter - Quality of life options - Language aware shortcuts for (un)commenting lines or blocks - Zettlekasten style note plugin for taking/searching/linking notes - Markdown preview that opens a live updating html view of an edited markdown file - Markdown in editor rendering - Telescope fuzzy search for files and file contents ### Tmux _The_ terminal multiplexer for windowing and pane setups for long running shell sessions. Simple configuration setup for a few shortcuts, adding the tpm plugin manager, and adding a couple plugins for colorscheme, system clipboard interactions and a few "sensible" settings. The main changes to shortcuts involve: - Moving to Ctrl-Space for the prefix leader instead of the default Ctrl-b - Using `\` and `-` for splitting the window vertically and horizontally, respectively, and unbinding the defaults - Adding a config reload shortcut of ` r` - Moving to vim-like movement between panes and windows - Removing auto-renaming of windows based on content ### Wezterm Cross-platform terminal emulator built from the ground up with speed, good font rendering, true color and a host of nice optional functions. Simple setup with automatic config reloading, a colorscheme, font and a couple other bits. Handles loading a local configuration file from the `~/.config/wezterm/local.lua` location. Contains a fix for Linux cursor rendering and theming, loading only on that OS. ### Zsh NOTE: Auto-installs oh-my-zsh directly from the github repository when a user opens Zsh for the first time Sets up the oh-my-zsh framework with: - Colorscheme - Autosuggestions and virtual text - Prompt theme - Python virtualenv auto-loader - .env auto-loader - AWS helper - Git helper and prompt updater The config adds the following settings outside of oh-my-zsh: - PATH environment variable additions for: - Go binaries - Rust binaries - User $HOME based `.local/bin` - Keychain initialization for caching SSH keys - Adding a timing function for checking ZSH load timing - Local specific configuration file loading, with three initial configs: - `.zsh_aliases`: Aliases for local specific commands - `.zsh_exports`: Exported variables for a specific system - `.zsh_functions`: Custom functions - `.zsh_local`: Local ZSH settings for a specific system such as any environment specific bash required to set up a system's shell or direct ZSH settings