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:
22
.config/zed/settings.json
Normal file
22
.config/zed/settings.json
Normal 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"
|
||||
}
|
||||
}
|
||||
172
README.md
172
README.md
@@ -58,35 +58,37 @@ 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
|
||||
# 2. 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
|
||||
# 3. Install essential packages using arty scripts
|
||||
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
|
||||
# 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
|
||||
arty debian/install # curl, zsh, fzf, davfs2, krusader, make, imagemagick, ffmpeg, yt-dlp
|
||||
arty rust/install # Rust toolchain via rustup
|
||||
arty zed/install # Zed code editor
|
||||
arty claude/install # Claude AI CLI
|
||||
arty mattermost/install # Mattermost desktop client
|
||||
arty joplin/install # Joplin note-taking app
|
||||
arty yq/install # yq YAML processor
|
||||
```
|
||||
|
||||
#### 🏷️ **Available Tags:**
|
||||
`base` | `node` | `python` | `ruby` | `rust` | `zsh` | `postgres` | `docker` | `fonts` | `flatpak` | `github` | `oh-my-posh`
|
||||
|
||||
---
|
||||
|
||||
## 🎯 ARTY - REPOSITORY ORCHESTRATION 🎯
|
||||
@@ -110,73 +112,70 @@ sudo ./arty.sh install
|
||||
|
||||
### **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
|
||||
name: "Valknar's home"
|
||||
version: "1.0.0"
|
||||
|
||||
envs:
|
||||
dev: # Development environment
|
||||
prod: # Production environment
|
||||
version: '1.0.0'
|
||||
description: "Valknar's home repository"
|
||||
author: 'valknar@pivoine.art'
|
||||
license: 'MIT'
|
||||
|
||||
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
|
||||
# Custom scripts and binaries
|
||||
- url: git@github.com:valknarogg/bin.git
|
||||
into: bin
|
||||
|
||||
# Version managers
|
||||
- url: https://github.com/nvm-sh/nvm.git
|
||||
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:
|
||||
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**
|
||||
|
||||
```bash
|
||||
# Sync all dev environment repositories
|
||||
arty sync --env dev
|
||||
# Sync all repositories defined in arty.yml
|
||||
arty sync
|
||||
|
||||
# Sync production repositories only
|
||||
arty sync --env prod
|
||||
# Run installation scripts
|
||||
arty debian/install
|
||||
arty rust/install
|
||||
arty zed/install
|
||||
|
||||
# Install dependencies from arty.yml
|
||||
arty install
|
||||
# Update all references
|
||||
arty update
|
||||
|
||||
# Run custom scripts defined in arty.yml
|
||||
arty debug
|
||||
|
||||
# Show dependency tree
|
||||
arty deps
|
||||
|
||||
# Update a specific reference
|
||||
arty update pivoine.art
|
||||
# Show configuration info
|
||||
arty info
|
||||
```
|
||||
|
||||
### **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
|
||||
- ✅ **Version managers** (nvm, rbenv, pyenv, gvm)
|
||||
- ✅ **Shell configuration** (Oh-My-Zsh, Powerlevel10k, plugins)
|
||||
- ✅ **Custom binaries** (from valknarogg/bin repository)
|
||||
- ✅ **Installation scripts** (system packages, development tools)
|
||||
|
||||
### **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:
|
||||
- Keep heavy media files out of production servers
|
||||
- Separate development projects from system utilities
|
||||
- Maintain clean, minimal deployments
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
@@ -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.)
|
||||
├── 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
|
||||
~/
|
||||
├── bin/ # Custom scripts and executables
|
||||
├── .nvm/ # Node Version Manager
|
||||
├── .rbenv/ # Ruby Version Manager
|
||||
├── .pyenv/ # Python Version Manager
|
||||
├── .gvm/ # Go Version Manager
|
||||
├── .oh-my-zsh/ # Oh-My-Zsh framework
|
||||
│ └── custom/
|
||||
│ ├── themes/
|
||||
│ │ └── powerlevel10k/
|
||||
│ └── 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**
|
||||
- **`.zshrc`** - Oh-My-Zsh with Powerlevel10k theme
|
||||
- **`.zlogin`** - Login script (mounts HiDrive, creates symbolic links)
|
||||
- **`.p10k.zsh`** - Powerlevel10k configuration
|
||||
- **`.bashrc`** - Bash configuration (fallback)
|
||||
|
||||
@@ -275,8 +282,21 @@ rs /local/path/ user@host:/remote/path/
|
||||
- **`.gitconfig`** - Git user configuration
|
||||
|
||||
### **Orchestration**
|
||||
- **`arty.yml`** - Repository and dependency management
|
||||
- **`playbook.yml`** - Ansible system provisioning
|
||||
- **`arty.yml`** - Repository and dependency management with installation scripts
|
||||
|
||||
---
|
||||
|
||||
## 🔗 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
|
||||
!.gitignore
|
||||
!.zshrc
|
||||
!.zlogin
|
||||
!arty.yml
|
||||
!playbook.yml
|
||||
...
|
||||
```
|
||||
|
||||
|
||||
11
arty.yml
11
arty.yml
@@ -27,13 +27,18 @@ references:
|
||||
into: .oh-my-zsh/custom/plugins/zsh-syntax-highlighting
|
||||
|
||||
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
|
||||
zed/install: curl -f https://zed.dev/install.sh | sh
|
||||
claude/install: curl -fsSL https://claude.ai/install.sh | bash
|
||||
mattermost/install:
|
||||
curl -fsS -o- https://deb.packages.mattermost.com/setup-repo.sh | sudo bash
|
||||
&& sudo apt install mattermost-desktop
|
||||
joplin/install:
|
||||
wget -O - \
|
||||
wget -O -
|
||||
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
|
||||
|
||||
288
playbook.yml
288
playbook.yml
@@ -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
|
||||
Reference in New Issue
Block a user