docs: update README to reflect arty-based setup and removed Ansible playbook

- Replace Ansible provisioning workflow with arty installation scripts
- Update arty.yml configuration to show simplified structure
- Add HiDrive integration documentation for .zlogin
- Update environment structure to show version managers and symbolic links
- Remove references to playbook.yml and environment-based repo management
- Add documentation for new installation scripts (debian, rust, zed, claude, etc.)
- Clean up .zshenv and remove .last_pwd tracking file

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-14 11:55:37 +01:00
parent 1b90863c19
commit 5bd732f3ac
6 changed files with 126 additions and 370 deletions

22
.config/zed/settings.json Normal file
View File

@@ -0,0 +1,22 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"terminal": {
"shell": {
"program": "/usr/bin/zsh"
}
},
"ui_font_size": 16,
"buffer_font_size": 15,
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark"
}
}

View File

@@ -1 +0,0 @@
repos/sexy.pivoine.art

View File

@@ -1,2 +0,0 @@
. "$HOME/.cargo/env"

172
README.md
View File

@@ -58,35 +58,37 @@ git init && git remote add origin git@github.com:valknarogg/home.git
git fetch && git reset --hard origin/main git fetch && git reset --hard origin/main
git branch --set-upstream-to=origin/main main git branch --set-upstream-to=origin/main main
# 2. Install Ansible (if not already installed) # 2. Configure git
sudo apt install git ansible
# 3. Configure git
git config --global init.defaultBranch main git config --global init.defaultBranch main
git config --global --add safe.directory /home/$USER git config --global --add safe.directory /home/$USER
# 4. Unleash the Ansible playbook # 3. Install essential packages using arty scripts
sudo -u $USER ansible-playbook -K playbook.yml arty debian/install # Base packages (curl, zsh, fzf, davfs2, etc.)
arty rust/install # Rust toolchain via rustup
arty zed/install # Zed editor
arty claude/install # Claude CLI
# 4. Sync shell configuration and version managers
arty sync
# 5. Source the shell configuration
source ~/.zshrc
``` ```
### **Selective Provisioning** ### **Available Installation Scripts**
Run specific parts of the setup using tags: Arty provides installation scripts for various tools:
```bash ```bash
# Install only Node.js environment arty debian/install # curl, zsh, fzf, davfs2, krusader, make, imagemagick, ffmpeg, yt-dlp
ansible-playbook --tags node -K playbook.yml arty rust/install # Rust toolchain via rustup
arty zed/install # Zed code editor
# Install Python + Ruby arty claude/install # Claude AI CLI
ansible-playbook --tags python,ruby -K playbook.yml arty mattermost/install # Mattermost desktop client
arty joplin/install # Joplin note-taking app
# Install everything arty yq/install # yq YAML processor
ansible-playbook -K playbook.yml
``` ```
#### 🏷️ **Available Tags:**
`base` | `node` | `python` | `ruby` | `rust` | `zsh` | `postgres` | `docker` | `fonts` | `flatpak` | `github` | `oh-my-posh`
--- ---
## 🎯 ARTY - REPOSITORY ORCHESTRATION 🎯 ## 🎯 ARTY - REPOSITORY ORCHESTRATION 🎯
@@ -110,73 +112,70 @@ sudo ./arty.sh install
### **The `arty.yml` Configuration** ### **The `arty.yml` Configuration**
The root `~/arty.yml` defines your entire repository ecosystem: The root `~/arty.yml` defines your repository dependencies and installation scripts:
```yaml ```yaml
name: "Valknar's home" name: "Valknar's home"
version: "1.0.0" version: '1.0.0'
description: "Valknar's home repository"
envs: author: 'valknar@pivoine.art'
dev: # Development environment license: 'MIT'
prod: # Production environment
references: references:
# Project repositories # Custom scripts and binaries
- url: git@github.com:valknarogg/pivoine.art.git - url: git@github.com:valknarogg/bin.git
into: Projects/pivoine.art into: bin
env: dev
# Media repositories
- url: git@github.com:valknarogg/home-pictures.git
into: Bilder
env: dev
# Version managers # Version managers
- url: https://github.com/nvm-sh/nvm.git - url: https://github.com/nvm-sh/nvm.git
into: .nvm into: .nvm
- url: https://github.com/rbenv/rbenv.git
into: .rbenv
- url: https://github.com/pyenv/pyenv.git
into: .pyenv
- url: https://github.com/moovweb/gvm.git
into: .gvm
# ... and many more # Shell configuration
- 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
scripts: scripts:
debug: echo "$ARTY_BIN_DIR" && echo "$ARTY_LIBS_DIR" debian/install: sudo apt install curl zsh fzf davfs2 krusader make imagemagick ffmpeg yt-dlp
rust/install: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
zed/install: curl -f https://zed.dev/install.sh | sh
claude/install: curl -fsSL https://claude.ai/install.sh | bash
``` ```
### **Using Arty** ### **Using Arty**
```bash ```bash
# Sync all dev environment repositories # Sync all repositories defined in arty.yml
arty sync --env dev arty sync
# Sync production repositories only # Run installation scripts
arty sync --env prod arty debian/install
arty rust/install
arty zed/install
# Install dependencies from arty.yml # Update all references
arty install arty update
# Run custom scripts defined in arty.yml # Show configuration info
arty debug arty info
# Show dependency tree
arty deps
# Update a specific reference
arty update pivoine.art
``` ```
### **What Arty Manages:** ### **What Arty Manages:**
-Project repositories (pivoine.art, sexy.pivoine.art, etc.) -**Version managers** (nvm, rbenv, pyenv, gvm)
-Media repositories (Pictures, Videos, Music) -**Shell configuration** (Oh-My-Zsh, Powerlevel10k, plugins)
-Docker compose configurations -**Custom binaries** (from valknarogg/bin repository)
-Version managers (nvm, rbenv, pyenv, gvm) -**Installation scripts** (system packages, development tools)
- ✅ Oh-My-Zsh and plugins
- ✅ Shell scripts and binaries
### **Environment-Based Management** ### **Simplified Repository Management**
References can be tagged with `env: dev` or `env: prod` to control which repositories are synced in different environments. This allows you to: The configuration has been streamlined to focus on essential tooling and version managers. Project-specific repositories should be managed separately in their respective locations (e.g., `~/Projects/`), while arty handles the core development environment setup.
- Keep heavy media files out of production servers
- Separate development projects from system utilities
- Maintain clean, minimal deployments
--- ---
@@ -229,20 +228,27 @@ rs /local/path/ user@host:/remote/path/
--- ---
## 📁 PROJECT STRUCTURE 📁 ## 📁 ENVIRONMENT STRUCTURE 📁
``` ```
~/Projects/ ~/
├── butter-sh/ # Butter.sh ecosystem (arty, judge, myst, etc.) ├── bin/ # Custom scripts and executables
├── docker-compose/ # Docker orchestration configs ├── .nvm/ # Node Version Manager
├── pivoine.art/ # Jekyll art portfolio (main site) ├── .rbenv/ # Ruby Version Manager
├── docs.pivoine.art/ # Documentation site ├── .pyenv/ # Python Version Manager
├── sexy.pivoine.art/ # Rust + web project (includes buttplug package) ├── .gvm/ # Go Version Manager
── node.js/ ── .oh-my-zsh/ # Oh-My-Zsh framework
── awesome/ # GitHub Awesome lists browser ── custom/
├── awesome-app/ # Awesome list application ├── themes/
├── email-pour-vous/ # Email templating project │ └── powerlevel10k/
└── webshot/ # Website screenshot tool │ └── plugins/
│ ├── zsh-autosuggestions/
│ └── zsh-syntax-highlighting/
├── Projects/ # Development projects (managed separately)
├── Documents/ # → /mnt/hidrive/users/valknar/Documents
├── Pictures/ # → /mnt/hidrive/users/valknar/Pictures
├── Videos/ # → /mnt/hidrive/users/valknar/Videos
└── Music/ # → /mnt/hidrive/users/valknar/Music
``` ```
--- ---
@@ -251,6 +257,7 @@ rs /local/path/ user@host:/remote/path/
### **Shell Configuration** ### **Shell Configuration**
- **`.zshrc`** - Oh-My-Zsh with Powerlevel10k theme - **`.zshrc`** - Oh-My-Zsh with Powerlevel10k theme
- **`.zlogin`** - Login script (mounts HiDrive, creates symbolic links)
- **`.p10k.zsh`** - Powerlevel10k configuration - **`.p10k.zsh`** - Powerlevel10k configuration
- **`.bashrc`** - Bash configuration (fallback) - **`.bashrc`** - Bash configuration (fallback)
@@ -275,8 +282,21 @@ rs /local/path/ user@host:/remote/path/
- **`.gitconfig`** - Git user configuration - **`.gitconfig`** - Git user configuration
### **Orchestration** ### **Orchestration**
- **`arty.yml`** - Repository and dependency management - **`arty.yml`** - Repository and dependency management with installation scripts
- **`playbook.yml`** - Ansible system provisioning
---
## 🔗 HIDRIVE INTEGRATION 🔗
The `.zlogin` script automatically:
- **Mounts HiDrive** storage at `/mnt/hidrive` on shell login
- **Creates symbolic links** from HiDrive to home directory:
- `~/Documents``/mnt/hidrive/users/valknar/Documents`
- `~/Pictures``/mnt/hidrive/users/valknar/Pictures`
- `~/Videos``/mnt/hidrive/users/valknar/Videos`
- `~/Music``/mnt/hidrive/users/valknar/Music`
This provides seamless access to cloud-stored media and documents from your home directory.
--- ---
@@ -293,8 +313,8 @@ This repository uses an **inverted `.gitignore`** pattern:
!README.md !README.md
!.gitignore !.gitignore
!.zshrc !.zshrc
!.zlogin
!arty.yml !arty.yml
!playbook.yml
... ...
``` ```

View File

@@ -27,13 +27,18 @@ references:
into: .oh-my-zsh/custom/plugins/zsh-syntax-highlighting into: .oh-my-zsh/custom/plugins/zsh-syntax-highlighting
scripts: scripts:
debian/install: sudo apt install curl zsh fzf davfs2 debian/install:
sudo apt install curl zsh fzf davfs2 krusader make imagemagick ffmpeg yt-dlp
rust/install: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rust/install: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
zed/install: curl -f https://zed.dev/install.sh | sh zed/install: curl -f https://zed.dev/install.sh | sh
claude/install: curl -fsSL https://claude.ai/install.sh | bash claude/install: curl -fsSL https://claude.ai/install.sh | bash
mattermost/install: mattermost/install:
curl -fsS -o- https://deb.packages.mattermost.com/setup-repo.sh | sudo bash curl -fsS -o- https://deb.packages.mattermost.com/setup-repo.sh | sudo bash
&& sudo apt install mattermost-desktop
joplin/install: joplin/install:
wget -O - \ wget -O -
https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh
| bash \ | 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

View File

@@ -1,288 +0,0 @@
- hosts: localhost
connection: local
tasks:
- name: Install base packages
become: true
ansible.builtin.apt:
pkg:
- make
- build-essential
- git
- curl
- wget
- rsync
- zsh
- imagemagick
- ffmpeg
- yt-dlp
- fzf
- icoutils
- postgresql-common
- unzip
tags:
- base
- python
- ruby
- rust
- zsh
- postgres
- name: Prepare postgresql
ansible.builtin.shell: /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
args:
executable: /bin/bash
tags:
- postgres
- name: Install postgres package
become: true
ansible.builtin.apt:
pkg:
- postgresql-18
update_cache: true
tags:
- postgres
- name: Change root shell to zsh
become: true
ansible.builtin.user:
name: root
shell: /bin/zsh
tags:
- oh-my-posh
- name: Give permissions to /root/bin
become: true
ansible.builtin.file:
path: /root/bin
state: directory
tags:
- oh-my-posh
- name: Install oh-my-posh for root
become: true
ansible.builtin.shell: curl -s https://ohmyposh.dev/install.sh | bash -s -- -d /root/bin
args:
executable: /bin/bash
tags:
- oh-my-posh
- name: Ensure root shell loads user bin
become: true
ansible.builtin.lineinfile:
path: /root/.zshrc
line: |
export PATH="$PATH:/root/bin"
if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then
eval "$(oh-my-posh init zsh)"
fi
create: yes
tags:
- oh-my-posh
- name: Install node
ansible.builtin.shell: source ~/.init/init.sh && nvm install
args:
executable: /bin/bash
tags:
- node
- name: Enable node corepack
ansible.builtin.shell: source ~/.init/init.sh && corepack enable
args:
executable: /bin/bash
tags:
- node
- name: Install node packages
ansible.builtin.shell: source ~/.init/init.sh && cd ~ && pnpm install
args:
executable: /bin/bash
tags:
- node
- name: Install python required packages
become: true
ansible.builtin.apt:
pkg:
- libssl-dev
- zlib1g-dev
- libbz2-dev
- libreadline-dev
- libsqlite3-dev
- llvm
- libncurses5-dev
tags:
- python
- name: Install python
ansible.builtin.shell: source ~/.init/init.sh && pyenv install --skip-existing
args:
executable: /bin/bash
tags:
- python
- name: Install python packages
ansible.builtin.shell: source ~/.init/init.sh && pip install -r ~/requirements.txt
args:
executable: /bin/bash
tags:
- python
- name: Init python pre-commit
ansible.builtin.shell: source ~/.init/init.sh && cd ~ && pre-commit install
args:
executable: /bin/bash
tags:
- python
- name: Install ruby required packages
become: true
ansible.builtin.apt:
pkg:
- libssl-dev
- libffi-dev
- libyaml-dev
- zlib1g-dev
tags:
- ruby
- name: Install ruby
ansible.builtin.shell: source ~/.init/init.sh && rbenv install --skip-existing
args:
executable: /bin/bash
tags:
- ruby
- name: Install ruby base packages
ansible.builtin.shell: source ~/.init/init.sh && gem install {{ item }}
args:
executable: /bin/bash
with_items:
- bundler
tags:
- ruby
- name: Install ruby packages
ansible.builtin.shell: source ~/.init/init.sh && cd ~ && bundle install
args:
executable: /bin/bash
tags:
- ruby
- name: Install rust required packages
become: true
ansible.builtin.apt:
pkg:
- libudev-dev
- libusb-1.0-0-dev
- libdbus-1-dev
- pkg-config
- cmake
tags:
- rust
- name: Download Installer for rust
ansible.builtin.get_url:
url: https://sh.rustup.rs
dest: /tmp/sh.rustup.rs
mode: '0755'
force: 'yes'
tags:
- rust
- name: Install rust
ansible.builtin.shell: /tmp/sh.rustup.rs -y
tags:
- rust
- name: Change user shell to zsh
become: true
ansible.builtin.user:
name: '{{ ansible_user_id }}'
shell: /bin/zsh
tags:
- zsh
- name: Update font cache
ansible.builtin.shell: fc-cache -f -v
tags:
- fonts
- name: Install flatpak required packages
become: true
ansible.builtin.apt:
pkg:
- flatpak
- gnome-software-plugin-flatpak
- libgtk-3-dev
tags:
- flatpak
- name: Add flathub repo
ansible.builtin.shell: flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
tags:
- flatpak
- name: Install github required packages
become: true
ansible.builtin.apt:
pkg:
- gh
tags:
- github
# - name: Add github copilot extension
# ansible.builtin.shell: gh extension install github/gh-copilot
# tags:
# - github
- name: Install Docker required packages
become: true
ansible.builtin.apt:
name:
- apt-transport-https
- ca-certificates
- curl
- gnupg2
- postgresql-client
tags:
- docker
- name: Add Docker repository
ansible.builtin.deb822_repository:
name: docker
uris: https://download.docker.com/linux/debian
types: deb
suites: trixie
architectures: amd64
components: stable
signed_by: https://download.docker.com/linux/debian/gpg
tags:
- docker
- name: Install Docker Engine
become: true
ansible.builtin.apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
update_cache: true
tags:
- docker
- name: Add user to docker group
become: true
ansible.builtin.user:
name: '{{ ansible_user_id }}'
groups: docker
tags:
- docker
- name: Start Docker service
become: true
ansible.builtin.service:
name: docker
state: started
tags:
- docker