It's that time again, and this is the Late 2024 reboot of my dotfiles. Let's see where we end up this time.
The core principle behind this was to make it as platform independent as possible, with minimal configuration of the terminal application, to provide similar experience disregarding driving os. I have since realized that this was over complicating things, and this time around I will start by tearing it all down, and build it up again, with a focus on macOS which is my primary development environment. While is still use Linux on all servers, I do see that the need for an overly complex setup is not there. To serve the needs there, I will rather look into a more minimal setup that I can pull in there when needed.
While I still want to try out using GNU Stow to manage my dotfiles, rather than using my hackety hacks bootstrapping scripts, I will start by manually sourcing stuff in. This will probably be a bumpy ride, but isn't that part of what makes this fun?
macOS terminal client of choice is still iTerm 2.
I have changed terminal client this time around and started using Wez's Terminal Emulator(wezterm), which is using lua for configuration.
On iOS I use Blink Shell, when ssh'ing into the Linux servers.
At the moment, I have been using Gruvbox as my color scheme for some time. I've also used to use Nord, but my eyes are not what they used to, and I needed something new and contrasty. I had a quick look at catppucin, and while it looks nice, I couldn't quite get the right feel for it. I might revisit it later, but I still search for the a color scheme that both looks good, and is easy on the eyes contrast wise.
I use zsh
, since that is the default on macOS. I can't say I'm a very advanced user, so I look more to the usability of the shell, rather than pure features. I don't track my .zshrc
, but rather source my config in it, so I can make local customizations.
for rcfile in "$HOME"/.config/dotfiles/config/*.sh(N); do
# Check if the file is the aliases file
if [[ "$rcfile" == 60-aliases.sh ]]; then
export ALIAS_FILE="$rcfile"
fi
source "$rcfile"
done
I tried fish
when installing CachyOS linux, which uses it as default. I liked some of the features it had, so I'm borrowing some ideas from their zsh config for "fish like syntax highlighting and autosuggestions". I also use history substring search. These are added manually to my .zshrc
.
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.zsh-syntax-highlighting
echo "source ~/.zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh-autosuggestions
echo "source ~/.zsh-autosuggestions/zsh-autosuggestions.zsh" >> ~/.zshrc
git clone https://github.com/zsh-users/zsh-history-substring-search ~/.zsh-history-substring-search
echo "source ~/.zsh-history-substring-search/zsh-history-substring-search.zsh" >> ~/.zshrc
The scripts folder is where I keep my small utility scripts, for day to day tasks.
./
- fports - Opens ssh connetion to remote system, and forwards port from remote to localhost.
- dailyNote - Looks for daily note in vault. If it exists, it opens in $EDITOR(AKA Neovim). If it's not present, a new note for today is created from template, before opening it in $EDITOR.
- quickReadNote -Use
fzf
to select daily note, and display it usingbat
. - newTmuxSession - Creates a new tmux session from current directory, with provided name, or attach/switch to existing session if present.
./lib:
- slugify - Takes in a string, and transforms it into a slug. DJ Adams
- yyyymmdd - Returns correctly formated date. DJ Adams
- Homebrew(macOS)
- Oh My Posh
I used to run a minimalistic theme(that requires Nerd Fonts) I've called "Oh My Gruvbox", inspired by several of the existing minimal themes. It was a work in progress, with color palette from morhetz/gruvbox.
I have not landed on a new one yet, so I'll keep this for reference for now. The new WIP is the one called "oh-my-rikosjett".
Available language servers Reference the language server plugin setup for references to the different language servers.
I used to run all of these in my old config. I'll keep this for reference for the moment, but to see what I actually run, it is easier to just look into my neovim config.
- mhinz/vim-startify
- vim-airline/vim-airline
- airblade/vim-gitgutter
- morhetz/gruvbox
- kyazdani42/nvim-web-devicons
- nvim-lua/plenary.nvim
- nvim-telescope/telescope.nvim
- nvim-telescope/telescope-file-browser.nvim
- Plug 'nvim-telescope/telescope-fzf-native.nvim
- hrsh7th/nvim-cmp
- hrsh7th/cmp-nvim-lsp
- hrsh7th/cmp-emoji
- L3MON4D3/LuaSnip
- saadparwaiz1/cmp_luasnip
- onsails/lspkind-nvim
- ray-x/cmp-treesitter
- David-Kunz/cmp-npm
- junegunn/goyo.vim
- junegunn/limelight.vim
- preservim/vim-markdown
- iamcco/markdown-preview.nvim
- godlygeek/tabular
- DJ Adams, all the way! - His dotfiles.
- ThePrimeagen - His dotfiles
I noticed DJ had split his bashrc into smaller scripts, and dynamically load them from bashrc.d. That is a great way to prevent bashrc to grow infinitely. I'm on board with it. 😃
Contains system specific configuration, like NVM, FNM, etc. This file is not tracked, and needs to be maintained per system.
Exports:
- BLOG_PATH=<path to rikosjett.com>
- WRITING_PATH=<path to writing vault>
- Nathaniel Landaus blogpost "My Mac OSX bash profile".
- Corey Schafers YouTube video "How I Setup a New Development Machine - Using Scripts to Automate Installs and Save Time"
- Mathias Bynens dotfiles(Github)
- Sindre Sørhus Quicklook plugins (Github)
Make the terminal work for you! 🤓