Makes stacks work like arty — discovers stacks in the current directory. Explicit STACKS_DIR env var still takes precedence. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
277 lines
7.6 KiB
Markdown
Executable File
277 lines
7.6 KiB
Markdown
Executable File
<div align="center">
|
|
|
|
<pre>
|
|
_ _____ __ __ __ _ _____ ____ _ _____
|
|
| | / / | / / / //_// | / / | / __ ( ) ___/
|
|
| | / / /| | / / / ,< / |/ / /| | / /_/ //\__ \
|
|
| |/ / ___ |/ /___/ /| |/ /| / ___ |/ _, _/ ___/ /
|
|
|___/_/ |_/_____/_/ |_/_/ |_/_/ |_/_/ |_| /____/
|
|
|
|
__________ ____ ____________
|
|
/ ____/ __ \/ __ \/ ____/ ____/
|
|
/ /_ / / / / /_/ / / __/ __/
|
|
/ __/ / /_/ / _, _/ /_/ / /___
|
|
/_/ \____/_/ |_|\____/_____/
|
|
</pre>
|
|
|
|
# WHERE CODE MEETS CHAOS
|
|
|
|
[](https://www.debian.org/)
|
|
[](https://www.slayer.net/)
|
|
[](/)
|
|
[](LICENSE)
|
|
|
|
**My Debian home directory - forged in the fires of chaos, tempered with configuration files,**
|
|
**and wielded with the fury of a thousand riffs.**
|
|
|
|
*This is where dotfiles headbang and shell scripts scream.*
|
|
|
|
</div>
|
|
|
|
---
|
|
|
|
## THE ARSENAL
|
|
|
|
### WEAPONS OF MASS DEVELOPMENT
|
|
|
|
```
|
|
+-----------------------------------------------------+
|
|
| NODE.JS | Managed by nvm |
|
|
| PYTHON | Managed by pyenv |
|
|
| RUBY | Managed by rbenv |
|
|
| RUST | Managed by rustup |
|
|
| DOCKER | Containerized destruction |
|
|
+-----------------------------------------------------+
|
|
```
|
|
|
|
---
|
|
|
|
## INSTALLATION
|
|
|
|
### One-liner bootstrap
|
|
|
|
```bash
|
|
curl https://dev.pivoine.art/valknar/home/raw/branch/main/bin/setup -sSf | sh
|
|
```
|
|
|
|
**Prerequisites:** `curl` or `wget` · `sh`/`bash` · `sudo` *(for installing git/zsh if missing)*
|
|
|
|
### What the setup script does
|
|
|
|
| Step | Action |
|
|
|------|--------|
|
|
| 1 | Detects OS (Debian/Ubuntu, macOS, other Linux) |
|
|
| 2 | Installs `git` if missing — `apt-get` on Debian/Ubuntu, `xcode-select` on macOS |
|
|
| 3 | Installs `zsh` if missing, sets it as the default shell via `chsh` |
|
|
| 4 | Clones this repo into `~` via HTTPS — or `git pull` if already present *(idempotent)* |
|
|
| 5 | Runs `arty deps` — clones nvm, rbenv, pyenv, oh-my-zsh, powerlevel10k, zsh plugins |
|
|
| 6 | Installs `arty` zsh completion via `arty completion zsh --install` |
|
|
| 7 | Drops into a zsh login shell |
|
|
|
|
### After installation
|
|
|
|
```bash
|
|
p10k configure # first time: configure the Powerlevel10k prompt
|
|
|
|
arty ssh:keygen # generate an SSH key, then add it at https://dev.pivoine.art
|
|
|
|
# switch the dotfiles remote from HTTPS to SSH (after key is set up)
|
|
git -C ~ remote set-url origin ssh://git@dev.pivoine.art/valknar/home.git
|
|
```
|
|
|
|
---
|
|
|
|
## arty - REPOSITORY ORCHESTRATION
|
|
|
|
### Available Scripts
|
|
|
|
```bash
|
|
# System setup
|
|
arty debian:setup:contrib # Enable contrib/non-free repos
|
|
arty debian:upgrade # apt update && apt upgrade
|
|
arty debian:install:base # build-essential, curl, wget, git, zsh, bat, fzf, make...
|
|
arty debian:install:libs # dev libs: libffi, zlib, libyaml, libssl, libsqlite3...
|
|
arty debian:install:tools # imagemagick, rsvg-convert, ffmpeg, yt-dlp
|
|
|
|
# Development tools
|
|
arty rust:install # Rust toolchain via rustup
|
|
arty node:install # Node.js via nvm
|
|
arty node:install:base # npm + pnpm globally
|
|
arty ruby:install # Ruby via rbenv
|
|
arty ruby:install:base # bundler gem
|
|
arty python:install # Python via pyenv
|
|
arty go:install # Go via apt
|
|
arty go:install:tools # hugo (extended) + yq via go install
|
|
arty go:clean # Clear go build and module cache
|
|
arty docker:install # Docker Engine with user group
|
|
```
|
|
|
|
### What arty Manages
|
|
|
|
- **Version managers** (nvm, rbenv, pyenv)
|
|
- **Shell configuration** (Oh-My-Zsh, Powerlevel10k, zsh plugins)
|
|
|
|
---
|
|
|
|
## COMMAND LINE BRUTALITY
|
|
|
|
### Custom Scripts
|
|
|
|
Scripts live in `~/bin/` and are tracked in this repo.
|
|
|
|
- **`arty`** — repository orchestration, reads `arty.yml`
|
|
- **`stacks`** — Docker Compose stack manager (runs in current directory, or set `STACKS_DIR`)
|
|
|
|
---
|
|
|
|
## ENVIRONMENT STRUCTURE
|
|
|
|
```
|
|
~/
|
|
+-- .nvm/ # Node Version Manager
|
|
+-- .rbenv/ # Ruby Version Manager
|
|
| +-- plugins/ruby-build/
|
|
+-- .pyenv/ # Python Version Manager
|
|
+-- .oh-my-zsh/ # Oh-My-Zsh framework
|
|
+-- .zsh/
|
|
| +-- themes/
|
|
| | +-- powerlevel10k/
|
|
| +-- plugins/
|
|
| +-- zsh-autocomplete/
|
|
| +-- zsh-autosuggestions/
|
|
| +-- zsh-syntax-highlighting/
|
|
```
|
|
|
|
---
|
|
|
|
## DOTFILE HIGHLIGHTS
|
|
|
|
### Shell Configuration
|
|
- **`.zshrc`** - Oh-My-Zsh with Powerlevel10k theme
|
|
- **`.zlogin`** - Login script (mounts HiDrive, creates symbolic links)
|
|
- **`.p10k.zsh`** - Powerlevel10k configuration
|
|
- **`.zprofile`**, **`.zlogout`**, **`.zshenv`** - Zsh startup files
|
|
|
|
### Version Files
|
|
- **`.nvmrc`** - Node.js version
|
|
- **`.ruby-version`** - Ruby version
|
|
- **`.python-version`** - Python version
|
|
|
|
### Git Configuration
|
|
- **`.gitignore`** - INVERTED PATTERN (ignore all, allow specific files)
|
|
- **`.gitconfig`** - Git user configuration
|
|
|
|
### Personal
|
|
- **`signature.txt`** - ASCII art email signature
|
|
- **`.hushlogin`** - Suppress login banners
|
|
|
|
---
|
|
|
|
## GIT SELECTIVE TRACKING
|
|
|
|
This repository uses an **inverted `.gitignore`** pattern:
|
|
|
|
```gitignore
|
|
# Ignore everything
|
|
*
|
|
|
|
# But not these files.
|
|
!.gitignore
|
|
!.gitconfig
|
|
!.editorconfig
|
|
!.nvmrc
|
|
!.ruby-version
|
|
!.python-version
|
|
!.p10k.zsh
|
|
!.zprofile
|
|
!.zlogout
|
|
!.zlogin
|
|
!.zshrc
|
|
!.zshenv
|
|
!.hushlogin
|
|
!arty.yml
|
|
!signature.txt
|
|
!LICENSE
|
|
!README.md
|
|
```
|
|
|
|
**Why?** To track only essential dotfiles and configurations while ignoring cache, logs, and user data.
|
|
|
|
---
|
|
|
|
## SHELL PLUGIN POWER
|
|
|
|
**Oh-My-Zsh Plugins Loaded:**
|
|
```
|
|
git gh sudo ssh ruby rust python node
|
|
rsync nvm rbenv pyenv docker docker-compose qrcode
|
|
zsh-autosuggestions zsh-syntax-highlighting
|
|
zsh-interactive-cd zsh-navigation-tools
|
|
```
|
|
|
|
---
|
|
|
|
## USEFUL RESOURCES
|
|
|
|
### System & Shell
|
|
- [Oh-My-Zsh](https://ohmyz.sh/)
|
|
- [Powerlevel10k](https://github.com/romkatv/powerlevel10k)
|
|
|
|
### Language Managers
|
|
- [nvm](https://github.com/nvm-sh/nvm) - Node Version Manager
|
|
- [rbenv](https://github.com/rbenv/rbenv) - Ruby Version Manager
|
|
- [pyenv](https://github.com/pyenv/pyenv) - Python Version Manager
|
|
- [rustup](https://rustup.rs/) - Rust Toolchain Manager
|
|
|
|
### CLI Tools
|
|
- [yq](https://github.com/mikefarah/yq) - YAML processor
|
|
|
|
---
|
|
|
|
## LICENSE
|
|
|
|
MIT License - Do whatever the hell you want with it.
|
|
|
|
---
|
|
|
|
<div align="center">
|
|
|
|
<pre>
|
|
=================================================================
|
|
|
|
__________ ____ ______ _________
|
|
/ ____/ __ \/ __ \/ ____/ / _/ ___/
|
|
/ / / / / / / / / __/ / / \__ \
|
|
/ /___/ /_/ / /_/ / /___ _/ / ___/ /
|
|
\____/\____/_____/_____/ /___//____/
|
|
|
|
______________ _______ ____ ____ ___ ______ __
|
|
/_ __/ ____/ |/ / __ \/ __ \/ __ \/ | / __ \ \/ /
|
|
/ / / __/ / /|_/ / /_/ / / / / /_/ / /| | / /_/ /\ /
|
|
/ / / /___/ / / / ____/ /_/ / _, _/ ___ |/ _, _/ / /
|
|
/_/ /_____/_/ /_/_/ \____/_/ |_/_/ |_/_/ |_| /_/
|
|
|
|
__ __________________ __ _________
|
|
/ |/ / ____/_ __/ | / / / _/ ___/
|
|
/ /|_/ / __/ / / / /| | / / / / \__ \
|
|
/ / / / /___ / / / ___ |/ /___ _/ / ___/ /
|
|
/_/ /_/_____/ /_/ /_/ |_/_____/ /___//____/
|
|
|
|
______________________ _ _____ __
|
|
/ ____/_ __/ ____/ __ \/ | / / | / /
|
|
/ __/ / / / __/ / /_/ / |/ / /| | / /
|
|
/ /___ / / / /___/ _, _/ /| / ___ |/ /___
|
|
/_____/ /_/ /_____/_/ |_/_/ |_/_/ |_/_____/
|
|
|
|
=================================================================
|
|
|
|
FORGED BY VALKNAR
|
|
valknar@pivoine.art
|
|
Powered by Debian | Fueled by Metal
|
|
|
|
</pre>
|
|
|
|
**[BACK TO THE TOP](#)**
|
|
|
|
</div>
|