diff --git a/.config/zed/settings.json b/.config/zed/settings.json new file mode 100644 index 00000000..7de86075 --- /dev/null +++ b/.config/zed/settings.json @@ -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" + } +} diff --git a/.last_pwd b/.last_pwd deleted file mode 100644 index 598c5651..00000000 --- a/.last_pwd +++ /dev/null @@ -1 +0,0 @@ -repos/sexy.pivoine.art diff --git a/.zshenv b/.zshenv index 82e53d5a..e69de29b 100644 --- a/.zshenv +++ b/.zshenv @@ -1,2 +0,0 @@ - -. "$HOME/.cargo/env" diff --git a/README.md b/README.md index 345f9ae2..6edee238 100755 --- a/README.md +++ b/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 ... ``` diff --git a/arty.yml b/arty.yml index 4fe769ba..1e0d9961 100644 --- a/arty.yml +++ b/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 diff --git a/playbook.yml b/playbook.yml deleted file mode 100644 index 0c2191d0..00000000 --- a/playbook.yml +++ /dev/null @@ -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