Files
home/README.md

11 KiB
Executable File

 _    _____    __    __ __ _   _____    ____ _ _____
| |  / /   |  / /   / //_// | / /   |  / __ ( ) ___/
| | / / /| | / /   / ,<  /  |/ / /| | / /_/ //\__ \
| |/ / ___ |/ /___/ /| |/ /|  / ___ |/ _, _/ ___/ /
|___/_/  |_/_____/_/ |_/_/ |_/_/  |_/_/ |_| /____/

    __________  ____  ____________
   / ____/ __ \/ __ \/ ____/ ____/
  / /_  / / / / /_/ / / __/ __/
 / __/ / /_/ / _, _/ /_/ / /___
/_/    \____/_/ |_|\____/_____/

🔥 WHERE CODE MEETS CHAOS 🔥

Debian Powered by Metal Built with Blood License: MIT

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.


THE ARSENAL

🎸 WEAPONS OF MASS DEVELOPMENT

┌─────────────────────────────────────────────────┐
│  ⚔️  NODE.JS    │  Managed by nvm              │
│  ⚔️  PYTHON     │  Managed by pyenv            │
│  ⚔️  RUBY       │  Managed by rbenv            │
│  ⚔️  RUST       │  Managed by rustup           │
│  ⚔️  GO         │  Managed by gvm              │
│  ⚔️  DOCKER     │  Containerized destruction   │
│  ⚔️  POSTGRES   │  Version 18 database engine  │
└─────────────────────────────────────────────────┘

🩸 QUICK START RITUAL 🩸

Summoning the Environment

# 1. Clone this unholy repository
git init && git remote add origin git@github.com:valknarogg/home.git
git fetch && git reset --hard origin/main
git branch --set-upstream-to=origin/main main

# 2. Install Ansible (if not already installed)
sudo apt install git ansible

# 3. Configure git
git config --global init.defaultBranch main
git config --global --add safe.directory /home/$USER

# 4. Unleash the Ansible playbook
sudo -u $USER ansible-playbook -K playbook.yml

Selective Provisioning

Run specific parts of the setup using tags:

# Install only Node.js environment
ansible-playbook --tags node -K playbook.yml

# Install Python + Ruby
ansible-playbook --tags python,ruby -K playbook.yml

# Install everything
ansible-playbook -K playbook.yml

🏷️ Available Tags:

base | node | python | ruby | rust | zsh | postgres | docker | fonts | flatpak | github | oh-my-posh


🎯 ARTY - REPOSITORY ORCHESTRATION 🎯

What is Arty?

Arty.sh is a bash-based dependency and repository manager that orchestrates git subrepositories like a conductor of chaos. It's part of the butter.sh ecosystem - a suite of bash development tools.

Installing Arty

Arty is already installed globally at /usr/local/bin/arty. If you need to install/update it:

# Clone butter.sh ecosystem
git clone https://github.com/butter-sh/butter-sh.github.io.git ~/Projects/butter-sh

# Install arty globally (requires sudo)
cd ~/Projects/butter-sh/projects/arty.sh
sudo ./arty.sh install

The arty.yml Configuration

The root ~/arty.yml defines your entire repository ecosystem:

name: "Valknar's home"
version: "1.0.0"

envs:
  dev:   # Development environment
  prod:  # Production environment

references:
  # Project repositories
  - url: git@github.com:valknarogg/pivoine.art.git
    into: Projects/pivoine.art
    env: dev

  # Media repositories
  - url: git@github.com:valknarogg/home-pictures.git
    into: Bilder
    env: dev

  # Version managers
  - url: https://github.com/nvm-sh/nvm.git
    into: .nvm

  # ... and many more

scripts:
  debug: echo "$ARTY_BIN_DIR" && echo "$ARTY_LIBS_DIR"

Using Arty

# Sync all dev environment repositories
arty sync --env dev

# Sync production repositories only
arty sync --env prod

# Install dependencies from arty.yml
arty install

# Run custom scripts defined in arty.yml
arty debug

# Show dependency tree
arty deps

# Update a specific reference
arty update pivoine.art

What Arty Manages:

  • Project repositories (pivoine.art, sexy.pivoine.art, etc.)
  • Media repositories (Pictures, Videos, Music)
  • Docker compose configurations
  • Version managers (nvm, rbenv, pyenv, gvm)
  • Oh-My-Zsh and plugins
  • Shell scripts and binaries

Environment-Based Management

References can be tagged with env: dev or env: prod to control which repositories are synced in different environments. This allows you to:

  • Keep heavy media files out of production servers
  • Separate development projects from system utilities
  • Maintain clean, minimal deployments

🔥 COMMAND LINE BRUTALITY 🔥

Git Operations

g0                  # Stage all changes and verify clean state
g1                  # Nuclear reset to single commit
g2                  # Show last commit message
git add -A && git commit -m "$(g2)"  # Reuse last commit message

Media Processing

# Convert all images in directory to WebP
batch_image_webp

# Rename files with sequence numbers
batch_file_sequence artwork webp

# Optimize video
_video_optimize input.mov

# Download YouTube video as MP3
yt "https://youtube.com/watch?v=..."

Development Servers

# Serve current directory on port 8000
ss

# Run Jekyll site with livereload
cd ~/Projects/pivoine.art && bundle exec jekyll serve --livereload

# Run Node.js dev server
cd ~/Projects/node.js/awesome && pnpm dev

Rsync Power

# Sync to remote with sudo
rs /local/path/ user@host:/remote/path/

📁 PROJECT STRUCTURE 📁

~/Projects/
├── butter-sh/              # Butter.sh ecosystem (arty, judge, myst, etc.)
├── docker-compose/         # Docker orchestration configs
├── pivoine.art/            # Jekyll art portfolio (main site)
├── docs.pivoine.art/       # Documentation site
├── sexy.pivoine.art/       # Rust + web project (includes buttplug package)
└── node.js/
    ├── awesome/            # GitHub Awesome lists browser
    ├── awesome-app/        # Awesome list application
    ├── email-pour-vous/    # Email templating project
    └── webshot/            # Website screenshot tool

🛠️ DOTFILE HIGHLIGHTS 🛠️

Shell Configuration

  • .zshrc - Oh-My-Zsh with Powerlevel10k theme
  • .p10k.zsh - Powerlevel10k configuration
  • .bashrc - Bash configuration (fallback)

Version Files

  • .nvmrc - Node.js version
  • .ruby-version - Ruby version
  • .python-version - Python version

Code Quality

  • .pre-commit-config.yaml - Pre-commit hooks (Python)
  • .rubocop.yml - Ruby style enforcement
  • eslint.config.mts - JavaScript/TypeScript linting
  • .prettierrc - Code formatting rules
  • biome.json - Fast linter/formatter

Package Management

  • requirements.txt - Python packages (pip)
  • Gemfile - Ruby gems (bundler)

Git Configuration

  • .gitignore - INVERTED PATTERN (ignore all, allow specific files)
  • .gitconfig - Git user configuration

Orchestration

  • arty.yml - Repository and dependency management
  • playbook.yml - Ansible system provisioning

⚙️ GIT SELECTIVE TRACKING ⚙️

This repository uses an inverted .gitignore pattern:

# Ignore everything
*

# Allow specific files
!CLAUDE.md
!README.md
!.gitignore
!.zshrc
!arty.yml
!playbook.yml
...

Why? To track only essential dotfiles and configurations while ignoring cache, logs, and user data. Your home directory becomes a git repository without the chaos.

Note: The .init/ directory is NOT tracked in git - it exists locally only for shell initialization. This keeps your shell configuration private and machine-specific.


🎸 SHELL PLUGIN POWER 🎸

Oh-My-Zsh Plugins Loaded:

git pm2 gh sudo ssh ruby rust python node github
rsync nvm rbenv pyenv docker docker-compose qrcode
zsh-autosuggestions zsh-syntax-highlighting
zsh-interactive-cd zsh-navigation-tools

🔗 USEFUL RESOURCES 🔗

System & Shell

Language Managers

  • nvm - Node Version Manager
  • rbenv - Ruby Version Manager
  • pyenv - Python Version Manager
  • gvm - Go Version Manager
  • rustup - Rust Toolchain Manager

Orchestration


🖤 LICENSE 🖤

MIT License - Do whatever the hell you want with it.


═════════════════════════════════════════════════════════════════

__________  ____  ______   _________
  / ____/ __ \/ __ \/ ____/  /  _/ ___/
 / /   / / / / / / / __/     / / \__ \
/ /___/ /_/ / /_/ / /___   _/ / ___/ /
\____/\____/_____/_____/  /___//____/

  ______________  _______  ____  ____  ___    ______  __
 /_  __/ ____/  |/  / __ \/ __ \/ __ \/   |  / __ \ \/ /
  / / / __/ / /|_/ / /_/ / / / / /_/ / /| | / /_/ /\  /
 / / / /___/ /  / / ____/ /_/ / _, _/ ___ |/ _, _/ / /
/_/ /_____/_/  /_/_/    \____/_/ |_/_/  |_/_/ |_| /_/

    __  __________________    __       _________
   /  |/  / ____/_  __/   |  / /      /  _/ ___/
  / /|_/ / __/   / / / /| | / /       / / \__ \
 / /  / / /___  / / / ___ |/ /___   _/ / ___/ /
/_/  /_/_____/ /_/ /_/  |_/_____/  /___//____/

    ______________________  _   _____    __
   / ____/_  __/ ____/ __ \/ | / /   |  / /
  / __/   / / / __/ / /_/ /  |/ / /| | / /
 / /___  / / / /___/ _, _/ /|  / ___ |/ /___
/_____/ /_/ /_____/_/ |_/_/ |_/_/  |_/_____/

═════════════════════════════════════════════════════════════════

🔥⚡ FORGED BY VALKNAR ⚡🔥
valknar@pivoine.art
Powered by Debian | Fueled by Metal

🤘 🤘 🤘

⚔️ BACK TO THE TOP ⚔️