Go to file
2023-03-22 19:17:10 +08:00
.vtsm project: update file permissions 2023-03-13 02:07:01 +08:00
bangs Refactor the bangs script 2021-09-03 16:36:12 +08:00
bin Update scripts, Emacs, and Neovim config 2021-10-14 17:46:19 +08:00
emacs project: update file permissions 2023-03-13 02:07:01 +08:00
himalaya Add configurations for Wayland-related stuff (and himalaya) 2021-06-04 16:25:53 +08:00
kitty kitty: add additional binding to close window 2023-01-20 13:11:59 +08:00
lazygit Add lazygit config 2022-07-05 08:17:48 +08:00
lf Update MORE! 2020-11-02 22:46:43 +08:00
newsboat project: update file permissions 2023-03-13 02:07:01 +08:00
nvim nvim: remove deprecated stuff 2022-11-17 11:18:49 +08:00
nyxt Update with a bunch of stuff 2020-12-12 11:05:06 +08:00
rofi/modes Delete the extra custom Rofi modi scripts 2020-10-06 08:03:01 +08:00
slop Add slop and newsboat config 2020-09-17 23:55:09 +08:00
starship Update my config and add Starship 2021-01-14 01:10:31 +08:00
wezterm wezterm: restyle inactive pane 2022-09-02 18:31:31 +08:00
.editorconfig editorconfig: update formatting options for Lua files 2023-03-22 19:17:10 +08:00
.gitignore Create dev environment with Nix 2022-04-02 12:07:07 +08:00
flake.lock flake.lock: update flake inputs 2023-03-22 19:16:19 +08:00
flake.nix project: add codebase formatter 2023-03-22 19:16:57 +08:00
LICENSE project: update file permissions 2023-03-13 02:07:01 +08:00
makefile project: update file permissions 2023-03-13 02:07:01 +08:00
README.adoc project: update file permissions 2023-03-13 02:07:01 +08:00
shell.nix project: add codebase formatter 2023-03-22 19:16:57 +08:00
treefmt.toml project: add codebase formatter 2023-03-22 19:16:57 +08:00
vtsm Update the scripts to be more "correct" 2021-03-30 23:43:49 +08:00

My dotfiles for my Linux-based system setup. The structure of this repo is designed to be managed with GNU Stow, a symlinks farm manager.

I dont know what Im doing most of the time in creating this setup so if youre brave (or suicidal) enough to take a look at my stuff, go ahead.

Caution
As they always say: "Dont blindly apply these dotfiles unless you know what youre doing." Review the code first, change the setting accordingly, and apply it on your own if you want.

Tour of my setup

Heres what the setup should look like (aside from the Stow packages which will be discussed later):

dotfiles
├── .vtsm/
├── docs/
├── LICENSE
├── makefile
├── README.adoc
└── vtsm

The big picture for my dotfiles setup have big goals and those are (according to priority):

  • Easy to transfer and/or reproduce.

  • Modularity, @holman-style.

  • Looking cool (but not too cool or else my potato will weep).

How I maintain my dotfiles

The dotfiles are mostly intended to be used with GNU Stow. If youre not familiar with it, you can read this sweet short article to get you started.

However, with Python 3 (specifically 3.8) installed, you have another option. Behold, the "Very Tiny Stow Manager" (VTSM for short)! The best way to describe VTSM is basically GNU Stow with a generic shell runner. VTSM takes inspiration from GNU Stow (obviously) and how Zach Holmans dotfiles are set. When managing your dotfiles, VTSM is going to be your friend/workmate.

All VTSM needs is a directory containing a package list stored in a JSON file with the name of the packages and their target path. By default, it searches for a file named locations.json but you can specify what JSON file to use with the -m/--manifest option.

An example of what a manifest could contain
{
    "alacritty": "$HOME/.config/alacritty/",
    "bin": "$HOME/bin/",
    "bspwm": "$HOME/.config/bspwm/",
    "dunst": "$HOME/.config/dunst/",
    "emacs": "$HOME/.config/doom",
    "lf": "$HOME/.config/lf",
    "nvim": "$HOME/.config/nvim/",
    "picom": "$HOME/.config/picom",
    "polybar": "$HOME/.config/polybar",
    "rofi": "$HOME/.config/rofi/",
    "sxiv": "$HOME/.config/sxiv",
    "sxhkd": "$HOME/.config/sxhkd/",
    "wal": "$HOME/.config/wal",
    "xorg": "$HOME",
    "zsh": "$HOME"
}

With the tiny manager and the package list, we can then execute commands with all of the packages and its target path with one go. Here are some examples of running commands with VTSM.

# Take the setup as the filesystem structure.
# See the JSON files at .vtsm to see what packages to be installed and where to install them.

# Running the program without any arguments for a test run.
# There should be a bunch of `echo` commands being ran for all of the listed packages.
./vtsm

# Create the directories of the target path and install them with GNU Stow.
# Bada-bing, bada-boom, you have installed your setup or something.
./vtsm --manifest .vtsm/arch.json --commands "mkdir -p {location} && stow {package} --target {location}"

# Run commands only to Rofi and Emacs config files.
./vtsm --manifest .vtsm/arch.json --only "rofi" "emacs" --commands "stow --restow {package} --target {location}"

For the command string, it is a Python template with package and location as the available objects.

Custom scripts

Next are more custom scripts! Theyre located in bin/ and ideally should be linked in $HOME/.local/bin. [1]

Heres a list of the top most useful scripts (at least for me):

Inspirations

Wallpapers

Heres a list of some of the best wallpapers Ive used throughout my ricing journey. Ive also tried to get the creators to show appreciation for their work.

Sources

My personal recommendations for looking out for more cool-looking photos.


1. This is a part of the package list but I think its appropriate to create a dedicated subsection for this.