mirror of
https://github.com/GeorgeSG/dotfiles.git
synced 2026-11-07 03:58:44 +00:00
Update dotfiles
This commit is contained in:
@@ -0,0 +1,70 @@
|
|||||||
|
# Dotfiles
|
||||||
|
|
||||||
|
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
dotfiles/
|
||||||
|
├── home/ # Config files symlinked into $HOME
|
||||||
|
│ ├── config/ # ~/.config/* (alacritty, tmux, zsh, bash, etc.)
|
||||||
|
│ ├── claude/ # Claude Code config
|
||||||
|
│ ├── bashrc
|
||||||
|
│ ├── gitconfig
|
||||||
|
│ ├── tmux.conf
|
||||||
|
│ ├── vim/
|
||||||
|
│ ├── vimrc
|
||||||
|
│ └── zshenv
|
||||||
|
├── macos/ # macOS-specific: Brewfile, Caskfiles, iTerm2 config
|
||||||
|
├── shell/ # Shell scripts (setup, platform installers, clone, ssh)
|
||||||
|
├── functions/ # Utility scripts
|
||||||
|
├── fonts/ # Fonts
|
||||||
|
├── dotbot/ # Dotbot submodule
|
||||||
|
├── dotbot.default.yaml # Main dotbot config (always applied)
|
||||||
|
├── dotbot.personal.yaml # Personal brew casks
|
||||||
|
├── dotbot.setup-once.yaml # One-time setup (macOS defaults, repo clones)
|
||||||
|
└── install # Main install script
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Default setup (symlinks + shell plugins)
|
||||||
|
./install
|
||||||
|
|
||||||
|
# First-time macOS setup (run once: Xcode tools, macOS defaults, clone repos)
|
||||||
|
./install setup-once
|
||||||
|
|
||||||
|
# Personal apps (brew cask installs from Caskfile.personal)
|
||||||
|
./install personal
|
||||||
|
```
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
- `./install` runs dotbot with `dotbot.default.yaml` plus any additional configs passed as arguments
|
||||||
|
- Dotbot creates symlinks from `home/` into `$HOME`, creates directories, and runs shell commands. Folders in `home/config` are symlinked to `~/.config/<folder>`
|
||||||
|
- Platform detection: macOS runs `shell/install_apps_macos.sh`, Linux runs `shell/install_apps_linux.sh`
|
||||||
|
- Submodules: dotbot, tpm, Vundle.vim, and several zsh/bash plugins — run `git submodule update --init --recursive` if anything is missing
|
||||||
|
|
||||||
|
## Important: `.local` files
|
||||||
|
|
||||||
|
Files matching `*.local` (e.g. `.zshrc.local`, `.gitconfig.local`, `.bash_profile.local`) are **machine-specific overrides** that exist only on the local machine. They are gitignored and not part of this repo. Do not modify, reference, or suggest changes to `.local` files.
|
||||||
|
|
||||||
|
## Adding Config for a New Tool
|
||||||
|
|
||||||
|
1. Put the config file under `home/config/<tool>/` or directly in `home/`
|
||||||
|
2. Add a `link:` entry in `dotbot.default.yaml` pointing from the repo path to the target path in `$HOME`
|
||||||
|
3. If it needs a directory created first, add it under `create:` in the same file
|
||||||
|
4. Run `./install` to apply
|
||||||
|
|
||||||
|
## Key Configs
|
||||||
|
|
||||||
|
| File | Linked to |
|
||||||
|
|------|-----------|
|
||||||
|
| `home/zshenv` | `~/.zshenv` |
|
||||||
|
| `home/gitconfig` | `~/.gitconfig` |
|
||||||
|
| `home/config/alacritty/` | `~/.config/alacritty/` |
|
||||||
|
| `home/config/tmux/` | `~/.config/tmux/` |
|
||||||
|
| `home/config/vim/` | `~/.vim/` |
|
||||||
|
| `home/config/zsh/` | `~/.config/zsh/` |
|
||||||
|
| `home/config/bash/` | `~/.config/bash/` |
|
||||||
@@ -1,4 +1,29 @@
|
|||||||
dotfiles
|
dotfiles
|
||||||
========
|
========
|
||||||
|
|
||||||
Some of my dotfiles
|
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone --recursive git@github.com:GeorgeSG/dotfiles.git ~/Git/dotfiles
|
||||||
|
cd ~/Git/dotfiles
|
||||||
|
./install
|
||||||
|
```
|
||||||
|
|
||||||
|
### macOS - first time setup
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Installs Xcode tools, sets macOS defaults, clones personal repos
|
||||||
|
./install setup-once
|
||||||
|
|
||||||
|
# Installs personal apps (Bitwarden, Discord, Spotify, etc.)
|
||||||
|
./install personal
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Default install handles everything - installs apt packages, sets zsh as default shell
|
||||||
|
./install
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cd ~/Git/dotfiles
|
|
||||||
|
|
||||||
git clone git@github.com:GeorgeSG/advent-of-code.git ~/Git/advent-of-code
|
|
||||||
git clone git@github.com:GeorgeSG/gar.dev.git ~/Git/gar.dev
|
|
||||||
git clone git@github.com:GeorgeSG/lovelace-time-picker-card.git ~/Git/lovelace-time-picker-card
|
|
||||||
git clone git@github.com:GeorgeSG/PhotonaydenovV2.git ~/Git/PhotonaydenovV2
|
|
||||||
git clone git@github.com:GeorgeSG/promptle.git ~/Git/promptle
|
|
||||||
git clone git@github.com:GeorgeSG/sarah.git ~/Git/sarah
|
|
||||||
git clone git@github.com:GeorgeSG/sub.rehab.git ~/Git/sub.rehab
|
|
||||||
git clone git@github.com:GeorgeSG/taxbro.io.git ~/Git/taxbro.io
|
|
||||||
|
|
||||||
git clone git@gitea:GeorgeSG/gardev-startpage.git ~/Git/gardev-startpage
|
|
||||||
+6
-27
@@ -8,6 +8,7 @@
|
|||||||
- ~/.config
|
- ~/.config
|
||||||
- ~/.config/bash
|
- ~/.config/bash
|
||||||
- ~/.config/tmux
|
- ~/.config/tmux
|
||||||
|
- ~/.claude
|
||||||
|
|
||||||
- link:
|
- link:
|
||||||
# git
|
# git
|
||||||
@@ -39,38 +40,16 @@
|
|||||||
~/.zshenv: home/zshenv
|
~/.zshenv: home/zshenv
|
||||||
~/.config/zsh: home/config/zsh
|
~/.config/zsh: home/config/zsh
|
||||||
|
|
||||||
|
# claude code
|
||||||
|
~/.claude/skills: home/claude/skills
|
||||||
|
|
||||||
# mac os
|
# mac os
|
||||||
~/.hushlogin:
|
~/.hushlogin:
|
||||||
if: '[ `uname` = Darwin ]'
|
if: '[ `uname` = Darwin ]'
|
||||||
path: macos/hushlogin
|
path: macos/hushlogin
|
||||||
|
|
||||||
- shell:
|
- shell:
|
||||||
- git submodule sync --recursive
|
- command: ./shell/setup.sh
|
||||||
# the following have to run after linking ~/.gitconfig
|
stdin: true
|
||||||
- git update-submodules
|
|
||||||
- >
|
|
||||||
git cleanall -f
|
|
||||||
home/config/tmux/plugins
|
|
||||||
home/config/bash/bash-git-prompt
|
|
||||||
home/config/zsh/plugins
|
|
||||||
home/vim/bundle/
|
|
||||||
|
|
||||||
# install BD zsh plugin - this needs to happen after the cleanall
|
|
||||||
- mkdir -p ~/.config/zsh/plugins/bd
|
|
||||||
- curl https://raw.githubusercontent.com/Tarrasch/zsh-bd/master/bd.zsh > ~/.config/zsh/plugins/bd/bd.zsh
|
|
||||||
|
|
||||||
- stdin: true
|
|
||||||
stdout: true
|
stdout: true
|
||||||
stderr: true
|
stderr: true
|
||||||
command: >
|
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
|
||||||
./install_macos.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
- stdin: true
|
|
||||||
stdout: true
|
|
||||||
stderr: true
|
|
||||||
command: >
|
|
||||||
if [ "$(uname)" = "Linux" ]; then
|
|
||||||
./install_linux.sh
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
description: Setting Mac OS defaults
|
description: Setting Mac OS defaults
|
||||||
command: >
|
command: >
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
if [ "$(uname)" = "Darwin" ]; then
|
||||||
xcode-select --install
|
xcode-select -p &>/dev/null || xcode-select --install
|
||||||
./macos/macos_setup.sh
|
./shell/macos_setup.sh
|
||||||
fi
|
fi
|
||||||
-
|
-
|
||||||
command: ./clone.sh
|
command: ./shell/clone.sh
|
||||||
description: Cloning Git repos
|
description: Cloning Git repos
|
||||||
stdout: true
|
stdout: true
|
||||||
quiet: false
|
quiet: false
|
||||||
|
|||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
[ -d ~/Git/advent-of-code ] || git clone git@github.com:GeorgeSG/advent-of-code.git ~/Git/advent-of-code
|
||||||
|
[ -d ~/Git/gar.dev ] || git clone git@github.com:GeorgeSG/gar.dev.git ~/Git/gar.dev
|
||||||
|
[ -d ~/Git/lovelace-time-picker-card ] || git clone git@github.com:GeorgeSG/lovelace-time-picker-card.git ~/Git/lovelace-time-picker-card
|
||||||
|
[ -d ~/Git/PhotonaydenovV2 ] || git clone git@github.com:GeorgeSG/PhotonaydenovV2.git ~/Git/PhotonaydenovV2
|
||||||
|
[ -d ~/Git/promptle ] || git clone git@github.com:GeorgeSG/promptle.git ~/Git/promptle
|
||||||
|
[ -d ~/Git/sarah ] || git clone git@github.com:GeorgeSG/sarah.git ~/Git/sarah
|
||||||
|
[ -d ~/Git/sub.rehab ] || git clone git@github.com:GeorgeSG/sub.rehab.git ~/Git/sub.rehab
|
||||||
|
[ -d ~/Git/taxbro.io ] || git clone git@github.com:GeorgeSG/taxbro.io.git ~/Git/taxbro.io
|
||||||
|
|
||||||
|
[ -d ~/Git/gardev-startpage ] || git clone git@gitea:GeorgeSG/gardev-startpage.git ~/Git/gardev-startpage
|
||||||
@@ -2,13 +2,15 @@
|
|||||||
|
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y zsh
|
sudo apt-get install -y zsh
|
||||||
chsh -s $(which zsh)
|
zsh_path="$(command -v zsh)"
|
||||||
|
if [ "$SHELL" != "$zsh_path" ]; then
|
||||||
|
sudo chsh -s "$zsh_path" "$(id -un)"
|
||||||
|
fi
|
||||||
|
|
||||||
sudo apt-get install -y \
|
sudo apt-get install -y \
|
||||||
bash \
|
bash \
|
||||||
btop \
|
btop \
|
||||||
coreutils \
|
coreutils \
|
||||||
docker \
|
|
||||||
duf \
|
duf \
|
||||||
eza \
|
eza \
|
||||||
findutils \
|
findutils \
|
||||||
@@ -29,10 +31,12 @@ sudo apt-get install -y \
|
|||||||
zsh \
|
zsh \
|
||||||
zsh-syntax-highlighting
|
zsh-syntax-highlighting
|
||||||
|
|
||||||
sudo snap install doggo
|
if command -v snap >/dev/null 2>&1; then
|
||||||
sudo snap install dust
|
sudo snap install doggo
|
||||||
# sudo snap install fastfetch
|
sudo snap install dust
|
||||||
# sudo snap install fd
|
# sudo snap install fastfetch
|
||||||
# sudo snap install jnv
|
# sudo snap install fd
|
||||||
# sudo snap install kondo
|
# sudo snap install jnv
|
||||||
# sudo snap install tokei
|
# sudo snap install kondo
|
||||||
|
# sudo snap install tokei
|
||||||
|
fi
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
# Install Brew
|
# Install Brew
|
||||||
if test ! $(which brew); then
|
if ! command -v brew &>/dev/null; then
|
||||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
|
||||||
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.bash_profile.local
|
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.bash_profile.local
|
||||||
Executable
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
git submodule sync --recursive
|
||||||
|
# the following have to run after linking ~/.gitconfig
|
||||||
|
git update-submodules
|
||||||
|
git cleanall -f \
|
||||||
|
home/config/tmux/plugins \
|
||||||
|
home/config/bash/bash-git-prompt \
|
||||||
|
home/config/zsh/plugins \
|
||||||
|
home/vim/plugged/
|
||||||
|
|
||||||
|
# install BD zsh plugin - this needs to happen after the cleanall
|
||||||
|
mkdir -p ~/.config/zsh/plugins/bd
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/Tarrasch/zsh-bd/master/bd.zsh \
|
||||||
|
> ~/.config/zsh/plugins/bd/bd.zsh
|
||||||
|
|
||||||
|
# Platform-specific
|
||||||
|
case "$(uname)" in
|
||||||
|
Darwin) ./shell/install_apps_macos.sh ;;
|
||||||
|
Linux) ./shell/install_apps_linux.sh ;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user