-
Notifications
You must be signed in to change notification settings - Fork 2
/
install-binaries-playbook.yml
136 lines (123 loc) · 5.32 KB
/
install-binaries-playbook.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
- name: Install binaries and setup Debian 12
hosts: localhost
vars:
user_programs: /usr/local/bin
keyd_git_version: "201a077b2ccb8cd01b77396c1f88e07cbcb11d1e"
tasks:
# Maybe included in Debian 13
- name: Clone keyd from GitHub
ansible.builtin.git:
repo: https://github.com/rvaiya/keyd
dest: "{{ playbook_dir }}/keyd"
version: "{{ keyd_git_version }}"
update: false
- name: Ensure the keyd directory exists
become: true
ansible.builtin.file:
path: /etc/keyd/
state: directory
mode: "0755"
- name: Copy keyd default.conf to /etc/keyd/
become: true
ansible.builtin.copy:
src: "{{ playbook_dir }}/extras/default.conf"
dest: /etc/keyd/default.conf
owner: root
group: root
mode: "0644"
- name: Download and install GitHub binaries
become: true
block:
- name: Download and install marksman
ansible.builtin.get_url:
url: "https://github.com/artempyanykh/marksman/releases/download/2023-12-09/marksman-linux-x64"
dest: "{{ user_programs }}/marksman"
mode: "0755"
- name: Download and install ltex-ls, vale and lazygit
ansible.builtin.unarchive:
src: "{{ item.src }}"
dest: "{{ user_programs }}"
remote_src: true
extra_opts: "{{ item.extra_opts | default(omit) }}"
include: "{{ item.include | default(omit) }}"
loop:
- {
src: "https://github.com/valentjn/ltex-ls/releases/download/16.0.0/ltex-ls-16.0.0.tar.gz",
extra_opts:
[
"--strip-components=1",
"ltex-ls-16.0.0/bin",
"ltex-ls-16.0.0/lib",
],
}
- {
src: "https://github.com/errata-ai/vale/releases/download/v3.7.1/vale_3.7.1_Linux_64-bit.tar.gz",
include: "vale",
}
- {
src: "https://github.com/jesseduffield/lazygit/releases/download/v0.41.0/lazygit_0.41.0_Linux_x86_64.tar.gz",
include: "lazygit",
}
- name: Create symlink to ltex-ls binary
ansible.builtin.file:
src: "{{ user_programs }}/bin/ltex-ls"
dest: "{{ user_programs }}/ltex-ls"
state: link
- name: Download and install yabridge
ansible.builtin.unarchive:
src: https://github.com/robbert-vdh/yabridge/releases/download/5.0.5/yabridge-5.0.5.tar.gz
dest: "{{ ansible_facts['user_dir'] }}/.local/share"
remote_src: true
# A single shell session is required for the installations to ensure the Rust environment
# variables are correctly sourced and recognized by subsequent installations.
# The `set -o pipefail` option ensures the task fails if any command in the pipeline fails
# The use of "/bin/bash" as the executable is specified to guarantee compatibility with `pipefail`.
# The default shell on some systems (e.g., Debian) is `dash`, which may not support such options.
# The `.cargo/env` file, created by the Rust installation script, acts as a marker indicating
# Rust is installed. If this file exists, Ansible skips this task, ensuring idempotency and
# avoiding unnecessary reinstallation.
- name: Install the latest stable Rust, Rust-analyzer, AIChat and argc
ansible.builtin.shell: >
set -o pipefail &&
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y &&
. "{{ ansible_facts['user_dir'] }}/.cargo/env" &&
rustup component add rust-analyzer &&
cargo install argc &&
cargo install aichat
args:
creates: "{{ ansible_facts['user_dir'] }}/.cargo/env"
executable: /bin/bash
- name: Install Blender
block:
- name: Create directory /usr/local/bin/blender-bin
become: true
ansible.builtin.file:
path: "{{ user_programs }}/blender-bin"
state: directory
- name: Download Blender and extract archive
become: true
ansible.builtin.unarchive:
src: "https://download.blender.org/release/Blender4.1/blender-4.1.1-linux-x64.tar.xz"
dest: "{{ user_programs }}/blender-bin"
remote_src: true
creates: "{{ user_programs }}/blender-bin/blender"
extra_opts:
- "--strip-components=1"
- name: Create symlink to Blender binary
become: true
ansible.builtin.file:
src: "{{ user_programs }}/blender-bin/blender"
dest: "{{ user_programs }}/blender"
state: link
- name: Copy Blender desktop file
ansible.builtin.copy:
src: "{{ user_programs }}/blender-bin/blender.desktop"
dest: "{{ lookup('ansible.builtin.env', 'HOME') }}/.local/share/applications/blender.desktop"
- name: Create ~/.icons directory
ansible.builtin.file:
path: "{{ lookup('ansible.builtin.env', 'HOME') }}/.icons"
state: directory
- name: Copy Blender icon
ansible.builtin.copy:
src: "{{ user_programs }}/blender-bin/blender.svg"
dest: "{{ lookup('ansible.builtin.env', 'HOME') }}/.icons/blender.svg"