chore: squash history

This commit is contained in:
2026-06-17 19:30:07 +02:00
commit 2601041008
18 changed files with 2203 additions and 0 deletions
Executable
+16
View File
@@ -0,0 +1,16 @@
# EditorConfig is awesome: https://editorconfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
indent_size = 2
indent_style = space
charset = utf-8
# 4 space indentation
[*.py]
indent_size = 4
Executable
+18
View File
@@ -0,0 +1,18 @@
[user]
name = Sebastian Krüger
email = valknar@pivoine.art
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[core]
editor = nano
[init]
defaultBranch = main
[alias]
squash-all = "!f(){ git reset $(git commit-tree \"HEAD^{tree}\" \"$@\");};f"
[push]
autoSetupRemote = true
[pull]
ff = only
Executable
+24
View File
@@ -0,0 +1,24 @@
# 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
!scripts/
!scripts/**/*
View File
+1
View File
@@ -0,0 +1 @@
v20.19.1
+193
View File
@@ -0,0 +1,193 @@
# Generated by Powerlevel10k configuration wizard on 2025-09-04 at 02:33 CEST.
# Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 07533.
# Wizard options: nerdfont-v3 + powerline, small icons, pure, snazzy, 24h time, 1 line,
# compact, instant_prompt=verbose.
# Type `p10k configure` to generate another config.
#
# Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure).
#
# Differences from Pure:
#
# - Git:
# - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
# - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
#
# Apart from the differences listed above, the replication of Pure prompt is exact. This includes
# even the questionable parts. For example, just like in Pure, there is no indication of Git status
# being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt
# doesn't fit on one line, it wraps around with no attempt to shorten it.
#
# If you like the general style of Pure but not particularly attached to all its quirks, type
# `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking
# advantage of Powerlevel10k features that aren't present in Pure.
# Temporarily change options.
'builtin' 'local' '-a' 'p10k_config_opts'
[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
() {
emulate -L zsh -o extended_glob
# Unset all configuration options.
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
# Zsh >= 5.1 is required.
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
# Prompt colors.
local grey='242'
local red='#FF5C57'
local yellow='#F3F99D'
local blue='#57C7FF'
local magenta='#FF6AC1'
local cyan='#9AEDFE'
local white='#F1F1F0'
# Left prompt segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
context # user@host
dir # current directory
vcs # git status
command_execution_time # previous command duration
# virtualenv # python virtual environment
prompt_char # prompt symbol
)
# Right prompt segments.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
# command_execution_time # previous command duration
# virtualenv # python virtual environment
# context # user@host
time # current time
)
# Basic style options that define the overall prompt look.
typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
# Add an empty line before each prompt except the first. This doesn't emulate the bug
# in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar.
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
# Magenta prompt symbol if the last command succeeded.
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$magenta
# Red prompt symbol if the last command failed.
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red
# Default prompt symbol.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=''
# Prompt symbol in command vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=''
# Prompt symbol in visual vi mode is the same as in command mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=''
# Prompt symbol in overwrite vi mode is the same as in command mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false
# Grey Python Virtual Environment.
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey
# Don't show Python version.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
# Blue current directory.
typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue
# Context format when root: user@host. The first part white, the rest grey.
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$white}%n%f%F{$grey}@%m%f"
# Context format when not root: user@host. The whole thing grey.
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$grey}%n@%m%f"
# Don't show context unless root or in SSH.
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
# Show previous command duration only if it's >= 5s.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5
# Don't show fractional seconds. Thus, 7s rather than 7.3s.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
# Duration format: 1d 2h 3m 4s.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
# Yellow previous command duration.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow
# Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones.
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey
# Disable async loading indicator to make directories that aren't Git repositories
# indistinguishable from large Git repositories without known state.
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
# Don't wait for Git status even for a millisecond, so that prompt always updates
# asynchronously when Git state changes.
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
# Cyan ahead/behind arrows.
typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan
# Don't show remote branch, current tag or stashes.
typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
# Don't show the branch icon.
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
# When in detached HEAD state, show @commit where branch normally goes.
typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
# Don't show staged, unstaged, untracked indicators.
typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=
# Show '*' when there are staged, unstaged or untracked files.
typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*'
# Show '⇣' if local branch is behind remote.
typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣'
# Show '⇡' if local branch is ahead of remote.
typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡'
# Don't show the number of commits next to the ahead/behind arrows.
typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
# Remove space between '⇣' and '⇡' and all trailing spaces.
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }'
# Grey current time.
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
# Format for the current time: 09:51:02. See `man 3 strftime`.
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
# If set to true, time will update when you hit enter. This way prompts for the past
# commands will contain the start times of their commands rather than the end times of
# their preceding commands.
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
# when accepting a command line. Supported values:
#
# - off: Don't change prompt when accepting a command line.
# - always: Trim down prompt when accepting a command line.
# - same-dir: Trim down prompt when accepting a command line unless this is the first command
# typed after changing current working directory.
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
# Instant prompt mode.
#
# - off: Disable instant prompt. Choose this if you've tried instant prompt and found
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
# Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
# For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
# can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
# really need it.
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=off
# If p10k is already loaded, reload configuration.
# This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
(( ! $+functions[p10k] )) || p10k reload
}
# Tell `p10k configure` which file it should overwrite.
typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
'builtin' 'unset' 'p10k_config_opts'
+1
View File
@@ -0,0 +1 @@
3.12
+1
View File
@@ -0,0 +1 @@
3.4.1
Executable
View File
Executable
View File
Executable
+21
View File
@@ -0,0 +1,21 @@
SSH_ENV="$HOME/.ssh/agent-environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' >"$SSH_ENV"
echo succeeded
chmod 600 "$SSH_ENV"
. "$SSH_ENV" >/dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "$SSH_ENV" ]; then
. "$SSH_ENV" >/dev/null
#ps $SSH_AGENT_PID doesn't work under Cygwin
ps -ef | grep $SSH_AGENT_PID | grep ssh-agent$ >/dev/null || {
start_agent
}
else
start_agent
fi
View File
+217
View File
@@ -0,0 +1,217 @@
# Source .env file early to export environment variables
if [ -f "$HOME/.env" ] ; then
set -a
source "$HOME/.env"
set +a
fi
fpath=(~/.zsh/completions $fpath)
if [ -d "$HOME/bin" ]; then
export PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ]; then
export PATH="$HOME/.local/bin:$PATH"
fi
if [ -d "$HOME/.rbenv/bin" ]; then
export PATH="$PATH:$HOME/.rbenv/bin"
fi
if [ -d "$HOME/.pyenv/bin" ]; then
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
fi
if [ -d "$HOME/.cargo/bin" ]; then
export PATH="$PATH:$HOME/.cargo/bin"
fi
if [ -d "$HOME/.gvm/bin" ]; then
export PATH="$PATH:$HOME/.gvm/bin"
fi
if [ -d "/usr/local/go/bin" ]; then
export PATH="$PATH:/usr/local/go/bin"
fi
if [ -d "$HOME/go/bin" ]; then
export PATH="$PATH:$HOME/go/bin"
fi
if [ -d "$HOME/node_modules/.bin" ]; then
export PATH="$PATH:$HOME/node_modules/.bin"
fi
if [ -d "$HOME/scripts" ]; then
export PATH="$HOME/scripts:$PATH"
fi
if [ -d "$HOME/stacks" ]; then
export PATH="$HOME/stacks:$PATH"
fi
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
if [ -s "$NVM_DIR/nvm.sh" ] ; then
. "$NVM_DIR/nvm.sh"
fi
if [ -s "$NVM_DIR/bash_completion" ] ; then
. "$NVM_DIR/bash_completion"
fi
if [ -s "$HOME/.rvm/scripts/rvm" ] ; then
. "$HOME/.rvm/scripts/rvm"
fi
if [ -s "$HOME/.cargo/env" ] ; then
. "$HOME/.cargo/env"
fi
if [ -s "$HOME/.gvm/scripts/gvm" ] ; then
. "$HOME/.gvm/scripts/gvm"
fi
if [ -s "$HOME/.sdkman/bin/sdkman-init.sh" ] ; then
export SDKMAN_DIR="$HOME/.sdkman"
. "$HOME/.sdkman/bin/sdkman-init.sh"
fi
if command -v oh-my-posh 2>&1 >/dev/null; then
eval "$(! oh-my-posh init zsh --config=~/worker.omp.json)"
fi
if command -v rbenv 2>&1 >/dev/null; then
eval "$(rbenv init - --no-rehash zsh)"
fi
if command -v pyenv 2>&1 >/dev/null; then
eval "$(pyenv init --path)"
fi
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="powerlevel10k/powerlevel10k"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(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)
[[ ! -f $ZSH/oh-my-zsh.sh ]] || source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='nvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch $(uname -m)"
# Set personal aliases, overriding those provided by Oh My Zsh libs,
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
# users are encouraged to define aliases within a top-level file in
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
# - $ZSH_CUSTOM/aliases.zsh
# - $ZSH_CUSTOM/macos.zsh
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias arty="arty.sh"
alias stacks="stacks.sh"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Valknar
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Executable
+281
View File
@@ -0,0 +1,281 @@
<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 |
+-----------------------------------------------------+
```
---
## QUICK START RITUAL
### Summoning the Environment
```bash
# 1. Clone this unholy repository
git init && git remote add origin git@dev.pivoine.art:2222/valknar/home.git
git fetch && git reset --hard origin/main
git branch --set-upstream-to=origin/main main
# 2. Configure git
git config --global init.defaultBranch main
git config --global --add safe.directory /home/$USER
# 3. Sync all dependencies (version managers, shell config, etc.)
arty.sh sync
# 4. Install system packages
arty.sh debian/update && arty.sh debian/install
# 5. Install development tools
arty.sh rust/install
arty.sh node/install
arty.sh ruby/install
arty.sh python/install
# 6. Install global packages
arty.sh npm/install
arty.sh gem/install
# 7. Source the shell configuration
source ~/.zshrc
```
---
## arty.sh - REPOSITORY ORCHESTRATION
### Available Scripts
```bash
# System setup
arty.sh debian/update # Enable non-free repos and update sources
arty.sh debian/install # curl, wget, zsh, fzf, davfs2, make, imagemagick, ffmpeg, yt-dlp, pkg-config, zstd, libffi-dev, libyaml-dev, libssl-dev, liblzma-dev, libbz2-dev, libncurses-dev, libreadline-dev, libsqlite3-dev, python3-tk
# Development tools
arty.sh docker/install # Docker Engine with user group
arty.sh rust/install # Rust toolchain via rustup
arty.sh node/install # Node.js via nvm
arty.sh ruby/install # Ruby via rbenv
arty.sh python/install # Python via pyenv
arty.sh go/install # Go via apt
arty.sh hugo/install # Hugo extended via go install
# CLI tools
arty.sh claude/install # Claude AI CLI
arty.sh yq/install # yq YAML processor
arty.sh gh/install # GitHub CLI
arty.sh tailscale/install # Tailscale
arty.sh ollama/install # Ollama
```
### What arty.sh Manages
- **Version managers** (nvm, rbenv, pyenv)
- **Shell configuration** (Oh-My-Zsh, Powerlevel10k, plugins)
---
## COMMAND LINE BRUTALITY
### Custom Scripts
Scripts in `~/scripts/` are loaded via PATH. Check `scripts/` directory for available utilities.
---
## ENVIRONMENT STRUCTURE
```
~/
+-- .nvm/ # Node Version Manager
+-- .rbenv/ # Ruby Version Manager
| +-- plugins/ruby-build/
+-- .pyenv/ # Python Version Manager
+-- .oh-my-zsh/ # Oh-My-Zsh framework
| +-- custom/
| +-- themes/
| | +-- powerlevel10k/
| +-- plugins/
| +-- 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
!scripts/
!scripts/**/*
# ...
```
**Why?** To track only essential dotfiles and configurations while ignoring cache, logs, and user data.
---
## 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
- [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
- [GitHub CLI](https://cli.github.com/)
- [Tailscale](https://tailscale.com/)
- [Ollama](https://ollama.com/)
- [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>
+73
View File
@@ -0,0 +1,73 @@
name: "Valknar's home"
version: "1.0.0"
description: "Valknar's home repository"
author: "valknar@pivoine.art"
license: "MIT"
notes: |
# Valknar's Home Repository
This is a **personal development environment** configuration managed with `arty`.
## Quick Start
```bash
# Install all dependencies
arty deps
# Update system packages
arty debian/update && arty debian/install
# Install development tools
arty node/install
arty rust/install
arty python/install
```
## Key Features
- **Shell Configuration**: Zsh with Oh-My-Zsh and Powerlevel10k theme
- **Version Managers**: nvm (Node), rbenv (Ruby), pyenv (Python), gvm (Go)
- **Development Tools**: Docker, Rust, Node.js, Python, Ruby
- **Utilities**: Custom scripts in `bin/` directory
## Links
- [Repository](ssh://git@dev.pivoine.art:2222/valknar/home.git)
- [Documentation](https://dev.pivoine.art)
references:
- url: https://github.com/nvm-sh/nvm.git
into: .nvm
- url: https://github.com/rbenv/rbenv.git
into: .rbenv
- url: https://github.com/rbenv/ruby-build.git
into: .rbenv/plugins/ruby-build
- url: https://github.com/pyenv/pyenv.git
into: .pyenv
- url: https://github.com/ohmyzsh/ohmyzsh.git
into: .oh-my-zsh
- url: https://github.com/romkatv/powerlevel10k.git
into: .oh-my-zsh/custom/themes/powerlevel10k
- url: https://github.com/marlonrichert/zsh-autocomplete.git
into: .oh-my-zsh/custom/plugins/zsh-autocomplete
- url: https://github.com/zsh-users/zsh-autosuggestions.git
into: .oh-my-zsh/custom/plugins/zsh-autosuggestions
- url: https://github.com/zsh-users/zsh-syntax-highlighting.git
into: .oh-my-zsh/custom/plugins/zsh-syntax-highlighting
scripts:
debian/update: sudo sed -i 's/main non-free-firmware/main contrib non-free non-free-firmware/g' /etc/apt/sources.list && sudo apt update
debian/install: sudo apt install curl wget zsh fzf davfs2 make imagemagick rsvg-convert ffmpeg yt-dlp pkg-config zstd libffi-dev zlib1g-dev libyaml-dev libssl-dev liblzma-dev libbz2-dev libncurses-dev libreadline-dev libsqlite3-dev python3-tk tk-dev unzip zip
rust/install: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
go/install: sudo apt install golang
node/install: nvm install
ruby/install: rbenv install
python/install: pyenv install
sdkman/install: curl -s "https://get.sdkman.io" | bash
docker/install: curl -fsSL -o- https://get.docker.com | sudo sh && sudo usermod -aG docker $USER
claude/install: curl -fsSL https://claude.ai/install.sh | bash
yq/install: wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq && chmod +x /usr/local/bin/yq
gh/install: curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt update && sudo apt install -y gh
tailscale/install: curl -fsSL https://tailscale.com/install.sh | sh
ollama/install: curl -fsSL https://ollama.com/install.sh | sh
hugo/install: CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest
npm/install: npm i -g npm pnpm
gem/install: gem install bundler
+1326
View File
File diff suppressed because it is too large Load Diff
+10
View File
@@ -0,0 +1,10 @@
██╗ ██╗ █████╗ ██╗ ██╗ ██╗███╗ ██╗ █████╗ ██████╗
██║ ██║██╔══██╗██║ ██║ ██╔╝████╗ ██║██╔══██╗██╔══██╗
██║ ██║███████║██║ █████╔╝ ██╔██╗ ██║███████║██████╔╝
╚██╗ ██╔╝██╔══██║██║ ██╔═██╗ ██║╚██╗██║██╔══██║██╔══██╗
╚████╔╝ ██║ ██║███████╗██║ ██╗██║ ╚████║██║ ██║██║ ██║
╚═══╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝
───────────────────────────────────────────────────────────────────
valknar@pivoine.art │ (+49) 174 8188918 │ https://pivoine.art
───────────────────────────────────────────────────────────────────