Files
home/README.md
T
valknarandClaude Sonnet 4.6 3ef96ff8ab fix: stacks STACKS_DIR defaults to PWD instead of ~/stacks
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>
2026-06-22 18:11:58 +02:00

277 lines
7.6 KiB
Markdown
Executable File

<div align="center">
<pre>
_ _____ __ __ __ _ _____ ____ _ _____
| | / / | / / / //_// | / / | / __ ( ) ___/
| | / / /| | / / / ,< / |/ / /| | / /_/ //\__ \
| |/ / ___ |/ /___/ /| |/ /| / ___ |/ _, _/ ___/ /
|___/_/ |_/_____/_/ |_/_/ |_/_/ |_/_/ |_| /____/
__________ ____ ____________
/ ____/ __ \/ __ \/ ____/ ____/
/ /_ / / / / /_/ / / __/ __/
/ __/ / /_/ / _, _/ /_/ / /___
/_/ \____/_/ |_|\____/_____/
</pre>
# WHERE CODE MEETS CHAOS
[![Debian](https://img.shields.io/badge/Debian-Trixie-A81D33?style=for-the-badge&logo=debian&logoColor=white)](https://www.debian.org/)
[![Powered by Metal](https://img.shields.io/badge/POWERED%20BY-METAL-FF0000?style=for-the-badge)](https://www.slayer.net/)
[![Built with Blood](https://img.shields.io/badge/BUILT%20WITH-BLOOD%20%26%20SWEAT-8B0000?style=for-the-badge)](/)
[![License: MIT](https://img.shields.io/badge/License-MIT-990000?style=for-the-badge)](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>