oh-my-zsh rework + LiteLLM model presets

This commit is contained in:
2026-05-20 21:55:29 +02:00
commit 6eef4f8077
5 changed files with 120 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
# dotfiles
Personal dotfiles for Coder workspaces. Coder clones this repo and runs install.sh
on workspace start (configured via the workspace template parameter dotfiles_uri).
## What gets installed
- zsh (if missing) + oh-my-zsh + zsh-autosuggestions + zsh-syntax-highlighting
- agnoster theme, plugins: git docker python pip uv vscode command-not-found
- ~/.zshrc, ~/.gitconfig, ~/.config/models.env (sourced by zshrc)
- Default shell flipped to zsh
## Model presets
The workspace template bakes the LiteLLM connection (OPENAI_API_KEY +
OPENAI_BASE_URL pointing at LAN LiteLLM). models.env adds a tiered picker:
`MODEL_CODE`, `MODEL_BIG_CODE`, `MODEL_GENERAL`, `MODEL_FAST`,
`MODEL_REASON`, `MODEL_PRO`, `MODEL_EMBED`.
## Layout
- install.sh — idempotent installer, runs on every workspace start
- home/ — contents mirrored into $HOME
+9
View File
@@ -0,0 +1,9 @@
# LiteLLM model presets. Sourced by .zshrc; overridable per-shell.
# (Connection envs are baked into the workspace template; these are the picker.)
export MODEL_CODE='qwen3-coder-30b-a3b-instruct'
export MODEL_BIG_CODE='devstral-2-123b-instruct-2512'
export MODEL_GENERAL='qwen3.5-397b-a17b'
export MODEL_FAST='mistral-small-latest'
export MODEL_REASON='deepseek-r1-distill-llama-70b'
export MODEL_PRO='gemini-2.5-pro'
export MODEL_EMBED='text-embedding-3-large'
+19
View File
@@ -0,0 +1,19 @@
[user]
name = fkrebs
email = fkrebs@nucli.de
[init]
defaultBranch = main
[pull]
rebase = true
[push]
default = simple
autoSetupRemote = true
[core]
editor = nano
[diff]
algorithm = histogram
[alias]
s = status -sb
co = checkout
br = branch
lg = log --oneline --graph --decorate -20
+34
View File
@@ -0,0 +1,34 @@
# Oh My Zsh
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="agnoster"
plugins=(git docker python pip uv vscode command-not-found zsh-autosuggestions zsh-syntax-highlighting)
source "$ZSH/oh-my-zsh.sh"
# User PATH
export PATH="$HOME/.local/bin:$PATH"
export EDITOR="${EDITOR:-nano}"
export MPLBACKEND="${MPLBACKEND:-Agg}"
# Source LiteLLM model presets if dotfiles delivered them
[ -f "$HOME/.config/models.env" ] && source "$HOME/.config/models.env"
# Aliases
alias ll='ls -lah --color=auto'
alias g='git'
alias gs='git status -sb'
alias gd='git diff'
alias gco='git checkout'
alias uvr='uv run'
alias uvs='uv sync'
# Model-switch aliases for aider (override per-call)
alias aider-code='AIDER_MODEL=$MODEL_CODE aider'
alias aider-big='AIDER_MODEL=$MODEL_BIG_CODE aider'
alias aider-reason='AIDER_MODEL=$MODEL_REASON aider'
alias aider-fast='AIDER_MODEL=$MODEL_FAST aider'
mkproj() {
local name="$1"
[ -z "$name" ] && echo 'usage: mkproj <name>' && return 1
mkdir -p "$HOME/work/$name" && cd "$HOME/work/$name" && uv init
}
Executable
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
# Idempotent install: ensure zsh + oh-my-zsh, then symlink configs.
set -euo pipefail
SRC=$(cd "$(dirname "$0")" && pwd)
# 1. zsh (workspace base image may or may not have it)
if ! command -v zsh >/dev/null 2>&1; then
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends zsh
fi
# 2. oh-my-zsh
if [ ! -d "$HOME/.oh-my-zsh" ]; then
RUNZSH=no CHSH=no KEEP_ZSHRC=yes \
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fi
# 3. zsh plugins (autosuggestions + syntax highlighting)
ZSH_CUSTOM=${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}
[ -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ] || \
git clone -q https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
[ -d "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" ] || \
git clone -q https://github.com/zsh-users/zsh-syntax-highlighting "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
# 4. symlink every file under home/ into $HOME (idempotent)
while IFS= read -r f; do
rel=${f#"$SRC/home/"}
mkdir -p "$HOME/$(dirname "$rel")"
ln -sf "$SRC/home/$rel" "$HOME/$rel"
done < <(find "$SRC/home" -mindepth 1 -type f)
# 5. default shell -> zsh
CURSHELL=$(getent passwd "$USER" | cut -d: -f7)
if [ "$CURSHELL" != "$(command -v zsh)" ]; then
sudo chsh -s "$(command -v zsh)" "$USER" || true
fi
echo "dotfiles installed: zsh + ohmyzsh + symlinks from $SRC/home"