Skip to content

nullxception/dotfiles

Repository files navigation

nullxception

~/.dotfiles

Stargazers $EDITOR $XDG_CURRENT_DESKTOP License


This is the place where I keep the dotfiles that I use daily.
So yeah, it will definitely change from time to time :D

hyprland neovim
desktop-previews neovim-previews

💻 Installation

Each module in this repository is self-contained and can be installed independently.
You can install one or multiple modules using the provided dot.sh script:

./dot.sh <module>

For example, let's say that I'm going to install my zsh and neovim config:

git clone https://github.com/nullxception/dotfiles
cd dotfiles
./dot.sh zsh nvim

That’s it! :)

Files inside the nvim and zsh dir will be copied to the location defined in respective <module>/.install:

  • nvim/* to ~/.config/nvim/
  • zsh/* to ~/

This dotfiles structure is heavily inspired from stow-managed dotfiles.

Fun fact, you can even use stow instead of dot.sh if you like using stow.
Just make sure that you're providing the proper --target (you can take a look at <module>/.install):

# example: installing zsh and tmux config to $HOME
stow -v --ignore=.install zsh tmux

# example: installing nvim config
mkdir ~/.config/nvim
stow -v --ignore=.install --target=~/.config/nvim nvim

# example: installing custom fontconfig
mkdir ~/.config/fontconfig/conf.d
stow -v --ignore=.install --target=~/.config/fontconfig/conf.d fontconfig

About `dot.sh`

dot.sh is a minimal Bash script that automates installation by reading the module_target variable inside each module’s .install file and copying files to that target path.

Example:

module_target="$HOME/.config/nvim"

You can take a look and refer to:

🖥️ Windows Support

Windows support is available through dot.ps1 PowerShell script.
It mirrors similar behavior as dot.sh, except it reads Windows-specific variable instead:

module_target="$HOME/.config/nvim"              # this will read by dot.sh
module_target_win32="$env:LOCALAPPDATA/nvim"    # and this is for dot.ps1

To use it, you can just do pretty much similar way:

./dot.ps1 nvim

This lets me sync cross-platform configs (like Neovim or WezTerm) seamlessly between Linux and Windows.

🧩 Module: nvim

My Neovim config leverages mason.nvim, nvim-treesitter, telescope.nvim, conform.nvim, blink.cmp, and some other plugins for a cohesive development experience, or just configuring things to justify my boredom :D

🔗 Requirements

  • Neovim >= 0.12 (for built-in vim.pack package manager)

Because this setup relies on mason.nvim, nvim-treesitter, and telescope.nvim, you may need a few external tools to ensure everything runs smoothly :

On Windows, I typically use scoop or winget to install the required tools.

📝 Tips

For the tree-sitter compiler on Windows, I personally recommend using gcc on mingw for simplicity (and also because I don't want to pull 7GB of Visual Studio C++ Build Tools 😅)

# using scoop
scoop install mingw

# or alternatively
# using BrechtSanders's standalone build of GCC and MinGW-w64 on winget
winget install BrechtSanders.WinLibs.POSIX.UCRT

💻 Installation

You can use the dot.sh or dot.ps1 script to set it up automatically:

Linux

./dot.sh nvim

Win32 PowerShell

./dot.ps1 nvim

🧩 Module: hyprland

It's a pretty simple hyprland setup that utilize waybar, rofi, and some other programs to help my regular desktop usage.

⚠ Disclaimer

My Hyprland setup is configured for my dual monitor setup, including but not limited to workspace binding. So make sure you check and adjust the config accordingly.

🔗 Requirements

Below are the list of programs and scripts that currently used on this setup:

Program/script Description config
hypridle Idle daemon hypridle.conf
hyprlock Lock Screen hyprlock.conf
wezterm Terminal emulator wezterm
cliphist + wl-clip-persist Clipboard manager --
swww Wallpaper daemon --
waybar Panel waybar
mako Notification daemon mako
subs-volume Volume notifier --
grimblast Screenshot script --
rofi App launcher rofi
rofi-session Session menu rofi/rofi-session.conf
rofi-polkit-agent Polkit agent --
rofi-emoji Rofi Emoji Picker --

💻 Installation

You can copy the necessary files into your own config dirs, or deploy the configs with dot.sh:

./dot.sh hyprland

📜 License

Unless otherwise noted, all code and configuration files are licensed under the BSD 3-Clause License.

Made with ❤️, ☕, and too much neovim sessions.