From b58f9a558e9d16e8f9b17ab644ac3ca4fde381f5 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 01:37:10 +0100 Subject: [PATCH 01/24] Add eget installation tasks and update README with new tags --- .ansible/README.md | 12 +++-- .ansible/playbooks/setup-linux.yml | 5 ++ .ansible/playbooks/tasks/eget.yml | 78 ++++++++++++++++++++++++++++++ .ansible/variables-example.yml | 9 ++++ 4 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 .ansible/playbooks/tasks/eget.yml diff --git a/.ansible/README.md b/.ansible/README.md index 6f376dd..cbd8361 100644 --- a/.ansible/README.md +++ b/.ansible/README.md @@ -30,13 +30,14 @@ You can use tags to run specific parts of the playbook using the `--tags` flag. | Tag | Description | | --- | --- | | `apt` | Runs all APT related tasks (upgrade, install, releases). | -| `upgrade` | Performs `apt upgrade`. | -| `install` | Installs the list of packages defined in `apt.install`. | +| `brave` | Installs Brave Browser. | +| `cuda` | Specific tasks for CUDA Toolkit. | | `dotfiles` | Manages symlinks for dotfiles in your home directory. | +| `eget` | Installs `eget` and configured binary packages. | +| `install` | Installs the list of packages defined in `apt.install` and `eget` packages. | | `nvidia` | Handles NVIDIA/CUDA related installations. | -| `cuda` | Specific tasks for CUDA Toolkit. | +| `upgrade` | Performs `apt upgrade` and updates `eget` packages. | | `vscode` | Installs Visual Studio Code. | -| `brave` | Installs Brave Browser. | Example: @@ -54,7 +55,8 @@ The `setup-linux.yml` playbook performs the following operations: 3. **CUDA Toolkit**: Configures and installs NVIDIA CUDA drivers and toolkit. 4. **VS Code**: Adds the Microsoft repository and installs Visual Studio Code. 5. **Brave Browser**: Adds the Brave repository and installs the browser. -6. **Dotfiles**: Symlinks configuration files from this repository into your `$HOME`. +6. **Eget**: Installs the `eget` binary and a set of useful CLI tools to `~/.local/bin`. +7. **Dotfiles**: Symlinks configuration files from this repository into your `$HOME`. ### Note on Dotfiles Conflicts diff --git a/.ansible/playbooks/setup-linux.yml b/.ansible/playbooks/setup-linux.yml index 117d2e0..cca34c7 100644 --- a/.ansible/playbooks/setup-linux.yml +++ b/.ansible/playbooks/setup-linux.yml @@ -45,6 +45,11 @@ become: true tags: [apt, brave] + - name: Import eget installation tasks + ansible.builtin.import_tasks: tasks/eget.yml + when: eget | default(false) | bool + tags: [eget, upgrade, install] + - name: Import dotfiles symlink tasks ansible.builtin.import_tasks: tasks/dotfiles.yml when: dotfiles is defined diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml new file mode 100644 index 0000000..b3364b0 --- /dev/null +++ b/.ansible/playbooks/tasks/eget.yml @@ -0,0 +1,78 @@ +--- +- name: Check if eget is already installed + ansible.builtin.command: eget --version + register: eget_check + ignore_errors: true + changed_when: false + +- name: Get latest release of eget + ansible.builtin.uri: + url: https://api.github.com/repos/zyedidia/eget/releases/latest + return_content: true + register: eget_latest + when: eget_check.failed + +- name: Set eget facts + ansible.builtin.set_fact: + eget_version: "{{ eget_latest.json.tag_name | replace('v', '') }}" + eget_platform: >- + linux_{{ + 'amd64' if ansible_architecture == 'x86_64' + else 'arm64' if ansible_architecture == 'aarch64' + else 'arm' + }} + when: eget_check.failed + +- name: Create temporary directory for eget + ansible.builtin.tempfile: + state: directory + suffix: eget + register: eget_tmp + when: eget_check.failed + +- name: Download and extract eget + ansible.builtin.unarchive: + src: >- + https://github.com/zyedidia/eget/releases/download/v{{ eget_version }}/eget-{{ + eget_version }}-{{ eget_platform }}.tar.gz + dest: "{{ eget_tmp.path }}" + remote_src: true + extra_opts: + - "--strip-components=1" + - "eget-{{ eget_version }}-{{ eget_platform }}/eget" + when: eget_check.failed + +- name: Install eget to ~/.local/bin + ansible.builtin.copy: + src: "{{ eget_tmp.path }}/eget" + dest: "{{ lookup('env', 'HOME') }}/.local/bin/eget" + mode: '0755' + remote_src: true + when: eget_check.failed + +- name: Cleanup temporary directory + ansible.builtin.file: + path: "{{ eget_tmp.path }}" + state: absent + when: eget_check.failed and eget_tmp.path is defined + +- name: Define eget package mapping + ansible.builtin.set_fact: + eget_package_map: + exa: "-a linux-x86_64 -a ^musl ogham/exa" + fd: "-a x86_64-unknown-linux-gnu sharkdp/fd" + jq: "-a linux64 jqlang/jq" + pandoc: "jgm/pandoc" + rg: "BurntSushi/ripgrep" + yq: "-a ^.tar.gz mikefarah/yq" + +- name: Install eget packages + ansible.builtin.command: + cmd: "eget {{ eget_package_map[item] }}" + environment: + EGET_BIN: "{{ lookup('env', 'HOME') }}/.local/bin" + PATH: "{{ lookup('env', 'HOME') }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" + loop: "{{ eget_packages | default([]) }}" + register: eget_install_results + changed_when: "'Downloaded' in eget_install_results.stdout or 'Extracted' in eget_install_results.stdout" + when: eget_packages is defined and item in eget_package_map diff --git a/.ansible/variables-example.yml b/.ansible/variables-example.yml index 7c832f0..050bd37 100644 --- a/.ansible/variables-example.yml +++ b/.ansible/variables-example.yml @@ -104,6 +104,15 @@ dotfiles: .zprofile: true .zshrc: true +eget: true +eget_packages: + - exa + - fd + - jq + - pandoc + - rg + - yq + nvidia: cuda_toolkit: true cuda_toolkit_package: cuda-toolkit-13-1 From 49924214ca63e5bde73c522d69236698f7b0fafb Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 01:59:10 +0100 Subject: [PATCH 02/24] Enhance eget package management by adding new packages and updating installation commands --- .ansible/playbooks/tasks/eget.yml | 16 +++++++++++----- .ansible/variables-example.yml | 5 +++++ .devcontainer/devcontainer.json | 16 +++++++++++++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index b3364b0..a71e8bc 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -59,16 +59,22 @@ - name: Define eget package mapping ansible.builtin.set_fact: eget_package_map: + bat: "-a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat" + btop: "-a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop" + duf: "-a linux_x86_64.tar.gz muesli/duf" exa: "-a linux-x86_64 -a ^musl ogham/exa" - fd: "-a x86_64-unknown-linux-gnu sharkdp/fd" + fd: "-a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd" jq: "-a linux64 jqlang/jq" - pandoc: "jgm/pandoc" - rg: "BurntSushi/ripgrep" + pandoc: "-a linux-amd64.tar.gz jgm/pandoc" + rg: "-a x86_64-unknown-linux-musl.tar.gz BurntSushi/ripgrep" + tealdeer: "-a tealdeer-linux-x86_64-musl -a ^sha256 dbrgn/tealdeer" + vale: "-a Linux_64-bit.tar.gz errata-ai/vale" yq: "-a ^.tar.gz mikefarah/yq" - name: Install eget packages - ansible.builtin.command: - cmd: "eget {{ eget_package_map[item] }}" + ansible.builtin.shell: + cmd: "eget {{ eget_package_map[item] }} && sleep 1" + creates: "{{ lookup('env', 'HOME') }}/.local/bin/{{ item }}" environment: EGET_BIN: "{{ lookup('env', 'HOME') }}/.local/bin" PATH: "{{ lookup('env', 'HOME') }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" diff --git a/.ansible/variables-example.yml b/.ansible/variables-example.yml index 050bd37..7001cd3 100644 --- a/.ansible/variables-example.yml +++ b/.ansible/variables-example.yml @@ -106,11 +106,16 @@ dotfiles: eget: true eget_packages: + - bat + - btop + - duf - exa - fd - jq - pandoc - rg + - tealdeer + - vale - yq nvidia: diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 262360b..3b73761 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -54,5 +54,19 @@ // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", // Note: Python dependencies can be added in the `requirements.txt` file. - "onCreateCommand": "sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ansible && ansible-playbook .devcontainer/provision.yml" + "onCreateCommand": "sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ansible && ansible-playbook .devcontainer/provision.yml", + + "postCreateCommand": { + "bat": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat", + "btop": "eget -a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop", + "duf": "eget -a linux_x86_64.tar.gz muesli/duf", + "exa": "eget -a linux-x86_64 -a ^musl ogham/exa", + "fd": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd", + "jq": "eget -a linux64 jqlang/jq", + "pandoc": "eget -a linux-amd64.tar.gz jgm/pandoc", + "rg": "eget -a x86_64-unknown-linux-musl.tar.gz BurntSushi/ripgrep", + "tealdeer": "eget -a tealdeer-linux-x86_64-musl -a ^sha256 dbrgn/tealdeer", + "vale": "eget -a Linux_64-bit.tar.gz errata-ai/vale", + "yq": "eget -a ^.tar.gz mikefarah/yq" + } } From 1edb821ae136e48d6055a899430890c909ff73e5 Mon Sep 17 00:00:00 2001 From: "Rafal W." Date: Fri, 29 May 2026 02:07:37 +0100 Subject: [PATCH 03/24] Add .eget.toml configuration file --- .devcontainer/.eget.toml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .devcontainer/.eget.toml diff --git a/.devcontainer/.eget.toml b/.devcontainer/.eget.toml new file mode 100644 index 0000000..89798b4 --- /dev/null +++ b/.devcontainer/.eget.toml @@ -0,0 +1,3 @@ +[global] +target = "~/.local/bin" +upgrade_only = true From 0390fa8514e93cf16d737b857664772c7e0f06c7 Mon Sep 17 00:00:00 2001 From: "Rafal W." Date: Fri, 29 May 2026 02:15:03 +0100 Subject: [PATCH 04/24] Add .markdown-link-check.json configuration file --- .markdown-link-check.json | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .markdown-link-check.json diff --git a/.markdown-link-check.json b/.markdown-link-check.json new file mode 100644 index 0000000..e41845e --- /dev/null +++ b/.markdown-link-check.json @@ -0,0 +1,29 @@ +{ + "aliveStatusCodes": [200, 206], + "ignorePatterns": [ + { + "pattern": "^http://localhost" + }, + { + "pattern": "^https://localhost" + }, + { + "pattern": "^http://127.0.0.1" + }, + { + "pattern": "^https://127.0.0.1" + }, + { + "pattern": "^http://example.com" + }, + { + "pattern": "^https://example.com" + }, + { + "pattern": "^https://github.com/org/repo" + } + ], + "retryCount": 3, + "retryOn429": true, + "timeout": "10s" +} From cccc3c1f50433628332404f516d8b1dd311f4252 Mon Sep 17 00:00:00 2001 From: "Rafal W." Date: Fri, 29 May 2026 02:18:27 +0100 Subject: [PATCH 05/24] Delete .github/workflows/reviewdog.yml --- .github/workflows/reviewdog.yml | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 .github/workflows/reviewdog.yml diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml deleted file mode 100644 index 409b8c8..0000000 --- a/.github/workflows/reviewdog.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: reviewdog - -# yamllint disable-line rule:truthy -on: - pull_request: - push: - -jobs: - actionlint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: reviewdog/action-actionlint@v1 - - name: Add Problem Matcher for actionlint - run: | - echo "::add-matcher::.github/actionlint-matcher.json" - shell: bash From e910c31ce9d87222b09cfca77350a9880927ab30 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 02:34:20 +0100 Subject: [PATCH 06/24] Add .env file with locale settings --- .env | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 0000000..19442bf --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +LANG=en_US.UTF-8 +LC_ALL=en_US.UTF-8 \ No newline at end of file From c12a912fdd202859736d6af4cc9a47aa521569d5 Mon Sep 17 00:00:00 2001 From: "Rafal W." Date: Fri, 29 May 2026 02:51:41 +0100 Subject: [PATCH 07/24] Add eget feature to devcontainer configuration --- .devcontainer/devcontainer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3b73761..411893d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -28,6 +28,7 @@ // Features to add to the dev container. More info: https://containers.dev/features. "features": { "ghcr.io/devcontainers-contrib/features/actionlint:1": {}, + "ghcr.io/devcontainers-extra/features/eget:1": { "version": "1.3.4" }, "ghcr.io/devcontainers-contrib/features/node-asdf:0": {}, "ghcr.io/devcontainers-extra/features/pipx-package:1": {}, "ghcr.io/devcontainers/features/docker-in-docker:2": {}, From e67f7398e8d85080def646a13cb7940004782768 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 02:55:27 +0100 Subject: [PATCH 08/24] Add .eget.toml configuration file and symlink to dotfiles --- .ansible/variables-example.yml | 1 + .eget.toml | 3 +++ .env | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .eget.toml diff --git a/.ansible/variables-example.yml b/.ansible/variables-example.yml index 7001cd3..010db66 100644 --- a/.ansible/variables-example.yml +++ b/.ansible/variables-example.yml @@ -75,6 +75,7 @@ dotfiles: .ctags: true .curlrc: true .editorconfig: true + .eget.toml: true .exportsrc: true .functions_unicode: true .functionsrc: true diff --git a/.eget.toml b/.eget.toml new file mode 100644 index 0000000..89798b4 --- /dev/null +++ b/.eget.toml @@ -0,0 +1,3 @@ +[global] +target = "~/.local/bin" +upgrade_only = true diff --git a/.env b/.env index 19442bf..77b6771 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ LANG=en_US.UTF-8 -LC_ALL=en_US.UTF-8 \ No newline at end of file +LC_ALL=en_US.UTF-8 From 0b5cf798a56a83682091f6283df51624f155a809 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:06:30 +0100 Subject: [PATCH 09/24] Add pattern to ignore GitHub releases in markdown link check --- .markdown-link-check.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.markdown-link-check.json b/.markdown-link-check.json index e41845e..b6ffaf1 100644 --- a/.markdown-link-check.json +++ b/.markdown-link-check.json @@ -21,6 +21,9 @@ }, { "pattern": "^https://github.com/org/repo" + }, + { + "pattern": "^https://github.com/zyedidia/eget/releases/download/v" } ], "retryCount": 3, From e6b9899eb46ce7c982744103239969e19cc11561 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:11:26 +0100 Subject: [PATCH 10/24] Add .lycheeignore file and remove .markdown-link-check.json --- .ansible/variables-example.yml | 1 + .lycheeignore | 11 +++++++++++ .markdown-link-check.json | 32 -------------------------------- 3 files changed, 12 insertions(+), 32 deletions(-) create mode 100644 .lycheeignore delete mode 100644 .markdown-link-check.json diff --git a/.ansible/variables-example.yml b/.ansible/variables-example.yml index 010db66..f9ec29c 100644 --- a/.ansible/variables-example.yml +++ b/.ansible/variables-example.yml @@ -88,6 +88,7 @@ dotfiles: .inputrc: true .iterm2_shell_integration.zsh: true .lldbinit: true + .lycheeignore: true .markdownlint.yaml: true .mdlrc: true .my.cnf: true diff --git a/.lycheeignore b/.lycheeignore new file mode 100644 index 0000000..55e77f0 --- /dev/null +++ b/.lycheeignore @@ -0,0 +1,11 @@ +# Lychee config to exclude links +# @docs: +# Keep the order sorted. + +^https?://127\.0\.0\.1 +^https?://example\.com +^https?://localhost + +# Placeholders and templates +^https://github\.com/org/repo +^https://github\.com/zyedidia/eget/releases/download/v diff --git a/.markdown-link-check.json b/.markdown-link-check.json deleted file mode 100644 index b6ffaf1..0000000 --- a/.markdown-link-check.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "aliveStatusCodes": [200, 206], - "ignorePatterns": [ - { - "pattern": "^http://localhost" - }, - { - "pattern": "^https://localhost" - }, - { - "pattern": "^http://127.0.0.1" - }, - { - "pattern": "^https://127.0.0.1" - }, - { - "pattern": "^http://example.com" - }, - { - "pattern": "^https://example.com" - }, - { - "pattern": "^https://github.com/org/repo" - }, - { - "pattern": "^https://github.com/zyedidia/eget/releases/download/v" - } - ], - "retryCount": 3, - "retryOn429": true, - "timeout": "10s" -} From d520210a5135173499a0251eb135660da1aacd58 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:21:51 +0100 Subject: [PATCH 11/24] Add .markdown-link-check.json configuration file --- .markdown-link-check.json | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .markdown-link-check.json diff --git a/.markdown-link-check.json b/.markdown-link-check.json new file mode 100644 index 0000000..b6ffaf1 --- /dev/null +++ b/.markdown-link-check.json @@ -0,0 +1,32 @@ +{ + "aliveStatusCodes": [200, 206], + "ignorePatterns": [ + { + "pattern": "^http://localhost" + }, + { + "pattern": "^https://localhost" + }, + { + "pattern": "^http://127.0.0.1" + }, + { + "pattern": "^https://127.0.0.1" + }, + { + "pattern": "^http://example.com" + }, + { + "pattern": "^https://example.com" + }, + { + "pattern": "^https://github.com/org/repo" + }, + { + "pattern": "^https://github.com/zyedidia/eget/releases/download/v" + } + ], + "retryCount": 3, + "retryOn429": true, + "timeout": "10s" +} From 6da74826f1f2e8db7f9a87b4055187c7a72cfc8a Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:23:08 +0100 Subject: [PATCH 12/24] Add task to ensure ~/.local/bin directory exists for eget installation --- .ansible/playbooks/tasks/eget.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index a71e8bc..867793f 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -1,4 +1,10 @@ --- +- name: Ensure ~/.local/bin exists + ansible.builtin.file: + path: "{{ lookup('env', 'HOME') }}/.local/bin" + state: directory + mode: '0755' + - name: Check if eget is already installed ansible.builtin.command: eget --version register: eget_check From 9fced07d17ec10117cc7814ac0943b353da85d33 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:24:53 +0100 Subject: [PATCH 13/24] Add architecture-aware package mapping for eget installation --- .ansible/playbooks/tasks/eget.yml | 32 +++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 867793f..1d21be5 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -63,18 +63,30 @@ when: eget_check.failed and eget_tmp.path is defined - name: Define eget package mapping + ansible.builtin.set_fact: + eget_arch: >- + {{ 'x86_64' if ansible_architecture == 'x86_64' + else 'arm64' if ansible_architecture == 'aarch64' + else 'arm' }} + eget_plain_arch: "{{ ansible_architecture }}" + +- name: Set architecture-aware package mappings ansible.builtin.set_fact: eget_package_map: - bat: "-a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat" - btop: "-a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop" - duf: "-a linux_x86_64.tar.gz muesli/duf" - exa: "-a linux-x86_64 -a ^musl ogham/exa" - fd: "-a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd" - jq: "-a linux64 jqlang/jq" - pandoc: "-a linux-amd64.tar.gz jgm/pandoc" - rg: "-a x86_64-unknown-linux-musl.tar.gz BurntSushi/ripgrep" - tealdeer: "-a tealdeer-linux-x86_64-musl -a ^sha256 dbrgn/tealdeer" - vale: "-a Linux_64-bit.tar.gz errata-ai/vale" + bat: >- + -a {{ eget_arch }}-unknown-linux-{{ 'gnu' if eget_arch == 'x86_64' else 'musl' }} + -a tar.gz sharkdp/bat + btop: "-a btop-{{ eget_plain_arch }}-unknown-linux-musl.tar.gz aristocratos/btop" + duf: "-a linux_{{ eget_arch }}.tar.gz muesli/duf" + exa: "-a linux-{{ eget_plain_arch }} -a ^musl ogham/exa" + fd: "-a {{ eget_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" + jq: >- + -a {{ 'linux64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} + jqlang/jq + pandoc: "-a linux-{{ 'amd64' if eget_arch == 'x86_64' else 'arm64' }}.tar.gz jgm/pandoc" + rg: "-a {{ eget_plain_arch }}-unknown-linux-musl.tar.gz BurntSushi/ripgrep" + tealdeer: "-a tealdeer-linux-{{ eget_arch }}-musl -a ^sha256 dbrgn/tealdeer" + vale: "-a {{ 'Linux_64-bit' if eget_arch == 'x86_64' else 'Linux_arm64' }}.tar.gz errata-ai/vale" yq: "-a ^.tar.gz mikefarah/yq" - name: Install eget packages From 9e7d47824f0eba959c1590070c6fbd5c1b179d84 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:26:16 +0100 Subject: [PATCH 14/24] Update paths to use ansible_user_dir instead of lookup for HOME in dotfiles and eget tasks --- .ansible/playbooks/tasks/dotfiles.yml | 16 ++++++++-------- .ansible/playbooks/tasks/eget.yml | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.ansible/playbooks/tasks/dotfiles.yml b/.ansible/playbooks/tasks/dotfiles.yml index c4e21e4..0ad95f6 100644 --- a/.ansible/playbooks/tasks/dotfiles.yml +++ b/.ansible/playbooks/tasks/dotfiles.yml @@ -1,7 +1,7 @@ --- - name: Check if dotfiles exist (files) ansible.builtin.stat: - path: "{{ lookup('env', 'HOME') }}/{{ item.key }}" + path: "{{ ansible_user_dir }}/{{ item.key }}" loop: "{{ dotfiles.files | dict2items }}" register: dotfiles_stat @@ -16,7 +16,7 @@ - name: Remove symlink if set to false (files) ansible.builtin.file: - path: "{{ lookup('env', 'HOME') }}/{{ item.item.key }}" + path: "{{ ansible_user_dir }}/{{ item.item.key }}" state: absent loop: "{{ dotfiles_stat.results }}" when: @@ -26,7 +26,7 @@ - name: Create symlinks for dotfiles (files) ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ lookup('env', 'HOME') }}/{{ item.item.key }}" + dest: "{{ ansible_user_dir }}/{{ item.item.key }}" state: link force: false loop: "{{ dotfiles_stat.results }}" @@ -37,7 +37,7 @@ - name: Create symlinks for dotfiles with .new extension if file exists ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ lookup('env', 'HOME') }}/{{ item.item.key }}.new" + dest: "{{ ansible_user_dir }}/{{ item.item.key }}.new" state: link force: true loop: "{{ dotfiles_stat.results }}" @@ -48,7 +48,7 @@ - name: Check if dotfiles exist (directories) ansible.builtin.stat: - path: "{{ lookup('env', 'HOME') }}/{{ item.key }}" + path: "{{ ansible_user_dir }}/{{ item.key }}" loop: "{{ dotfiles.dirs | dict2items }}" register: dotdirs_stat @@ -63,7 +63,7 @@ - name: Remove symlink if set to false (directories) ansible.builtin.file: - path: "{{ lookup('env', 'HOME') }}/{{ item.item.key }}" + path: "{{ ansible_user_dir }}/{{ item.item.key }}" state: absent loop: "{{ dotdirs_stat.results }}" when: @@ -73,7 +73,7 @@ - name: Create symlinks for dotfiles (directories) ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ lookup('env', 'HOME') }}/{{ item.item.key }}" + dest: "{{ ansible_user_dir }}/{{ item.item.key }}" state: link force: false loop: "{{ dotdirs_stat.results }}" @@ -84,7 +84,7 @@ - name: Create symlinks for dotfiles (directories) with .new extension if directory exists ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ lookup('env', 'HOME') }}/{{ item.item.key }}.new" + dest: "{{ ansible_user_dir }}/{{ item.item.key }}.new" state: link force: true loop: "{{ dotdirs_stat.results }}" diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 1d21be5..483b87d 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -1,7 +1,7 @@ --- - name: Ensure ~/.local/bin exists ansible.builtin.file: - path: "{{ lookup('env', 'HOME') }}/.local/bin" + path: "{{ ansible_user_dir }}/.local/bin" state: directory mode: '0755' @@ -51,7 +51,7 @@ - name: Install eget to ~/.local/bin ansible.builtin.copy: src: "{{ eget_tmp.path }}/eget" - dest: "{{ lookup('env', 'HOME') }}/.local/bin/eget" + dest: "{{ ansible_user_dir }}/.local/bin/eget" mode: '0755' remote_src: true when: eget_check.failed @@ -92,10 +92,10 @@ - name: Install eget packages ansible.builtin.shell: cmd: "eget {{ eget_package_map[item] }} && sleep 1" - creates: "{{ lookup('env', 'HOME') }}/.local/bin/{{ item }}" + creates: "{{ ansible_user_dir }}/.local/bin/{{ item }}" environment: - EGET_BIN: "{{ lookup('env', 'HOME') }}/.local/bin" - PATH: "{{ lookup('env', 'HOME') }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" + EGET_BIN: "{{ ansible_user_dir }}/.local/bin" + PATH: "{{ ansible_user_dir }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" loop: "{{ eget_packages | default([]) }}" register: eget_install_results changed_when: "'Downloaded' in eget_install_results.stdout or 'Extracted' in eget_install_results.stdout" From 8bef068bb0f38a78d2f154fa26fea5f5af19c3d8 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:26:38 +0100 Subject: [PATCH 15/24] Idempotency check may not find the installed binary. --- .ansible/playbooks/tasks/eget.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 483b87d..6c751b7 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -6,17 +6,16 @@ mode: '0755' - name: Check if eget is already installed - ansible.builtin.command: eget --version - register: eget_check - ignore_errors: true - changed_when: false + ansible.builtin.stat: + path: "{{ ansible_user_dir }}/.local/bin/eget" + register: eget_stat - name: Get latest release of eget ansible.builtin.uri: url: https://api.github.com/repos/zyedidia/eget/releases/latest return_content: true register: eget_latest - when: eget_check.failed + when: not eget_stat.stat.exists - name: Set eget facts ansible.builtin.set_fact: @@ -27,14 +26,14 @@ else 'arm64' if ansible_architecture == 'aarch64' else 'arm' }} - when: eget_check.failed + when: not eget_stat.stat.exists - name: Create temporary directory for eget ansible.builtin.tempfile: state: directory suffix: eget register: eget_tmp - when: eget_check.failed + when: not eget_stat.stat.exists - name: Download and extract eget ansible.builtin.unarchive: @@ -46,7 +45,7 @@ extra_opts: - "--strip-components=1" - "eget-{{ eget_version }}-{{ eget_platform }}/eget" - when: eget_check.failed + when: not eget_stat.stat.exists - name: Install eget to ~/.local/bin ansible.builtin.copy: @@ -54,13 +53,13 @@ dest: "{{ ansible_user_dir }}/.local/bin/eget" mode: '0755' remote_src: true - when: eget_check.failed + when: not eget_stat.stat.exists - name: Cleanup temporary directory ansible.builtin.file: path: "{{ eget_tmp.path }}" state: absent - when: eget_check.failed and eget_tmp.path is defined + when: not eget_stat.stat.exists and eget_tmp.path is defined - name: Define eget package mapping ansible.builtin.set_fact: From 38a74f5b9b9c6b02f756550f0317f52f047d09d8 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:27:50 +0100 Subject: [PATCH 16/24] Fix regex for eget version extraction to remove leading 'v'. Stripping all v characters from tag_name can mis-handle more complex version tags. --- .ansible/playbooks/tasks/eget.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 6c751b7..51d6e7a 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -19,7 +19,7 @@ - name: Set eget facts ansible.builtin.set_fact: - eget_version: "{{ eget_latest.json.tag_name | replace('v', '') }}" + eget_version: "{{ eget_latest.json.tag_name | regex_replace('^v', '') }}" eget_platform: >- linux_{{ 'amd64' if ansible_architecture == 'x86_64' From 205d9579b1e78e937b579a068152b58bf64953c7 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:30:41 +0100 Subject: [PATCH 17/24] Replace ogham/exa with maintained eza (eza-community/eza) --- .ansible/playbooks/tasks/eget.yml | 2 +- .ansible/variables-example.yml | 3 +-- .devcontainer/devcontainer.json | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 51d6e7a..1770b3a 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -77,7 +77,7 @@ -a tar.gz sharkdp/bat btop: "-a btop-{{ eget_plain_arch }}-unknown-linux-musl.tar.gz aristocratos/btop" duf: "-a linux_{{ eget_arch }}.tar.gz muesli/duf" - exa: "-a linux-{{ eget_plain_arch }} -a ^musl ogham/exa" + eza: "-a linux-{{ eget_plain_arch }} -a ^musl eza-community/eza" fd: "-a {{ eget_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" jq: >- -a {{ 'linux64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} diff --git a/.ansible/variables-example.yml b/.ansible/variables-example.yml index f9ec29c..ea6bdb6 100644 --- a/.ansible/variables-example.yml +++ b/.ansible/variables-example.yml @@ -5,7 +5,6 @@ apt: install: - 7zip - - btop - btrfs-progs - coreutils - curl @@ -111,7 +110,7 @@ eget_packages: - bat - btop - duf - - exa + - eza - fd - jq - pandoc diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 411893d..7ce1129 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -61,7 +61,7 @@ "bat": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat", "btop": "eget -a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop", "duf": "eget -a linux_x86_64.tar.gz muesli/duf", - "exa": "eget -a linux-x86_64 -a ^musl ogham/exa", + "eza": "eget -a linux-x86_64 -a ^musl eza-community/eza", "fd": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd", "jq": "eget -a linux64 jqlang/jq", "pandoc": "eget -a linux-amd64.tar.gz jgm/pandoc", From 5ad106522f4f5ca86069267fe58117afdb12f913 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 03:53:18 +0100 Subject: [PATCH 18/24] Update paths to use ansible_facts['user_dir'] for consistency in dotfiles and eget tasks --- .ansible/playbooks/tasks/dotfiles.yml | 16 ++++++++-------- .ansible/playbooks/tasks/eget.yml | 24 ++++++++++++------------ .devcontainer/devcontainer.json | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.ansible/playbooks/tasks/dotfiles.yml b/.ansible/playbooks/tasks/dotfiles.yml index 0ad95f6..88876b3 100644 --- a/.ansible/playbooks/tasks/dotfiles.yml +++ b/.ansible/playbooks/tasks/dotfiles.yml @@ -1,7 +1,7 @@ --- - name: Check if dotfiles exist (files) ansible.builtin.stat: - path: "{{ ansible_user_dir }}/{{ item.key }}" + path: "{{ ansible_facts['user_dir'] }}/{{ item.key }}" loop: "{{ dotfiles.files | dict2items }}" register: dotfiles_stat @@ -16,7 +16,7 @@ - name: Remove symlink if set to false (files) ansible.builtin.file: - path: "{{ ansible_user_dir }}/{{ item.item.key }}" + path: "{{ ansible_facts['user_dir'] }}/{{ item.item.key }}" state: absent loop: "{{ dotfiles_stat.results }}" when: @@ -26,7 +26,7 @@ - name: Create symlinks for dotfiles (files) ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ ansible_user_dir }}/{{ item.item.key }}" + dest: "{{ ansible_facts['user_dir'] }}/{{ item.item.key }}" state: link force: false loop: "{{ dotfiles_stat.results }}" @@ -37,7 +37,7 @@ - name: Create symlinks for dotfiles with .new extension if file exists ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ ansible_user_dir }}/{{ item.item.key }}.new" + dest: "{{ ansible_facts['user_dir'] }}/{{ item.item.key }}.new" state: link force: true loop: "{{ dotfiles_stat.results }}" @@ -48,7 +48,7 @@ - name: Check if dotfiles exist (directories) ansible.builtin.stat: - path: "{{ ansible_user_dir }}/{{ item.key }}" + path: "{{ ansible_facts['user_dir'] }}/{{ item.key }}" loop: "{{ dotfiles.dirs | dict2items }}" register: dotdirs_stat @@ -63,7 +63,7 @@ - name: Remove symlink if set to false (directories) ansible.builtin.file: - path: "{{ ansible_user_dir }}/{{ item.item.key }}" + path: "{{ ansible_facts['user_dir'] }}/{{ item.item.key }}" state: absent loop: "{{ dotdirs_stat.results }}" when: @@ -73,7 +73,7 @@ - name: Create symlinks for dotfiles (directories) ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ ansible_user_dir }}/{{ item.item.key }}" + dest: "{{ ansible_facts['user_dir'] }}/{{ item.item.key }}" state: link force: false loop: "{{ dotdirs_stat.results }}" @@ -84,7 +84,7 @@ - name: Create symlinks for dotfiles (directories) with .new extension if directory exists ansible.builtin.file: src: "{{ (playbook_dir + '/../../' + item.item.key) | realpath }}" - dest: "{{ ansible_user_dir }}/{{ item.item.key }}.new" + dest: "{{ ansible_facts['user_dir'] }}/{{ item.item.key }}.new" state: link force: true loop: "{{ dotdirs_stat.results }}" diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 1770b3a..0a0cfb9 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -1,13 +1,13 @@ --- - name: Ensure ~/.local/bin exists ansible.builtin.file: - path: "{{ ansible_user_dir }}/.local/bin" + path: "{{ ansible_facts['user_dir'] }}/.local/bin" state: directory mode: '0755' - name: Check if eget is already installed ansible.builtin.stat: - path: "{{ ansible_user_dir }}/.local/bin/eget" + path: "{{ ansible_facts['user_dir'] }}/.local/bin/eget" register: eget_stat - name: Get latest release of eget @@ -22,8 +22,8 @@ eget_version: "{{ eget_latest.json.tag_name | regex_replace('^v', '') }}" eget_platform: >- linux_{{ - 'amd64' if ansible_architecture == 'x86_64' - else 'arm64' if ansible_architecture == 'aarch64' + 'amd64' if ansible_facts['architecture'] == 'x86_64' + else 'arm64' if ansible_facts['architecture'] == 'aarch64' else 'arm' }} when: not eget_stat.stat.exists @@ -50,7 +50,7 @@ - name: Install eget to ~/.local/bin ansible.builtin.copy: src: "{{ eget_tmp.path }}/eget" - dest: "{{ ansible_user_dir }}/.local/bin/eget" + dest: "{{ ansible_facts['user_dir'] }}/.local/bin/eget" mode: '0755' remote_src: true when: not eget_stat.stat.exists @@ -64,10 +64,10 @@ - name: Define eget package mapping ansible.builtin.set_fact: eget_arch: >- - {{ 'x86_64' if ansible_architecture == 'x86_64' - else 'arm64' if ansible_architecture == 'aarch64' + {{ 'x86_64' if ansible_facts['architecture'] == 'x86_64' + else 'arm64' if ansible_facts['architecture'] == 'aarch64' else 'arm' }} - eget_plain_arch: "{{ ansible_architecture }}" + eget_plain_arch: "{{ ansible_facts['architecture'] }}" - name: Set architecture-aware package mappings ansible.builtin.set_fact: @@ -77,7 +77,7 @@ -a tar.gz sharkdp/bat btop: "-a btop-{{ eget_plain_arch }}-unknown-linux-musl.tar.gz aristocratos/btop" duf: "-a linux_{{ eget_arch }}.tar.gz muesli/duf" - eza: "-a linux-{{ eget_plain_arch }} -a ^musl eza-community/eza" + eza: "-a {{ eget_plain_arch }}-unknown-linux-gnu -a ^no_libgit -a tar.gz eza-community/eza" fd: "-a {{ eget_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" jq: >- -a {{ 'linux64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} @@ -91,10 +91,10 @@ - name: Install eget packages ansible.builtin.shell: cmd: "eget {{ eget_package_map[item] }} && sleep 1" - creates: "{{ ansible_user_dir }}/.local/bin/{{ item }}" + creates: "{{ ansible_facts['user_dir'] }}/.local/bin/{{ item }}" environment: - EGET_BIN: "{{ ansible_user_dir }}/.local/bin" - PATH: "{{ ansible_user_dir }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" + EGET_BIN: "{{ ansible_facts['user_dir'] }}/.local/bin" + PATH: "{{ ansible_facts['user_dir'] }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" loop: "{{ eget_packages | default([]) }}" register: eget_install_results changed_when: "'Downloaded' in eget_install_results.stdout or 'Extracted' in eget_install_results.stdout" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7ce1129..7eb5df7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -61,7 +61,7 @@ "bat": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat", "btop": "eget -a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop", "duf": "eget -a linux_x86_64.tar.gz muesli/duf", - "eza": "eget -a linux-x86_64 -a ^musl eza-community/eza", + "eza": "eget -a x86_64-unknown-linux-gnu -a ^no_libgit -a tar.gz eza-community/eza", "fd": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd", "jq": "eget -a linux64 jqlang/jq", "pandoc": "eget -a linux-amd64.tar.gz jgm/pandoc", From cac4097b9114772c53fdba91b5d9e06a222ba170 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 22:34:40 +0100 Subject: [PATCH 19/24] Refactor README.md for clarity and conciseness in Ansible setup instructions --- .ansible/README.md | 8 ++++---- README.md | 49 ++++++++++++---------------------------------- 2 files changed, 17 insertions(+), 40 deletions(-) diff --git a/.ansible/README.md b/.ansible/README.md index cbd8361..ad7db59 100644 --- a/.ansible/README.md +++ b/.ansible/README.md @@ -5,21 +5,21 @@ These playbooks are used to set up and configure your Linux environment autonomo ## Requirements - `pipenv` + Install by: `sudo apt --yes install pipenv` - `ansible` (installed via Pipenv) ## Usage -Before running the playbooks, ensure you have your `variables.yml` set up: +Before running the playbook, ensure you have your `variables.yml` set up: ```bash -cd .ansible/ -cp variables-example.yml variables.yml -# Edit variables.yml to your liking +cp variables-example.yml variables.yml # Modify after copy. ``` Run the setup playbook: ```bash +pipenv sync pipenv run ansible-playbook -i inventory/hosts playbooks/setup-linux.yml -K ``` diff --git a/README.md b/README.md index 923bfaf..338525e 100644 --- a/README.md +++ b/README.md @@ -8,42 +8,7 @@ Clone repository into your HOME dir, then execute in the repo folder: ### Ansible Setup -Before running Ansible playbooks (like `setup-linux.yml`), -perform the initial setup: - -```console -sudo apt --yes install pipenv -cd .ansible/ -cp variables-example.yml variables.yml # Modify after copy. -pipenv sync -pipenv run ansible-playbook -i inventory/hosts playbooks/setup-linux.yml -K -``` - -### Apply dotfiles - -```console -dotfiles$ make install -``` - -If you got warning *File exists*, -consider moving/removing your existing file and re-run again. - -### Support - -The dot/rc files should be compatible -with Linux, macOS and WSL (Ubuntu on Windows). - -### Troubleshooting - -If you get the following error while loading *rc* files: - -> syntax error near unexpected token `&' - -you need to upgrade your `bash` by the following steps: - -1. `brew install bash` -1. `sudo ex +'$put =\"/usr/local/bin/bash\"' -scwq /etc/shells` -1. `chsh -s /usr/local/bin/bash` +Follow steps from: [`./ansible/README.md`](./ansible/README.md) ## Development @@ -59,3 +24,15 @@ Run repository-wide validation before opening a pull request: ```bash pre-commit run -a ``` + +## Troubleshooting + +If you get the following error while loading *rc* files: + +> syntax error near unexpected token `&' + +you need to upgrade your `bash` by the following steps: + +1. `brew install bash` +1. `sudo ex +'$put =\"/usr/local/bin/bash\"' -scwq /etc/shells` +1. `chsh -s /usr/local/bin/bash` \ No newline at end of file From c146596b57cf33450070592a37c074e93a0f2d28 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 29 May 2026 22:40:38 +0100 Subject: [PATCH 20/24] Add alpha-miner to eget package mapping and variables example --- .ansible/playbooks/tasks/eget.yml | 1 + .ansible/variables-example.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index 0a0cfb9..ff30697 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -72,6 +72,7 @@ - name: Set architecture-aware package mappings ansible.builtin.set_fact: eget_package_map: + alpha-miner: "-a .tar.gz --file alpha/alpha --tag v1.7.5-beta --to alpha-miner AlphaMine-Tech/alpha-miner" bat: >- -a {{ eget_arch }}-unknown-linux-{{ 'gnu' if eget_arch == 'x86_64' else 'musl' }} -a tar.gz sharkdp/bat diff --git a/.ansible/variables-example.yml b/.ansible/variables-example.yml index ea6bdb6..85e7021 100644 --- a/.ansible/variables-example.yml +++ b/.ansible/variables-example.yml @@ -107,6 +107,7 @@ dotfiles: eget: true eget_packages: + - alpha-miner - bat - btop - duf From 6f5085838d7f3417a0be6b6c60b2ac01460bc797 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 29 May 2026 22:00:28 +0000 Subject: [PATCH 21/24] Fix pre-commit, links, and eget setup. Co-authored-by: kenorb --- .ansible/playbooks/tasks/eget.yml | 25 ++++++++++++++++--------- .devcontainer/devcontainer.json | 25 ++++++++++++++----------- .lycheeignore | 4 ++-- .markdown-link-check.json | 19 +++++-------------- README.md | 4 ++-- 5 files changed, 39 insertions(+), 38 deletions(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index ff30697..eeed915 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -74,29 +74,36 @@ eget_package_map: alpha-miner: "-a .tar.gz --file alpha/alpha --tag v1.7.5-beta --to alpha-miner AlphaMine-Tech/alpha-miner" bat: >- - -a {{ eget_arch }}-unknown-linux-{{ 'gnu' if eget_arch == 'x86_64' else 'musl' }} + -a {{ eget_plain_arch }}-unknown-linux-{{ 'gnu' if eget_plain_arch == 'x86_64' else 'musl' }} -a tar.gz sharkdp/bat btop: "-a btop-{{ eget_plain_arch }}-unknown-linux-musl.tar.gz aristocratos/btop" duf: "-a linux_{{ eget_arch }}.tar.gz muesli/duf" eza: "-a {{ eget_plain_arch }}-unknown-linux-gnu -a ^no_libgit -a tar.gz eza-community/eza" - fd: "-a {{ eget_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" + fd: "-a {{ eget_plain_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" jq: >- - -a {{ 'linux64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} + -a {{ 'linux-amd64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} jqlang/jq pandoc: "-a linux-{{ 'amd64' if eget_arch == 'x86_64' else 'arm64' }}.tar.gz jgm/pandoc" - rg: "-a {{ eget_plain_arch }}-unknown-linux-musl.tar.gz BurntSushi/ripgrep" - tealdeer: "-a tealdeer-linux-{{ eget_arch }}-musl -a ^sha256 dbrgn/tealdeer" + rg: >- + -a {{ eget_plain_arch }}-unknown-linux-{{ 'musl' if eget_plain_arch == 'x86_64' else 'gnu' }}.tar.gz + BurntSushi/ripgrep + tealdeer: "-a tealdeer-linux-{{ eget_plain_arch }}-musl -a ^sha256 tealdeer-rs/tealdeer" vale: "-a {{ 'Linux_64-bit' if eget_arch == 'x86_64' else 'Linux_arm64' }}.tar.gz errata-ai/vale" yq: "-a ^.tar.gz mikefarah/yq" - name: Install eget packages ansible.builtin.shell: cmd: "eget {{ eget_package_map[item] }} && sleep 1" - creates: "{{ ansible_facts['user_dir'] }}/.local/bin/{{ item }}" environment: EGET_BIN: "{{ ansible_facts['user_dir'] }}/.local/bin" PATH: "{{ ansible_facts['user_dir'] }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" loop: "{{ eget_packages | default([]) }}" - register: eget_install_results - changed_when: "'Downloaded' in eget_install_results.stdout or 'Extracted' in eget_install_results.stdout" - when: eget_packages is defined and item in eget_package_map + register: eget_install_result + changed_when: > + 'Downloaded' in eget_install_result.stdout or + 'Extracted' in eget_install_result.stdout or + 'Updated' in eget_install_result.stdout + when: > + eget_packages is defined and item in eget_package_map and + (ansible_run_tags | intersect(['upgrade', 'eget-upgrade']) | length > 0 or + not (ansible_facts['user_dir'] ~ '/.local/bin/' ~ item) is exists) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7eb5df7..13b0058 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -54,20 +54,23 @@ // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", + "containerEnv": { + "EGET_BIN": "/home/vscode/.local/bin" + }, // Note: Python dependencies can be added in the `requirements.txt` file. "onCreateCommand": "sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ansible && ansible-playbook .devcontainer/provision.yml", "postCreateCommand": { - "bat": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat", - "btop": "eget -a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop", - "duf": "eget -a linux_x86_64.tar.gz muesli/duf", - "eza": "eget -a x86_64-unknown-linux-gnu -a ^no_libgit -a tar.gz eza-community/eza", - "fd": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd", - "jq": "eget -a linux64 jqlang/jq", - "pandoc": "eget -a linux-amd64.tar.gz jgm/pandoc", - "rg": "eget -a x86_64-unknown-linux-musl.tar.gz BurntSushi/ripgrep", - "tealdeer": "eget -a tealdeer-linux-x86_64-musl -a ^sha256 dbrgn/tealdeer", - "vale": "eget -a Linux_64-bit.tar.gz errata-ai/vale", - "yq": "eget -a ^.tar.gz mikefarah/yq" + "bat": "eget sharkdp/bat", + "btop": "eget aristocratos/btop", + "duf": "eget muesli/duf", + "eza": "eget eza-community/eza", + "fd": "eget sharkdp/fd", + "jq": "eget jqlang/jq", + "pandoc": "eget jgm/pandoc", + "rg": "eget BurntSushi/ripgrep", + "tealdeer": "eget tealdeer-rs/tealdeer", + "vale": "eget errata-ai/vale", + "yq": "eget mikefarah/yq" } } diff --git a/.lycheeignore b/.lycheeignore index 55e77f0..99e423b 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -1,11 +1,11 @@ # Lychee config to exclude links # @docs: -# Keep the order sorted. +# Keep entries sorted within each section. ^https?://127\.0\.0\.1 ^https?://example\.com ^https?://localhost # Placeholders and templates -^https://github\.com/org/repo +^https://github\.com/kenorb/dotfiles ^https://github\.com/zyedidia/eget/releases/download/v diff --git a/.markdown-link-check.json b/.markdown-link-check.json index b6ffaf1..ab3c7f2 100644 --- a/.markdown-link-check.json +++ b/.markdown-link-check.json @@ -2,28 +2,19 @@ "aliveStatusCodes": [200, 206], "ignorePatterns": [ { - "pattern": "^http://localhost" + "pattern": "^https?://localhost" }, { - "pattern": "^https://localhost" + "pattern": "^https?://127\\.0\\.0\\.1" }, { - "pattern": "^http://127.0.0.1" + "pattern": "^https?://example\\.com" }, { - "pattern": "^https://127.0.0.1" + "pattern": "^https://github\\.com/kenorb/dotfiles" }, { - "pattern": "^http://example.com" - }, - { - "pattern": "^https://example.com" - }, - { - "pattern": "^https://github.com/org/repo" - }, - { - "pattern": "^https://github.com/zyedidia/eget/releases/download/v" + "pattern": "^https://github\\.com/zyedidia/eget/releases/download/v" } ], "retryCount": 3, diff --git a/README.md b/README.md index 338525e..0180508 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Clone repository into your HOME dir, then execute in the repo folder: ### Ansible Setup -Follow steps from: [`./ansible/README.md`](./ansible/README.md) +Follow steps from: [`.ansible/README.md`](./.ansible/README.md) ## Development @@ -35,4 +35,4 @@ you need to upgrade your `bash` by the following steps: 1. `brew install bash` 1. `sudo ex +'$put =\"/usr/local/bin/bash\"' -scwq /etc/shells` -1. `chsh -s /usr/local/bin/bash` \ No newline at end of file +1. `chsh -s /usr/local/bin/bash` From dac40d72218f1e54283bd79bfccac7eed853d8ab Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 29 May 2026 23:03:56 +0000 Subject: [PATCH 22/24] Revert "Fix pre-commit, links, and eget setup." This reverts commit 6f5085838d7f3417a0be6b6c60b2ac01460bc797. --- .ansible/playbooks/tasks/eget.yml | 25 +++++++++---------------- .devcontainer/devcontainer.json | 25 +++++++++++-------------- .lycheeignore | 4 ++-- .markdown-link-check.json | 19 ++++++++++++++----- README.md | 4 ++-- 5 files changed, 38 insertions(+), 39 deletions(-) diff --git a/.ansible/playbooks/tasks/eget.yml b/.ansible/playbooks/tasks/eget.yml index eeed915..ff30697 100644 --- a/.ansible/playbooks/tasks/eget.yml +++ b/.ansible/playbooks/tasks/eget.yml @@ -74,36 +74,29 @@ eget_package_map: alpha-miner: "-a .tar.gz --file alpha/alpha --tag v1.7.5-beta --to alpha-miner AlphaMine-Tech/alpha-miner" bat: >- - -a {{ eget_plain_arch }}-unknown-linux-{{ 'gnu' if eget_plain_arch == 'x86_64' else 'musl' }} + -a {{ eget_arch }}-unknown-linux-{{ 'gnu' if eget_arch == 'x86_64' else 'musl' }} -a tar.gz sharkdp/bat btop: "-a btop-{{ eget_plain_arch }}-unknown-linux-musl.tar.gz aristocratos/btop" duf: "-a linux_{{ eget_arch }}.tar.gz muesli/duf" eza: "-a {{ eget_plain_arch }}-unknown-linux-gnu -a ^no_libgit -a tar.gz eza-community/eza" - fd: "-a {{ eget_plain_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" + fd: "-a {{ eget_arch }}-unknown-linux-gnu -a tar.gz sharkdp/fd" jq: >- - -a {{ 'linux-amd64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} + -a {{ 'linux64' if eget_arch == 'x86_64' else 'linux-arm64' if eget_arch == 'arm64' else 'linux-arm' }} jqlang/jq pandoc: "-a linux-{{ 'amd64' if eget_arch == 'x86_64' else 'arm64' }}.tar.gz jgm/pandoc" - rg: >- - -a {{ eget_plain_arch }}-unknown-linux-{{ 'musl' if eget_plain_arch == 'x86_64' else 'gnu' }}.tar.gz - BurntSushi/ripgrep - tealdeer: "-a tealdeer-linux-{{ eget_plain_arch }}-musl -a ^sha256 tealdeer-rs/tealdeer" + rg: "-a {{ eget_plain_arch }}-unknown-linux-musl.tar.gz BurntSushi/ripgrep" + tealdeer: "-a tealdeer-linux-{{ eget_arch }}-musl -a ^sha256 dbrgn/tealdeer" vale: "-a {{ 'Linux_64-bit' if eget_arch == 'x86_64' else 'Linux_arm64' }}.tar.gz errata-ai/vale" yq: "-a ^.tar.gz mikefarah/yq" - name: Install eget packages ansible.builtin.shell: cmd: "eget {{ eget_package_map[item] }} && sleep 1" + creates: "{{ ansible_facts['user_dir'] }}/.local/bin/{{ item }}" environment: EGET_BIN: "{{ ansible_facts['user_dir'] }}/.local/bin" PATH: "{{ ansible_facts['user_dir'] }}/.local/bin:{{ ansible_facts['env']['PATH'] }}" loop: "{{ eget_packages | default([]) }}" - register: eget_install_result - changed_when: > - 'Downloaded' in eget_install_result.stdout or - 'Extracted' in eget_install_result.stdout or - 'Updated' in eget_install_result.stdout - when: > - eget_packages is defined and item in eget_package_map and - (ansible_run_tags | intersect(['upgrade', 'eget-upgrade']) | length > 0 or - not (ansible_facts['user_dir'] ~ '/.local/bin/' ~ item) is exists) + register: eget_install_results + changed_when: "'Downloaded' in eget_install_results.stdout or 'Extracted' in eget_install_results.stdout" + when: eget_packages is defined and item in eget_package_map diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 13b0058..7eb5df7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -54,23 +54,20 @@ // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", - "containerEnv": { - "EGET_BIN": "/home/vscode/.local/bin" - }, // Note: Python dependencies can be added in the `requirements.txt` file. "onCreateCommand": "sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ansible && ansible-playbook .devcontainer/provision.yml", "postCreateCommand": { - "bat": "eget sharkdp/bat", - "btop": "eget aristocratos/btop", - "duf": "eget muesli/duf", - "eza": "eget eza-community/eza", - "fd": "eget sharkdp/fd", - "jq": "eget jqlang/jq", - "pandoc": "eget jgm/pandoc", - "rg": "eget BurntSushi/ripgrep", - "tealdeer": "eget tealdeer-rs/tealdeer", - "vale": "eget errata-ai/vale", - "yq": "eget mikefarah/yq" + "bat": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/bat", + "btop": "eget -a btop-x86_64-unknown-linux-musl.tar.gz aristocratos/btop", + "duf": "eget -a linux_x86_64.tar.gz muesli/duf", + "eza": "eget -a x86_64-unknown-linux-gnu -a ^no_libgit -a tar.gz eza-community/eza", + "fd": "eget -a x86_64-unknown-linux-gnu -a tar.gz sharkdp/fd", + "jq": "eget -a linux64 jqlang/jq", + "pandoc": "eget -a linux-amd64.tar.gz jgm/pandoc", + "rg": "eget -a x86_64-unknown-linux-musl.tar.gz BurntSushi/ripgrep", + "tealdeer": "eget -a tealdeer-linux-x86_64-musl -a ^sha256 dbrgn/tealdeer", + "vale": "eget -a Linux_64-bit.tar.gz errata-ai/vale", + "yq": "eget -a ^.tar.gz mikefarah/yq" } } diff --git a/.lycheeignore b/.lycheeignore index 99e423b..55e77f0 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -1,11 +1,11 @@ # Lychee config to exclude links # @docs: -# Keep entries sorted within each section. +# Keep the order sorted. ^https?://127\.0\.0\.1 ^https?://example\.com ^https?://localhost # Placeholders and templates -^https://github\.com/kenorb/dotfiles +^https://github\.com/org/repo ^https://github\.com/zyedidia/eget/releases/download/v diff --git a/.markdown-link-check.json b/.markdown-link-check.json index ab3c7f2..b6ffaf1 100644 --- a/.markdown-link-check.json +++ b/.markdown-link-check.json @@ -2,19 +2,28 @@ "aliveStatusCodes": [200, 206], "ignorePatterns": [ { - "pattern": "^https?://localhost" + "pattern": "^http://localhost" }, { - "pattern": "^https?://127\\.0\\.0\\.1" + "pattern": "^https://localhost" }, { - "pattern": "^https?://example\\.com" + "pattern": "^http://127.0.0.1" }, { - "pattern": "^https://github\\.com/kenorb/dotfiles" + "pattern": "^https://127.0.0.1" }, { - "pattern": "^https://github\\.com/zyedidia/eget/releases/download/v" + "pattern": "^http://example.com" + }, + { + "pattern": "^https://example.com" + }, + { + "pattern": "^https://github.com/org/repo" + }, + { + "pattern": "^https://github.com/zyedidia/eget/releases/download/v" } ], "retryCount": 3, diff --git a/README.md b/README.md index 0180508..338525e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Clone repository into your HOME dir, then execute in the repo folder: ### Ansible Setup -Follow steps from: [`.ansible/README.md`](./.ansible/README.md) +Follow steps from: [`./ansible/README.md`](./ansible/README.md) ## Development @@ -35,4 +35,4 @@ you need to upgrade your `bash` by the following steps: 1. `brew install bash` 1. `sudo ex +'$put =\"/usr/local/bin/bash\"' -scwq /etc/shells` -1. `chsh -s /usr/local/bin/bash` +1. `chsh -s /usr/local/bin/bash` \ No newline at end of file From 330166beac5851eff41a4f0e52cb5b19597f10bc Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 29 May 2026 23:04:56 +0000 Subject: [PATCH 23/24] Fix pre-commit formatting and links --- .lycheeignore | 4 ++-- .markdown-link-check.json | 19 +++++-------------- README.md | 4 ++-- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/.lycheeignore b/.lycheeignore index 55e77f0..99e423b 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -1,11 +1,11 @@ # Lychee config to exclude links # @docs: -# Keep the order sorted. +# Keep entries sorted within each section. ^https?://127\.0\.0\.1 ^https?://example\.com ^https?://localhost # Placeholders and templates -^https://github\.com/org/repo +^https://github\.com/kenorb/dotfiles ^https://github\.com/zyedidia/eget/releases/download/v diff --git a/.markdown-link-check.json b/.markdown-link-check.json index b6ffaf1..ab3c7f2 100644 --- a/.markdown-link-check.json +++ b/.markdown-link-check.json @@ -2,28 +2,19 @@ "aliveStatusCodes": [200, 206], "ignorePatterns": [ { - "pattern": "^http://localhost" + "pattern": "^https?://localhost" }, { - "pattern": "^https://localhost" + "pattern": "^https?://127\\.0\\.0\\.1" }, { - "pattern": "^http://127.0.0.1" + "pattern": "^https?://example\\.com" }, { - "pattern": "^https://127.0.0.1" + "pattern": "^https://github\\.com/kenorb/dotfiles" }, { - "pattern": "^http://example.com" - }, - { - "pattern": "^https://example.com" - }, - { - "pattern": "^https://github.com/org/repo" - }, - { - "pattern": "^https://github.com/zyedidia/eget/releases/download/v" + "pattern": "^https://github\\.com/zyedidia/eget/releases/download/v" } ], "retryCount": 3, diff --git a/README.md b/README.md index 338525e..0180508 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Clone repository into your HOME dir, then execute in the repo folder: ### Ansible Setup -Follow steps from: [`./ansible/README.md`](./ansible/README.md) +Follow steps from: [`.ansible/README.md`](./.ansible/README.md) ## Development @@ -35,4 +35,4 @@ you need to upgrade your `bash` by the following steps: 1. `brew install bash` 1. `sudo ex +'$put =\"/usr/local/bin/bash\"' -scwq /etc/shells` -1. `chsh -s /usr/local/bin/bash` \ No newline at end of file +1. `chsh -s /usr/local/bin/bash` From cba8623bd786fee6e135c9f3767e007f191075cf Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 29 May 2026 23:17:22 +0000 Subject: [PATCH 24/24] Restored link configs and placeholders. Co-authored-by: kenorb --- .lycheeignore | 4 ++-- .markdown-link-check.json | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.lycheeignore b/.lycheeignore index 99e423b..55e77f0 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -1,11 +1,11 @@ # Lychee config to exclude links # @docs: -# Keep entries sorted within each section. +# Keep the order sorted. ^https?://127\.0\.0\.1 ^https?://example\.com ^https?://localhost # Placeholders and templates -^https://github\.com/kenorb/dotfiles +^https://github\.com/org/repo ^https://github\.com/zyedidia/eget/releases/download/v diff --git a/.markdown-link-check.json b/.markdown-link-check.json index ab3c7f2..b6ffaf1 100644 --- a/.markdown-link-check.json +++ b/.markdown-link-check.json @@ -2,19 +2,28 @@ "aliveStatusCodes": [200, 206], "ignorePatterns": [ { - "pattern": "^https?://localhost" + "pattern": "^http://localhost" }, { - "pattern": "^https?://127\\.0\\.0\\.1" + "pattern": "^https://localhost" }, { - "pattern": "^https?://example\\.com" + "pattern": "^http://127.0.0.1" }, { - "pattern": "^https://github\\.com/kenorb/dotfiles" + "pattern": "^https://127.0.0.1" }, { - "pattern": "^https://github\\.com/zyedidia/eget/releases/download/v" + "pattern": "^http://example.com" + }, + { + "pattern": "^https://example.com" + }, + { + "pattern": "^https://github.com/org/repo" + }, + { + "pattern": "^https://github.com/zyedidia/eget/releases/download/v" } ], "retryCount": 3,