initial commit
This commit is contained in:
65
CHECKLIST.md
Normal file
65
CHECKLIST.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Dotfiles Checklist — Linux Mint 22.3
|
||||
|
||||
Planned structure (inspired by jonhoo, adapted for Cinnamon/apt):
|
||||
|
||||
```
|
||||
configs/
|
||||
├── CHECKLIST.md ← this file
|
||||
├── shell/
|
||||
│ ├── .bashrc ← interactive shell: prompt, aliases, history, completions
|
||||
│ ├── .bash_profile ← login shell: sources .bashrc, sets PATH
|
||||
│ └── .bash_aliases ← extracted aliases (sourced from .bashrc)
|
||||
├── tmux/
|
||||
│ └── .tmux.conf ← prefix, keybinds, catppuccin theme, tpm plugins
|
||||
├── alacritty/
|
||||
│ └── .config/alacritty/alacritty.toml ← font, colors, keybinds, window
|
||||
├── git/
|
||||
│ └── .gitconfig ← user, aliases, diff algorithm, merge tool
|
||||
└── install/
|
||||
├── bootstrap.sh ← run first: installs stow + calls all install scripts
|
||||
├── apt-packages.sh ← base system packages via apt
|
||||
├── rust.sh ← rustup + cargo tools (alacritty, bat, fd, ripgrep, etc.)
|
||||
├── docker.sh ← docker engine + lazydocker
|
||||
├── node.sh ← nvm + node LTS + pnpm
|
||||
└── tools.sh ← misc: stow, fzf, starship, zoxide, etc.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
### Shell (`configs/shell/`)
|
||||
- [ ] `.bashrc` — merge current custom bits (PS1, pnpm, nvm, java, jbang, deno paths) into a clean, commented version
|
||||
- [ ] `.bash_profile` — source `.bashrc` for login shells, set XDG env vars
|
||||
- [ ] `.bash_aliases` — ls, git, docker, cargo shortcuts
|
||||
|
||||
### Tmux (`configs/tmux/`)
|
||||
- [ ] `.tmux.conf` — set prefix (Ctrl+S like jonhoo, or Ctrl+A), vi keys, catppuccin theme, tpm bootstrap, pane navigation
|
||||
- tpm already in `~/.tmux/plugins/tpm`
|
||||
- catppuccin already in `~/.tmux/plugins/catppuccin`
|
||||
|
||||
### Alacritty (`configs/alacritty/`)
|
||||
- [ ] `alacritty.toml` — codify current setup (FiraMono Nerd Font Mono 15pt, maximized, no decorations, Alt+C/V)
|
||||
- [ ] add catppuccin color scheme import
|
||||
|
||||
### Git (`configs/git/`)
|
||||
- [ ] `.gitconfig` — user info, useful aliases (lg, s, f), patience diff, merge tool
|
||||
|
||||
### Install Scripts (`configs/install/`)
|
||||
- [ ] `bootstrap.sh` — entry point: sudo apt update, calls sub-scripts, runs stow
|
||||
- [ ] `apt-packages.sh` — git, curl, wget, build-essential, tmux, fzf, ripgrep, fd-find, bat, stow, jq, unzip
|
||||
- [ ] `rust.sh` — check/install rustup, `rustup toolchain install stable`, cargo tools: `alacritty bat fd-find ripgrep cargo-watch`
|
||||
- [ ] `docker.sh` — check/install docker engine via apt, add user to docker group, install lazydocker
|
||||
- [ ] `node.sh` — check/install nvm, install node LTS, install pnpm
|
||||
- [ ] `tools.sh` — starship prompt, zoxide (cd replacement), fzf shell integration
|
||||
|
||||
---
|
||||
|
||||
## Tools already installed on this machine (skip install steps)
|
||||
- tmux, alacritty, rustup, docker, lazydocker, git, curl
|
||||
- nvm + node, pnpm, deno, jbang, Java (corretto-23)
|
||||
|
||||
## Notes
|
||||
- Use `stow -Sv <dir>` to symlink a config group into `~`
|
||||
- jonhoo reference configs are in `../jonhoo/` — check there for inspiration
|
||||
- Keep catppuccin as the color theme (already in tmux, alacritty has FiraMono Nerd Font)
|
||||
80
alacritty/.config/alacritty/alacritty.toml
Normal file
80
alacritty/.config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,80 @@
|
||||
# ─── window ───────────────────────────────────────────────────────────────────
|
||||
[window]
|
||||
startup_mode = "Maximized"
|
||||
decorations = "None"
|
||||
padding = { x = 8, y = 8 }
|
||||
|
||||
# ─── font ─────────────────────────────────────────────────────────────────────
|
||||
[font]
|
||||
size = 15.0
|
||||
|
||||
[font.normal]
|
||||
family = "FiraMono Nerd Font Mono"
|
||||
style = "Regular"
|
||||
|
||||
[font.bold]
|
||||
family = "FiraMono Nerd Font Mono"
|
||||
style = "Bold"
|
||||
|
||||
[font.italic]
|
||||
family = "FiraMono Nerd Font Mono"
|
||||
style = "Italic"
|
||||
|
||||
# ─── scrolling ────────────────────────────────────────────────────────────────
|
||||
[scrolling]
|
||||
history = 10000
|
||||
multiplier = 3
|
||||
|
||||
# ─── selection ────────────────────────────────────────────────────────────────
|
||||
[selection]
|
||||
save_to_clipboard = false
|
||||
|
||||
# ─── cursor ───────────────────────────────────────────────────────────────────
|
||||
[cursor]
|
||||
style = { shape = "Block", blinking = "On" }
|
||||
blink_interval = 500
|
||||
|
||||
# ─── colors: catppuccin mocha ─────────────────────────────────────────────────
|
||||
[colors.primary]
|
||||
background = "#1e1e2e"
|
||||
foreground = "#cdd6f4"
|
||||
|
||||
[colors.cursor]
|
||||
text = "#1e1e2e"
|
||||
cursor = "#f5e0dc"
|
||||
|
||||
[colors.normal]
|
||||
black = "#45475a"
|
||||
red = "#f38ba8"
|
||||
green = "#a6e3a1"
|
||||
yellow = "#f9e2af"
|
||||
blue = "#89b4fa"
|
||||
magenta = "#f5c2e7"
|
||||
cyan = "#94e2d5"
|
||||
white = "#bac2de"
|
||||
|
||||
[colors.bright]
|
||||
black = "#585b70"
|
||||
red = "#f38ba8"
|
||||
green = "#a6e3a1"
|
||||
yellow = "#f9e2af"
|
||||
blue = "#89b4fa"
|
||||
magenta = "#f5c2e7"
|
||||
cyan = "#94e2d5"
|
||||
white = "#a6adc8"
|
||||
|
||||
# ─── keybindings ──────────────────────────────────────────────────────────────
|
||||
[[keyboard.bindings]]
|
||||
key = "V"
|
||||
mods = "Alt"
|
||||
action = "Paste"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "C"
|
||||
mods = "Alt"
|
||||
action = "Copy"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "Return"
|
||||
mods = "Alt|Shift"
|
||||
action = "ToggleFullscreen"
|
||||
32
git/.gitconfig
Normal file
32
git/.gitconfig
Normal file
@@ -0,0 +1,32 @@
|
||||
[user]
|
||||
name = stefiosif
|
||||
email = si.iosifidis@gmail.com
|
||||
|
||||
[core]
|
||||
editor = code --wait
|
||||
autocrlf = input
|
||||
excludesfile = ~/.gitignore_global
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
[push]
|
||||
default = current
|
||||
autoSetupRemote = true
|
||||
|
||||
[pull]
|
||||
rebase = true
|
||||
|
||||
[merge]
|
||||
tool = code
|
||||
conflictstyle = diff3
|
||||
|
||||
[diff]
|
||||
algorithm = patience
|
||||
colorMoved = default
|
||||
|
||||
[color]
|
||||
ui = auto
|
||||
|
||||
[credential]
|
||||
helper = store
|
||||
22
git/.gitignore_global
Normal file
22
git/.gitignore_global
Normal file
@@ -0,0 +1,22 @@
|
||||
# ─── OS ─── #
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# ─── editors ─── #
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# ─── rust ─── #
|
||||
target/
|
||||
|
||||
# ─── node ─── #
|
||||
node_modules/
|
||||
|
||||
# ─── env / secrets ─── #
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
44
install/apt-packages.sh
Executable file
44
install/apt-packages.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "==> Installing base apt packages..."
|
||||
|
||||
sudo apt update
|
||||
|
||||
PACKAGES=(
|
||||
# essentials
|
||||
build-essential
|
||||
curl
|
||||
wget
|
||||
git
|
||||
unzip
|
||||
zip
|
||||
stow
|
||||
|
||||
# terminal
|
||||
tmux
|
||||
|
||||
# search / file tools
|
||||
ripgrep
|
||||
fd-find
|
||||
tree
|
||||
|
||||
# network
|
||||
openssh-client
|
||||
rsync
|
||||
|
||||
# libs often needed for compiling things
|
||||
pkg-config
|
||||
libssl-dev
|
||||
libfontconfig1-dev
|
||||
)
|
||||
|
||||
sudo apt install -y "${PACKAGES[@]}"
|
||||
|
||||
if ! command -v fd &>/dev/null && command -v fdfind &>/dev/null; then
|
||||
mkdir -p "$HOME/.local/bin"
|
||||
ln -sf "$(which fdfind)" "$HOME/.local/bin/fd"
|
||||
echo " linked fdfind -> fd"
|
||||
fi
|
||||
|
||||
echo "==> apt packages done."
|
||||
49
install/bootstrap.sh
Executable file
49
install/bootstrap.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# bootstrap.sh — run this on a fresh Linux Mint install
|
||||
set -euo pipefail
|
||||
|
||||
DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
CONFIGS_DIR="$DOTFILES_DIR/configs"
|
||||
|
||||
echo "==> Dotfiles bootstrap"
|
||||
echo " dotfiles: $DOTFILES_DIR"
|
||||
echo ""
|
||||
|
||||
# ─── install packages and tools ───────────────────────────────────────────────
|
||||
bash "$CONFIGS_DIR/install/apt-packages.sh"
|
||||
bash "$CONFIGS_DIR/install/rust.sh"
|
||||
bash "$CONFIGS_DIR/install/docker.sh"
|
||||
bash "$CONFIGS_DIR/install/node.sh"
|
||||
bash "$CONFIGS_DIR/install/tools.sh"
|
||||
bash "$CONFIGS_DIR/install/fonts.sh"
|
||||
|
||||
# ─── symlink configs with stow ────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "==> Symlinking configs with stow..."
|
||||
|
||||
cd "$CONFIGS_DIR"
|
||||
|
||||
for group in shell tmux alacritty git vscode; do
|
||||
echo " stow $group -> ~"
|
||||
stow -v --target="$HOME" "$group"
|
||||
done
|
||||
|
||||
# ─── tmux plugins ─────────────────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "==> Installing tmux plugins (tpm)..."
|
||||
if [ ! -d "$HOME/.tmux/plugins/tpm" ]; then
|
||||
git clone https://github.com/tmux-plugins/tpm "$HOME/.tmux/plugins/tpm"
|
||||
fi
|
||||
# install plugins headlessly
|
||||
"$HOME/.tmux/plugins/tpm/bin/install_plugins" || true
|
||||
|
||||
echo ""
|
||||
echo "==> Installing VSCode extensions..."
|
||||
if command -v code &>/dev/null; then
|
||||
grep -v '^#' "$CONFIGS_DIR/vscode/extensions.txt" | grep -v '^$' | xargs -L1 code --install-extension
|
||||
else
|
||||
echo " code not found, skipping extensions"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "==> Done! Open a new terminal or run: source ~/.bashrc"
|
||||
20
install/docker.sh
Executable file
20
install/docker.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "==> Setting up Docker..."
|
||||
|
||||
if command -v docker &>/dev/null; then
|
||||
echo " docker already installed: $(docker --version)"
|
||||
else
|
||||
echo " installing docker engine..."
|
||||
# official docker install script (works on Ubuntu/Mint)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
fi
|
||||
|
||||
# add current user to docker group so we don't need sudo
|
||||
if ! groups | grep -q docker; then
|
||||
sudo usermod -aG docker "$USER"
|
||||
echo " added $USER to docker group — log out and back in to apply"
|
||||
fi
|
||||
|
||||
echo "==> Docker done."
|
||||
27
install/fonts.sh
Executable file
27
install/fonts.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "==> Installing fonts..."
|
||||
|
||||
FONTS_DIR="$HOME/.local/share/fonts"
|
||||
mkdir -p "$FONTS_DIR"
|
||||
|
||||
# FiraCode Nerd Font (includes FiraMono Nerd Font Mono)
|
||||
FIRA_VERSION="3.3.0"
|
||||
FIRA_ZIP="FiraCode.zip"
|
||||
FIRA_URL="https://github.com/ryanoasis/nerd-fonts/releases/download/v${FIRA_VERSION}/${FIRA_ZIP}"
|
||||
|
||||
if fc-list | grep -qi "FiraCode Nerd Font"; then
|
||||
echo " FiraCode Nerd Font already installed, skipping"
|
||||
else
|
||||
echo " downloading FiraCode Nerd Font v${FIRA_VERSION}..."
|
||||
TMP_DIR=$(mktemp -d)
|
||||
curl -fsSL "$FIRA_URL" -o "$TMP_DIR/$FIRA_ZIP"
|
||||
unzip -q "$TMP_DIR/$FIRA_ZIP" -d "$TMP_DIR/fira"
|
||||
cp "$TMP_DIR"/fira/*.ttf "$FONTS_DIR/"
|
||||
rm -rf "$TMP_DIR"
|
||||
fc-cache -f "$FONTS_DIR"
|
||||
echo " FiraCode Nerd Font installed"
|
||||
fi
|
||||
|
||||
echo "==> Fonts done."
|
||||
29
install/node.sh
Executable file
29
install/node.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "==> Setting up Node.js..."
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
|
||||
if [ -d "$NVM_DIR" ]; then
|
||||
echo " nvm already installed, loading..."
|
||||
. "$NVM_DIR/nvm.sh"
|
||||
else
|
||||
echo " installing nvm..."
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
|
||||
. "$NVM_DIR/nvm.sh"
|
||||
fi
|
||||
|
||||
echo " installing node LTS..."
|
||||
nvm install --lts
|
||||
nvm use --lts
|
||||
nvm alias default node
|
||||
|
||||
echo "==> Installing pnpm..."
|
||||
if command -v pnpm &>/dev/null; then
|
||||
echo " pnpm already installed: $(pnpm --version)"
|
||||
else
|
||||
npm install -g pnpm
|
||||
fi
|
||||
|
||||
echo "==> Node done."
|
||||
38
install/rust.sh
Executable file
38
install/rust.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "==> Setting up Rust..."
|
||||
|
||||
if command -v rustup &>/dev/null; then
|
||||
echo " rustup already installed, updating..."
|
||||
rustup update stable
|
||||
else
|
||||
echo " installing rustup..."
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
|
||||
source "$HOME/.cargo/env"
|
||||
fi
|
||||
|
||||
rustup toolchain install stable
|
||||
rustup component add clippy rustfmt rust-analyzer
|
||||
|
||||
echo "==> Installing cargo tools..."
|
||||
|
||||
CARGO_TOOLS=(
|
||||
cargo-watch # watch for changes and re-run
|
||||
cargo-expand # expand macros
|
||||
cargo-nextest # faster test runner
|
||||
cargo-flamegraph # CPU profiling / flamegraphs
|
||||
cargo-deny # lint deps (licenses, duplicates, advisories)
|
||||
cargo-mutants # mutation testing
|
||||
cargo-audit # check deps for known vulnerabilities
|
||||
)
|
||||
|
||||
for tool in "${CARGO_TOOLS[@]}"; do
|
||||
if cargo install --list | grep -q "^${tool} "; then
|
||||
echo " $tool already installed, skipping"
|
||||
else
|
||||
cargo install "$tool"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "==> Rust done."
|
||||
11
install/tools.sh
Executable file
11
install/tools.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "==> Installing extra tools..."
|
||||
|
||||
# ─── stow ─────────────────────────────────────────────────────────────────────
|
||||
if ! command -v stow &>/dev/null; then
|
||||
sudo apt install -y stow
|
||||
fi
|
||||
|
||||
echo "==> Extra tools done."
|
||||
22
shell/.bash_aliases
Normal file
22
shell/.bash_aliases
Normal file
@@ -0,0 +1,22 @@
|
||||
# ─── navigation ───────────────────────────────────────────────────────────────
|
||||
alias ..='cd ..'
|
||||
alias ...='cd ../..'
|
||||
alias ....='cd ../../..'
|
||||
|
||||
# ─── ls ───────────────────────────────────────────────────────────────────────
|
||||
alias ls='ls --color=auto'
|
||||
alias ll='ls -alF'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
|
||||
# ─── grep ─────────────────────────────────────────────────────────────────────
|
||||
alias grep='grep --color=auto'
|
||||
|
||||
# ─── system ───────────────────────────────────────────────────────────────────
|
||||
alias update='sudo apt update && sudo apt upgrade -y'
|
||||
alias install='sudo apt install'
|
||||
alias search='apt search'
|
||||
|
||||
# ─── misc ─────────────────────────────────────────────────────────────────────
|
||||
alias reload='source ~/.bashrc'
|
||||
alias path='echo $PATH | tr ":" "\n"'
|
||||
13
shell/.bash_profile
Normal file
13
shell/.bash_profile
Normal file
@@ -0,0 +1,13 @@
|
||||
# ~/.bash_profile — login shell
|
||||
# source .bashrc for interactive login shells
|
||||
[ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"
|
||||
|
||||
# ─── XDG ──────────────────────────────────────────────────────────────────────
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
|
||||
# ─── default apps ─────────────────────────────────────────────────────────────
|
||||
export EDITOR="code --wait" # change to nvim if you switch editors
|
||||
export VISUAL="$EDITOR"
|
||||
export BROWSER="google-chrome"
|
||||
73
shell/.bashrc
Normal file
73
shell/.bashrc
Normal file
@@ -0,0 +1,73 @@
|
||||
# ~/.bashrc — interactive shell config
|
||||
# not interactive? bail out
|
||||
case $- in *i*) ;; *) return ;; esac
|
||||
|
||||
# ─── system defaults ──────────────────────────────────────────────────────────
|
||||
[ -f /etc/bash.bashrc ] && source /etc/bash.bashrc
|
||||
|
||||
# ─── history ──────────────────────────────────────────────────────────────────
|
||||
HISTCONTROL=ignoreboth
|
||||
HISTSIZE=10000
|
||||
HISTFILESIZE=20000
|
||||
HISTIGNORE="clear:bg:fg:cd:cd -:cd ..:exit:date:ls:l:ll:* --help"
|
||||
shopt -s histappend
|
||||
shopt -s checkwinsize
|
||||
|
||||
# ─── prompt ───────────────────────────────────────────────────────────────────
|
||||
# green user, blue path — simple and readable
|
||||
PS1='\[\e[1;32m\]\u\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '
|
||||
|
||||
# ─── colors ───────────────────────────────────────────────────────────────────
|
||||
if [ -x /usr/bin/dircolors ]; then
|
||||
eval "$(dircolors -b ~/.dircolors 2>/dev/null || dircolors -b)"
|
||||
fi
|
||||
|
||||
# ─── aliases ──────────────────────────────────────────────────────────────────
|
||||
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
|
||||
|
||||
# ─── completions ──────────────────────────────────────────────────────────────
|
||||
if ! shopt -oq posix; then
|
||||
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||
. /usr/share/bash-completion/bash_completion
|
||||
elif [ -f /etc/bash_completion ]; then
|
||||
. /etc/bash_completion
|
||||
fi
|
||||
fi
|
||||
|
||||
# ─── fzf ──────────────────────────────────────────────────────────────────────
|
||||
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
|
||||
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
|
||||
|
||||
# ─── less ─────────────────────────────────────────────────────────────────────
|
||||
export LESS="-R --use-color"
|
||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||
|
||||
# ─── rust / cargo ─────────────────────────────────────────────────────────────
|
||||
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
|
||||
|
||||
# ─── node / nvm ───────────────────────────────────────────────────────────────
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
||||
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
|
||||
|
||||
# ─── pnpm ─────────────────────────────────────────────────────────────────────
|
||||
export PNPM_HOME="$HOME/.local/share/pnpm"
|
||||
case ":$PATH:" in
|
||||
*":$PNPM_HOME:"*) ;;
|
||||
*) export PATH="$PNPM_HOME:$PATH" ;;
|
||||
esac
|
||||
|
||||
# ─── deno ─────────────────────────────────────────────────────────────────────
|
||||
[ -f "$HOME/.deno/env" ] && . "$HOME/.deno/env"
|
||||
|
||||
# ─── java ─────────────────────────────────────────────────────────────────────
|
||||
export JAVA_HOME="$HOME/.jdks/corretto-23.0.2"
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
|
||||
# ─── jbang ────────────────────────────────────────────────────────────────────
|
||||
export PATH="$HOME/.jbang/bin:$PATH"
|
||||
alias j!=jbang
|
||||
|
||||
# ─── local bin ────────────────────────────────────────────────────────────────
|
||||
[ -d "$HOME/.local/bin" ] && export PATH="$HOME/.local/bin:$PATH"
|
||||
[ -d "$HOME/bin" ] && export PATH="$HOME/bin:$PATH"
|
||||
19
tmux/.tmux.conf
Normal file
19
tmux/.tmux.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
# ─── plugins ──────────────────────────────────────────────────────────────────
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||
|
||||
# ─── mouse ────────────────────────────────────────────────────────────────────
|
||||
set -g mouse on
|
||||
|
||||
# ─── navigation ───────────────────────────────────────────────────────────────
|
||||
bind -n C-n next-window
|
||||
bind -n C-p previous-window
|
||||
|
||||
# ─── catppuccin ───────────────────────────────────────────────────────────────
|
||||
set -g @plugin 'catppuccin/tmux'
|
||||
set -g @catppuccin_flavour 'mocha'
|
||||
set -g @catppuccin_window_text " #W"
|
||||
set -g @catppuccin_window_current_text " #W"
|
||||
|
||||
# ─── initialize tpm (keep at bottom) ──────────────────────────────────────────
|
||||
run '~/.tmux/plugins/tpm/tpm'
|
||||
37
vscode/.config/Code/User/keybindings.json
Normal file
37
vscode/.config/Code/User/keybindings.json
Normal file
@@ -0,0 +1,37 @@
|
||||
// VSCode keybindings
|
||||
[
|
||||
// navigate back/forward with Alt+Left/Right (like browser)
|
||||
{
|
||||
"key": "alt+left",
|
||||
"command": "workbench.action.navigateBack",
|
||||
"when": "canNavigateBack"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+alt+-",
|
||||
"command": "-workbench.action.navigateBack",
|
||||
"when": "canNavigateBack"
|
||||
},
|
||||
{
|
||||
"key": "alt+right",
|
||||
"command": "workbench.action.navigateForward",
|
||||
"when": "canNavigateForward"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+-",
|
||||
"command": "-workbench.action.navigateForward",
|
||||
"when": "canNavigateForward"
|
||||
},
|
||||
// shift+enter in terminal sends a line continuation
|
||||
{
|
||||
"key": "shift+enter",
|
||||
"command": "workbench.action.terminal.sendSequence",
|
||||
"args": { "text": "\\\r\n" },
|
||||
"when": "terminalFocus"
|
||||
},
|
||||
// disable default inlay hint escape binding
|
||||
{
|
||||
"key": "escape",
|
||||
"command": "-inlayHints.stopReadingLineWithHint",
|
||||
"when": "isReadingLineWithInlayHints"
|
||||
}
|
||||
]
|
||||
58
vscode/.config/Code/User/settings.json
Normal file
58
vscode/.config/Code/User/settings.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"workbench.colorTheme": "ZED One Theme Dark",
|
||||
"workbench.startupEditor": "none",
|
||||
"workbench.editor.splitInGroupLayout": "vertical",
|
||||
"workbench.editor.wrapTabs": true,
|
||||
|
||||
// editor
|
||||
"editor.fontFamily": "'IBM Plex Mono', 'FiraCode', 'DejaVu Sans Mono', monospace",
|
||||
"editor.fontWeight": "500",
|
||||
"editor.fontSize": 17,
|
||||
"editor.minimap.enabled": false,
|
||||
"editor.inlayHints.enabled": "on",
|
||||
|
||||
// terminal
|
||||
"terminal.integrated.fontSize": 15.5,
|
||||
"debug.console.fontSize": 15.5,
|
||||
|
||||
// git
|
||||
"git.enableSmartCommit": true,
|
||||
"git.autofetch": true,
|
||||
"git.confirmSync": false,
|
||||
"git.openRepositoryInParentFolders": "always",
|
||||
|
||||
// rust
|
||||
"rust-analyzer.checkOnSave": true,
|
||||
|
||||
// svelte
|
||||
"svelte.enable-ts-plugin": true,
|
||||
|
||||
// claude code
|
||||
"claudeCode.preferredLocation": "panel",
|
||||
"claudeCode.useTerminal": true,
|
||||
|
||||
// misc
|
||||
"extensions.ignoreRecommendations": true,
|
||||
"explorer.confirmDelete": false,
|
||||
"explorer.confirmDragAndDrop": false,
|
||||
"diffEditor.ignoreTrimWhitespace": false,
|
||||
"security.workspace.trust.untrustedFiles": "open",
|
||||
"lldb.suppressUpdateNotifications": true,
|
||||
"dotenv.enableAutocloaking": false,
|
||||
"liveServer.settings.donotShowInfoMsg": true,
|
||||
"liveServer.settings.donotVerifyTags": true,
|
||||
|
||||
"files.associations": {
|
||||
".env*": "dotenv"
|
||||
},
|
||||
|
||||
"errorLens.enabledDiagnosticLevels": ["error", "warning", "info", "hint"],
|
||||
|
||||
"[html]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
|
||||
"editor.tokenColorCustomizations": {
|
||||
"textMateRules": []
|
||||
}
|
||||
}
|
||||
57
vscode/extensions.txt
Normal file
57
vscode/extensions.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
# VSCode extensions
|
||||
# Install all with: cat extensions.txt | xargs -L1 code --install-extension
|
||||
|
||||
# AI
|
||||
anthropic.claude-code
|
||||
github.copilot-chat
|
||||
|
||||
# themes
|
||||
arrrrny.zed-one-theme
|
||||
drewxs.tokyo-night-dark
|
||||
enkia.tokyo-night
|
||||
|
||||
# rust
|
||||
rust-lang.rust-analyzer
|
||||
tauri-apps.tauri-vscode
|
||||
vadimcn.vscode-lldb
|
||||
fill-labs.dependi
|
||||
|
||||
# web / js / ts
|
||||
bradlc.vscode-tailwindcss
|
||||
dbaeumer.vscode-eslint
|
||||
esbenp.prettier-vscode
|
||||
svelte.svelte-vscode
|
||||
vue.volar
|
||||
yoavbls.pretty-ts-errors
|
||||
ritwickdey.liveserver
|
||||
|
||||
# c / c++
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
ms-vscode.cpptools
|
||||
ms-vscode.cpptools-extension-pack
|
||||
ms-vscode.cpp-devtools
|
||||
|
||||
# python
|
||||
ms-python.python
|
||||
ms-python.debugpy
|
||||
ms-python.vscode-pylance
|
||||
ms-python.vscode-python-envs
|
||||
|
||||
# devops / infra
|
||||
github.vscode-github-actions
|
||||
ms-vscode-remote.remote-ssh
|
||||
ms-vscode-remote.remote-ssh-edit
|
||||
ms-vscode.remote-explorer
|
||||
|
||||
# data / config
|
||||
dotenv.dotenv-vscode
|
||||
redhat.vscode-yaml
|
||||
tamasfe.even-better-toml
|
||||
nefrob.vscode-just-syntax
|
||||
|
||||
# misc
|
||||
humao.rest-client
|
||||
usernamehw.errorlens
|
||||
wayou.vscode-todo-highlight
|
||||
yzhang.markdown-all-in-one
|
||||
sidthesloth.html5-boilerplate
|
||||
Reference in New Issue
Block a user