20 Commits

Author SHA1 Message Date
993e375a76 Move shell config 2026-03-15 14:55:55 +05:30
d68beb82d9 Geany config changes 2026-03-15 14:32:21 +05:30
58080d0aa2 Change wezterm config file path 2026-03-15 14:28:04 +05:30
471d2e2b71 remove copilot from master 2026-03-15 14:20:33 +05:30
48d7990c10 ignore lazy lock 2026-03-15 14:19:37 +05:30
32fa1a369b Fix stow 2026-03-15 14:10:52 +05:30
d002786ad4 docs: restore README.md 2026-03-15 14:02:22 +05:30
bcd24b7c15 chore: ignore README.md and .git recursively in stow 2026-03-15 13:58:52 +05:30
839b7e0b5f Change directory structure 2026-03-15 13:56:32 +05:30
1f9cee1ad9 Zshrc changes 2026-03-15 13:09:31 +05:30
81540facfe Add ohmybash changes in bashrc 2026-03-15 13:08:25 +05:30
7a121e3814 fix stow 2026-03-15 12:59:33 +05:30
d7f76aa1a9 Merge pull request 'mac_personal' (#1) from mac_personal into master
Reviewed-on: #1
2026-03-15 12:54:07 +05:30
3a82b9b170 Remove work config file 2026-03-15 12:50:16 +05:30
3000fe9834 Ignore fonts in mac stow 2026-03-15 12:50:16 +05:30
de06d3ecb9 Remove copilot chat 2026-03-15 12:44:26 +05:30
a9d4518dfb Add work config file 2026-03-15 11:04:41 +05:30
ef0d4c346c Add more 2026-03-15 10:53:30 +05:30
0cb38447fc Modify README 2026-03-15 10:43:56 +05:30
d2c5b35cc7 remove work config 2026-03-15 10:41:10 +05:30
2576 changed files with 1399 additions and 102 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,2 @@
*nvim/lazy-lock.json*
*nvim/.config/nvim/lazy-lock.json*
.DS_Store

View File

@@ -28,3 +28,5 @@ _darcs
scripts # scripts directory to be ignored
shell # various shell configurations need not be stowed.
.DS_store
README.md
.*/\.git

View File

@@ -2,10 +2,19 @@
This repository contains my personal dotfiles, managed using [GNU Stow](https://www.gnu.org/software/stow/).
Instead of a custom installation script, configurations are organized into logical "packages". Using `stow` ensures that all configuration files are cleanly symlinked into your home directory, mirroring the structure inside the package folder.
Using `stow` ensures that all configuration files are cleanly symlinked into your home directory, mirroring the structure of this repository.
## Requirements
A script is provided to help install the core dependencies across macOS and common Linux distributions (Ubuntu/Debian, Arch, Fedora).
To run the installation script:
```bash
./scripts/install_dependencies.sh
```
Alternatively, you can manually install the required tool:
- [GNU Stow](https://www.gnu.org/software/stow/)
To install Stow on macOS, use [Homebrew](https://brew.sh/):
@@ -27,52 +36,59 @@ sudo pacman -S stow
## Installation
To install a specific package (e.g., `nvim`), navigate to the root of this repository and run:
To install all configurations at once, navigate to the root of this repository and run:
```bash
stow nvim
stow */
```
*(Note: Using `stow */` prevents the shell from passing pure files like `README.md` to Stow, ensuring only directory packages are stowed).*
To install all standard packages at once, run:
This will automatically create the necessary symlinks in your `$HOME` directory.
### Removing Configurations
If you want to remove the symlinks created by Stow, use the `-D` flag:
```bash
stow bash zsh nvim starship tmux
stow -D */
```
This will automatically create the necessary symlinks in your `$HOME` directory pointing to the files in this repository.
## Directory Structure & Branching Strategy
### Removing a Package
This repository uses a **Folder-Per-App** structure combined with a **Git Branching Strategy** to flawlessly handle different machines (Mac, Work, Linux) without any `if/else` logic.
If you want to remove the symlinks for a specific package, use the `-D` flag:
```bash
stow -D nvim
```
## Directory Structure
To keep things modular and easy to manage, each folder acts as a "package" that represents an application or environment. The folder structure *inside* the package strictly mirrors its target destination relative to the home (`~/`) directory.
### 1. Folder Structure
The root directories represent individual applications:
```text
.
├── bash/
│ └── .bashrc # Symlinked to ~/.bashrc
├── nvim/
│ └── .config/
│ └── nvim/ # Symlinked to ~/.config/nvim/
├── starship/
│ └── .config/
│ └── starship.toml # Symlinked to ~/.config/starship.toml
├── tmux/
│ ├── .tmux.conf # Symlinked to ~/.tmux.conf
│ └── .tmux.conf.local # Symlinked to ~/.tmux.conf.local
└── zsh/
└── .zshrc # Symlinked to ~/.zshrc
├── bash/ # Stowed to ~ (contains .bashrc)
├── nvim/ # Stowed to ~/.config/nvim/
├── tmux/ # Stowed to ~ (contains .tmux.conf)
├── zsh/ # Stowed to ~ (contains .zshrc)
└── ...
```
### 2. The Git Branch Workflow
This repository has zero conditional logic. Configurations are managed purely via branches.
- **`master` branch**: Contains the 95% common base configurations shared across all machines.
- **`mac`, `work`, `linux` branches**: Machine-specific branches derived from `master`.
**How to manage machine-specific settings:**
1. Check out your machine's branch (e.g., `git checkout work`).
2. Statically write your overrides (e.g., adding a Work-only plugin to `nvim/`).
3. Commit and push: `git push origin work`.
**How to update shared settings:**
1. Switch to the base branch: `git checkout master`.
2. Update the shared configuration and commit.
3. Switch back to your local branch: `git checkout work`.
4. Pull the updates in by rebasing: `git rebase master` (then `git push origin work -f`).
### Adding New Configurations
When you want to add a new tool:
1. Create a new directory for it (e.g., `wezterm`).
2. Replicate the target directory structure inside this new folder (e.g., `wezterm/.config/wezterm/wezterm.lua`).
3. Run `stow wezterm` from the root of this repository.
1. Create a new folder matching the application's name (e.g., `mkdir alacritty`).
2. Replicate the target directory structure inside it (e.g., `alacritty/.config/alacritty/alacritty.toml`).
3. Run `stow */` from the root of this repository to link the new package.

View File

Before

Width:  |  Height:  |  Size: 694 KiB

After

Width:  |  Height:  |  Size: 694 KiB

Some files were not shown because too many files have changed in this diff Show More