https://github.com/intscription/dotfiles
My dotfiles
https://github.com/intscription/dotfiles
alacritty dotfiles nvim tmux yazi
Last synced: about 1 month ago
JSON representation
My dotfiles
- Host: GitHub
- URL: https://github.com/intscription/dotfiles
- Owner: IntScription
- Created: 2025-05-07T09:43:59.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-10T14:54:48.000Z (about 1 year ago)
- Last Synced: 2025-05-11T16:54:44.931Z (about 1 year ago)
- Topics: alacritty, dotfiles, nvim, tmux, yazi
- Language: Lua
- Homepage:
- Size: 11.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dotfiles
---
## π Quick Start on a New Mac
To set up your full development environment on a fresh macOS machine:
1. **Install Xcode Command Line Tools (if prompted):**
```sh
xcode-select --install
```
This is required for Homebrew and many developer tools.
2. **Clone this repository:**
```sh
git clone https://github.com/IntScription/dotfiles.git
cd dotfiles
```
3. **Run the install script:**
```sh
chmod +x install.sh
./install.sh
```
This will:
- Install Homebrew (if needed) and then all tools from the `Brewfile` via
`brew bundle`
- Use **GNU stow** to symlink all configuration files from this repo into your
home directory
- Automatically install Tmux plugins and Neovim plugins
- Clone and bootstrap my Devlog (Jekyll) site at
`~/projects/learning/devlog`
- Give you clear feedback at every step
After the script completes, restart your terminal or source your shell config:
```sh
source ~/.zshrc
```
---
## π¦ What Are Dotfiles?
Dotfiles are configuration files for Unix-based systems that help you
personalize your shell, editors, terminal, and other tools. Keeping them in a
version-controlled repository makes it easy to set up a new machine or share
your setup with others.
---
## π οΈ Tools & Features
This repository includes custom configurations for:
- **Zsh**: My preferred shell, with custom prompts, aliases, and plugins.
- **Neovim**: A powerful text editor setup with plugins and custom key mappings.
- **Tmux**: Terminal multiplexer for managing multiple terminal sessions.
- **Alacritty**: Fast, GPU-accelerated terminal emulator.
- **Yazi**: Blazing-fast terminal file manager.
- **LazyGit**: Terminal UI for Git, simplifying Git operations.
- **System Configurations**: Other essential config files for macOS/Linux optimization.
- **Devlog (Jekyll)**: Auto-clones my Devlog repo and installs Ruby gems.
Includes a `devlog` Zsh helper to create todayβs entry with Prev/Next
navigation.
---
## π Folder Structure
```sh
.
βββ zsh/
β βββ .zshrc
βββ nvim/
β βββ .config/nvim/
βββ tmux/
β βββ .config/tmux/
βββ alacritty/
β βββ .config/alacritty/
βββ yazi/
β βββ .config/yazi/
βββ Brewfile
βββ coolnight.itermcolors
βββ scripts/
βββ README.md
βββ install.sh
```
---
## π Quick Installation
### 1. Prerequisites
- **macOS** (or Linux)
- [Homebrew](https://brew.sh/) (for macOS, see below)
- [Git](https://git-scm.com/)
### 2. Clone the Repository
```sh
git clone https://github.com/IntScription/dotfiles.git
cd dotfiles
```
### 3. Run the Setup Script
This will:
- Install Homebrew (if not present, macOS only)
- Use `brew bundle` with the `Brewfile` to install CLI tools, GUI apps, and
fonts
- Use GNU stow to symlink the configs in this repo into your `$HOME`
```sh
chmod +x install.sh
./install.sh
```
### 4. Restart Your Terminal
After installation, restart your terminal or source your shell config:
```sh
source ~/.zshrc
```
---
## π Devlog (Jekyll)
- The installer clones `https://github.com/IntScription/devlog` to
`~/projects/learning/devlog` and runs `bundle install`.
- Repo: [IntScription/devlog](https://github.com/IntScription/devlog)
### Local preview
```sh
cd ~/projects/learning/devlog
bundle exec jekyll serve
```
Then open `http://localhost:4000/devlog/`.
### Daily logging helper
After reloading your shell:
```sh
source ~/.zshrc
devlog
```
This opens todayβs `logs/YYYY-MM-DD/index.md` in Neovim and auto-updates
Prev/Next links for today and the previous entry. It also refreshes the archive
and the homepageβs recent entries.
### Notes (optional)
Place Markdown notes under `~/projects/learning/devlog/notes/`, or symlink an
Obsidian folder:
```sh
ln -s ~/Obsidian/Vault/MyNotes ~/projects/learning/devlog/notes/MyNotes
```
---
## β
Auto-fix Markdown on Save (LazyVim)
- A fixer script lives at `scripts/fix_markdown.sh` and a config at
`.markdownlint.json`.
- Neovim is configured to run the fixer automatically on save for Markdown
files in this repo.
- You can also run it manually:
```sh
/Users/kartiksanil/dotfiles/scripts/fix_markdown.sh
```
Or with the alias:
```sh
fixmd
```
The fixer prefers `markdownlint-cli2` if installed, falling back to
`markdownlint` (markdownlint-cli). The installer sets up both on macOS.
Preview Markdown in-browser with `iamcco/markdown-preview.nvim`:
```sh
:MarkdownPreviewToggle
```
Keymap: `mp`.
## πΊ Homebrew & Brewfile (macOS)
If you don't have Homebrew, the `install.sh` script will install it for you.
Homebrew is the recommended package manager for macOS and is used to install
tools like LazyGit.
This repo also includes a `Brewfile`, so `install.sh` can run:
```sh
brew bundle --file=Brewfile
```
to install all of your CLI tools, GUI apps, and fonts in one go.
---
## π§ Troubleshooting
- **Tmux using default config**: Tmux 3.1+ reads `~/.config/tmux/tmux.conf`. This
repo uses `config/tmux/tmux.conf`. If you get βNo such file or directoryβ when
sourcing, (re)create the symlinks from the repo root:
`ln -sfn "$(pwd)/config/tmux" "$HOME/.config/tmux"` and
`ln -sfn "$HOME/.config/tmux/tmux.conf" "$HOME/.tmux.conf"`. Then run
`tmux source-file ~/.config/tmux/tmux.conf` or restart tmux.
- **Neovim closes on H or yank with βkillβ in terminal**: If pressing H (e.g. in
neo-tree to toggle hidden) or yanking closes nvim and the terminal shows βkillβ,
check whatβs mapped: in nvim run `:verbose map H` and `:verbose map y`. Test
without plugins: `nvim -u NONE` and try H/y again. In iTerm2, check Keys β
Key Mappings for anything bound to H or y that might send a control character.
---
## π How `stow` Symlinking Works
- Each top-level folder (`zsh`, `nvim`, `tmux`, `alacritty`, `yazi`, β¦) is a
**stow package**.
- Inside each package, the directory structure mirrors the final location under
your `$HOME` (for example, `nvim/.config/nvim`, `tmux/.config/tmux`).
- Running:
```sh
stow -t "$HOME" zsh nvim tmux alacritty yazi
```
from the repo root creates symlinks from this repo into your home directory.
- This makes it easy to update configs by just pulling changes and re-running
the script (or re-stowing specific packages).
---
## π οΈ Customization & Forking
Feel free to fork this repo and adapt it to your needs! You can:
- Add your own plugins, themes, or scripts
- Modify configs for your workflow
- Share improvements via pull requests
---
## π€ Contributing
Contributions, suggestions, and issues are welcome! Please open an issue or PR
if you have ideas to improve these dotfiles.
---
## π License
MIT License.
---
## π‘ Why Use This Setup?
- **Fast onboarding:** Get your dev environment up and running in minutes.
- **Consistency:** Same setup across all your machines.
- **Easy to update:** Just pull and re-run the script.
---
Happy coding! π