... | ... |
@@ -21,6 +21,44 @@ After login, run `startx` to start the graphical environment. |
21 | 21 |
[Vagrant provider]: https://www.vagrantup.com/docs/providers |
22 | 22 |
[Vagrant box]: https://www.vagrantup.com/docs/boxes |
23 | 23 |
|
24 |
+## Requirements |
|
25 |
+ |
|
26 |
+[Collection][]s: |
|
27 |
+ |
|
28 |
+- [`community.general`][] |
|
29 |
+ |
|
30 |
+[Role][]s: |
|
31 |
+ |
|
32 |
+- [`ansible-role-xsession`][] |
|
33 |
+- [`ansible-role-xwinwrap`][] |
|
34 |
+- [`ansible-role-dotfiles`][] |
|
35 |
+- [`ansible-role-firefox-extensions`][] |
|
36 |
+ |
|
37 |
+Make sure requirements are satisfied by running |
|
38 |
+ |
|
39 |
+``` |
|
40 |
+ansible-galaxy install -f -r requirements.yml |
|
41 |
+``` |
|
42 |
+ |
|
43 |
+[collection]: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html |
|
44 |
+[`community.general`]: https://docs.ansible.com/ansible/latest/collections/community/general/index.html |
|
45 |
+[role]: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html |
|
46 |
+[`ansible-role-xsession`]: https://git.rcrnstn.net/rcrnstn/ansible-role-xsession |
|
47 |
+[`ansible-role-xwinwrap`]: https://git.rcrnstn.net/rcrnstn/ansible-role-xwinwrap |
|
48 |
+[`ansible-role-dotfiles`]: https://git.rcrnstn.net/rcrnstn/ansible-role-dotfiles |
|
49 |
+[`ansible-role-firefox-extensions`]: https://git.rcrnstn.net/rcrnstn/ansible-role-firefox-extensions |
|
50 |
+ |
|
51 |
+## Usage |
|
52 |
+ |
|
53 |
+Run |
|
54 |
+ |
|
55 |
+``` |
|
56 |
+ansible-playbook -K -i $host, desktop.yml |
|
57 |
+``` |
|
58 |
+ |
|
59 |
+(note the comma!) replacing `$host` with the host you want to set up (can be |
|
60 |
+`localhost`, perhaps adding `--connection=local`). |
|
61 |
+ |
|
24 | 62 |
## License |
25 | 63 |
|
26 | 64 |
Licensed under the [ISC License][] unless otherwise noted, see the |
27 | 65 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,436 @@ |
1 |
+--- |
|
2 |
+ |
|
3 |
+- hosts: 'all' |
|
4 |
+ |
|
5 |
+ vars: |
|
6 |
+ prefix: '{{ ansible_env.HOME }}/.local' |
|
7 |
+ |
|
8 |
+ pre_tasks: |
|
9 |
+ |
|
10 |
+ ## APT cache update |
|
11 |
+ - name: 'Update APT' |
|
12 |
+ become: yes |
|
13 |
+ apt: |
|
14 |
+ update_cache: yes |
|
15 |
+ cache_valid_time: 86400 # One day. |
|
16 |
+ |
|
17 |
+ ## APT repository dependencies |
|
18 |
+ - name: 'Install APT repository dependencies' |
|
19 |
+ become: yes |
|
20 |
+ apt: |
|
21 |
+ name: |
|
22 |
+ - 'gnupg' |
|
23 |
+ |
|
24 |
+ ## APT repositories |
|
25 |
+ # https://github.com/Airblader/i3/wiki/installation#ubuntu |
|
26 |
+ # NOTE: This always uses `impish` (Ubuntu 20.10) because newer versions are |
|
27 |
+ # not available at the time of writing. |
|
28 |
+ # The URLs at https://regolith-desktop.com/#get-regolith-21 is probably |
|
29 |
+ # better. |
|
30 |
+ - name: 'Add APT Regolith repository' |
|
31 |
+ become: yes |
|
32 |
+ apt_repository: |
|
33 |
+ repo: 'ppa:regolith-linux/release' |
|
34 |
+ codename: 'impish' |
|
35 |
+ |
|
36 |
+ ## APT packages |
|
37 |
+ # TODO: 'manpages-posix' and 'manpages-posix-dev' are in Debian |
|
38 |
+ # non-free. Do equivalent of `add-apt-repository non-free`? |
|
39 |
+ - name: 'Install APT packages' |
|
40 |
+ become: yes |
|
41 |
+ apt: |
|
42 |
+ name: |
|
43 |
+ ### Support files |
|
44 |
+ - 'locales-all' |
|
45 |
+ - 'sensible-utils' |
|
46 |
+ - 'fonts-dejavu' |
|
47 |
+ - 'fonts-symbola' |
|
48 |
+ - 'fonts-unifont' |
|
49 |
+ - 'fonts-font-awesome' |
|
50 |
|
|
51 |
+ - 'mailutils' # Recommends `default-mta`, i.e. `postfix` |
|
52 |
+ ### Hardware |
|
53 |
+ - 'xsane' |
|
54 |
+ # TODO: Break stuff out to benchmarking section? |
|
55 |
+ - 'sysstat' |
|
56 |
+ ### I/O |
|
57 |
+ - 'iozone3' |
|
58 |
+ #### S.M.A.R.T |
|
59 |
+ - 'smartmontools' |
|
60 |
+ - 'smart-notifier' |
|
61 |
+ - 'gsmartcontrol' |
|
62 |
+ #### NVMe |
|
63 |
+ - 'nvme-cli' |
|
64 |
+ #### Sensors |
|
65 |
+ # - 'lm-sensors' |
|
66 |
+ #### Brightness |
|
67 |
+ - 'brightnessctl' |
|
68 |
+ - 'brightness-udev' |
|
69 |
+ #### Video decoding |
|
70 |
+ - 'libvdpau-va-gl1' |
|
71 |
+ #### GPU |
|
72 |
+ # - 'intel-gpu-tools' # `intel_gpu_top` |
|
73 |
+ - 'radeontop' |
|
74 |
+ # - 'nvtop' |
|
75 |
+ #### Power |
|
76 |
+ # - 'tlp' |
|
77 |
+ - 'powertop' |
|
78 |
+ #### Performance |
|
79 |
+ - 'iotop' |
|
80 |
+ - 'fio' |
|
81 |
+ - 'iperf3' |
|
82 |
+ ### Python |
|
83 |
+ - 'python3' |
|
84 |
+ - 'python3-pip' |
|
85 |
+ - 'python3-venv' |
|
86 |
+ - 'python3-tk' |
|
87 |
+ - 'python3-matplotlib' |
|
88 |
+ - 'python3-numpy' |
|
89 |
+ - 'python3-scipy' |
|
90 |
+ # - 'python3-ipython' |
|
91 |
+ # - 'jupyter' |
|
92 |
+ # - 'jupyter-qtconsole' |
|
93 |
+ ### Dotfile dependencies |
|
94 |
+ - 'git' |
|
95 |
+ - 'stow' |
|
96 |
+ # - 'libglib2.0-bin' # `gsettings` |
|
97 |
+ ### CLI session |
|
98 |
+ - 'bash' |
|
99 |
+ ### X session |
|
100 |
+ - 'xinit' |
|
101 |
+ - 'i3-gaps-wm' |
|
102 |
+ - 'compton' |
|
103 |
+ - 'polybar' |
|
104 |
+ - 'rofi' |
|
105 |
+ - 'dunst' |
|
106 |
+ - 'sxhkd' |
|
107 |
+ - 'hsetroot' |
|
108 |
+ - 'mpv' |
|
109 |
+ ### CLI applications |
|
110 |
+ - 'apt-file' |
|
111 |
+ - 'apt-rdepends' |
|
112 |
+ - 'aptitude' |
|
113 |
+ - 'tree' |
|
114 |
+ - 'renameutils' |
|
115 |
+ - 'moreutils' |
|
116 |
+ - 'curl' |
|
117 |
+ - 'jq' |
|
118 |
+ - 'sshfs' |
|
119 |
+ - 'autossh' |
|
120 |
+ # TODO: `git-autofixup` might be better than `git-absorb` |
|
121 |
+ # (https://news.ycombinator.com/item?id=26501396), but was only |
|
122 |
+ # introduced in Debian 12 Bookworm, Ubuntu 22.04. |
|
123 |
+ - 'git-absorb' |
|
124 |
+ # - 'tig' |
|
125 |
+ - 'avahi-utils' |
|
126 |
+ - 'mpc' |
|
127 |
+ - 'pandoc' |
|
128 |
+ # - 'timg' |
|
129 |
+ - 'graphviz' |
|
130 |
+ - 'par' |
|
131 |
+ - 'pass' |
|
132 |
+ # - 'dict-gcide' |
|
133 |
+ - 'ncal' |
|
134 |
+ - 'inotify-tools' |
|
135 |
+ - 'rlwrap' |
|
136 |
+ - 'adb' |
|
137 |
+ - 'fdupes' |
|
138 |
+ - 'pdfgrep' |
|
139 |
+ # - 'pass-extension-otp' |
|
140 |
+ # - 'pass-extension-tomb' |
|
141 |
+ # - 'pass-git-helper' |
|
142 |
+ ### TUI applications |
|
143 |
+ - 'vim-gtk3' |
|
144 |
+ - 'tmux' |
|
145 |
+ - 'htop' |
|
146 |
+ # - 'atop' |
|
147 |
+ # - 'bpytop' |
|
148 |
+ - 'pulsemixer' |
|
149 |
+ - 'ncdu' |
|
150 |
+ - 'ncmpcpp' |
|
151 |
+ - 'khal' |
|
152 |
+ ### GUI applications |
|
153 |
+ - 'xdotool' |
|
154 |
+ - 'xdg-utils' |
|
155 |
+ - 'gnome-terminal' |
|
156 |
+ # - 'xfce4-terminal' |
|
157 |
+ # - 'kitty' # TODO? |
|
158 |
+ # - 'firefox' |
|
159 |
+ - 'vlc' |
|
160 |
+ - 'gimp' |
|
161 |
+ - 'inkscape' |
|
162 |
+ # - 'krita' |
|
163 |
+ # - 'mypaint' |
|
164 |
+ # - 'xournal' |
|
165 |
+ - 'pavucontrol' |
|
166 |
+ - 'zathura' |
|
167 |
+ # - 'flameshot' |
|
168 |
+ - 'screenkey' |
|
169 |
+ - 'p7zip-full' |
|
170 |
+ # - 'zeal' |
|
171 |
+ - 'network-manager-gnome' # `nm-applet` |
|
172 |
+ # - 'pasystray' |
|
173 |
+ # - 'xdot' # Use `rcrnstn/xdot.py` pip package instead. |
|
174 |
+ ### LaTex |
|
175 |
+ # TODO: Some of these might be redundant. |
|
176 |
+ - 'texlive' |
|
177 |
+ - 'texlive-latex-extra' |
|
178 |
+ - 'texlive-lang-english' |
|
179 |
+ - 'texlive-lang-european' |
|
180 |
+ - 'latexmk' |
|
181 |
+ ### Development |
|
182 |
+ #### Profiling |
|
183 |
+ # - 'linux-tools-generic' # `perf` |
|
184 |
+ - 'valgrind' # valgrind, cachegrind, callgrind |
|
185 |
+ ##### Visualization |
|
186 |
+ - 'hotspot' |
|
187 |
+ - 'kcachegrind' |
|
188 |
+ # - 'eclipse-tracecompass' |
|
189 |
+ # - 'uftrace' |
|
190 |
+ #### Navigation |
|
191 |
+ - 'exuberant-ctags' |
|
192 |
+ #### Math |
|
193 |
+ - 'octave' |
|
194 |
+ # - 'maxima' |
|
195 |
+ - 'asymptote' # TODO: https://github.com/cjquines/tsqx |
|
196 |
+ - 'geogebra' |
|
197 |
+ #### Shell |
|
198 |
+ # - 'manpages-posix' |
|
199 |
+ - 'shellcheck' |
|
200 |
+ - 'devscripts' # `checkbashisms` |
|
201 |
+ #### C/C++ |
|
202 |
+ # - 'manpages-posix-dev' |
|
203 |
+ - 'manpages-dev' |
|
204 |
+ # - 'libstdc++-11-doc' |
|
205 |
+ - 'cppman' |
|
206 |
+ - 'cppreference-doc-en-html' |
|
207 |
+ - 'gcc' |
|
208 |
+ - 'g++' |
|
209 |
+ - 'make' |
|
210 |
+ - 'cmake' |
|
211 |
+ - 'cppcheck' |
|
212 |
+ - 'clang-tidy' |
|
213 |
+ # Note that apt dependency declaration for `iwyu` might be broken, |
|
214 |
+ # manually make sure the right version of `clang` is installed. |
|
215 |
+ - 'iwyu' |
|
216 |
+ #### OpenGL |
|
217 |
+ - 'opengl-4-man-doc' |
|
218 |
+ - 'libgl-dev' |
|
219 |
+ - 'libglew-dev' |
|
220 |
+ - 'libglfw3-dev' |
|
221 |
+ - 'libsdl2-dev' |
|
222 |
+ # - 'libwxgtk3.0-gtk3-dev' |
|
223 |
+ - 'libglm-dev' |
|
224 |
+ - 'libimgui-dev' |
|
225 |
+ - 'mesa-utils' # `glxinfo`, `glxgears` |
|
226 |
+ - 'glew-utils' # `glewinfo` |
|
227 |
+ - 'glbinding-tools' # `glqueries` |
|
228 |
+ - 'glslang-tools' # `glslangValidator` |
|
229 |
+ - 'nvidia-cg-toolkit' # `cgc` also does GLSL |
|
230 |
+ - 'renderdoc' |
|
231 |
+ - 'apitrace-gui' |
|
232 |
+ # - 'glmark2' # `glmark2` |
|
233 |
+ #### OpenCV |
|
234 |
+ # - 'libopencv-calib3d-dev' |
|
235 |
+ #### JavaScript |
|
236 |
+ # - 'libjavascriptcoregtk-4.0-bin' |
|
237 |
+ - 'nodejs' |
|
238 |
+ - 'npm' |
|
239 |
+ ### DevOps |
|
240 |
+ - 'docker.io' |
|
241 |
+ - 'docker-compose' |
|
242 |
+ # - 'virtualbox-qt' |
|
243 |
+ - 'vagrant' |
|
244 |
+ - 'vagrant-sshfs' |
|
245 |
+ - 'ansible' |
|
246 |
+ - 'ansible-lint' |
|
247 |
+ ### Android |
|
248 |
+ - 'scrcpy' |
|
249 |
+ |
|
250 |
+ ## Hardware |
|
251 |
+ - name: 'Add user "{{ ansible_user_id }}" to video and docker groups' |
|
252 |
+ become: yes |
|
253 |
+ user: |
|
254 |
+ name: '{{ ansible_user_id }}' |
|
255 |
+ groups: |
|
256 |
+ - 'video' |
|
257 |
+ - 'docker' |
|
258 |
+ append: yes |
|
259 |
+ |
|
260 |
+ ## Prefix |
|
261 |
+ - name: 'Create prefix "{{ prefix }}"' |
|
262 |
+ file: |
|
263 |
+ path: '{{ prefix }}' |
|
264 |
+ state: directory |
|
265 |
+ recurse: yes |
|
266 |
+ |
|
267 |
+ ## Dotfiles |
|
268 |
+ - name: 'Move skeleton dotfiles' |
|
269 |
+ shell: | |
|
270 |
+ cd '/etc/skel' |
|
271 |
+ for path in '.'* |
|
272 |
+ do |
|
273 |
+ path="$HOME/$path" |
|
274 |
+ if [ -e "$path" ] && ! [ -d "$path" ] && ! [ -L "$path" ] |
|
275 |
+ then |
|
276 |
+ printf 'Moving "%s" to "%s"\n' "$path" "$path.skel" |
|
277 |
+ mv "$path" "$path.skel" |
|
278 |
+ fi |
|
279 |
+ done |
|
280 |
+ register: result |
|
281 |
+ changed_when: result.stdout != '' |
|
282 |
+ |
|
283 |
+ roles: |
|
284 |
+ |
|
285 |
+ ## Unattended |
|
286 |
+ # TODO: Using `pre_tasks` above results in `etckeeper` getting installed |
|
287 |
+ # after all other packages, which might do configuration at install time. |
|
288 |
+ # We moved to `pre_tasks` from `post_tasks` for a reason...what was it? |
|
289 |
+ - role: 'unattended' |
|
290 |
+ |
|
291 |
+ ## Xsession |
|
292 |
+ # For Display Managers that don't offer a `/etc/X11/Xsession` natively. |
|
293 |
+ - role: 'xsession' |
|
294 |
+ |
|
295 |
+ ## xwinwrap |
|
296 |
+ # For `background`. |
|
297 |
+ - role: 'xwinwrap' |
|
298 |
+ xwinwrap_prefix: '{{ prefix }}' |
|
299 |
+ |
|
300 |
+ ## Home dotfiles |
|
301 |
+ - role: 'dotfiles' |
|
302 |
+ dotfiles: |
|
303 |
+ ### User |
|
304 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-rcrnstn' |
|
305 |
+ ### Hardware |
|
306 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-input' |
|
307 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-pulseaudio' |
|
308 |
+ ### Session |
|
309 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-profile' |
|
310 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-path' |
|
311 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-locale' |
|
312 |
+ ### CLI session |
|
313 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-sh' |
|
314 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-colors' |
|
315 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-prompt' |
|
316 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-readline' |
|
317 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-bash' |
|
318 |
+ ### GUI session |
|
319 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-xsession' |
|
320 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-xresources' |
|
321 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-i3-gaps' |
|
322 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-compton-picom' |
|
323 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-polybar' |
|
324 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-rofi' |
|
325 |
+ # - 'https://git.rcrnstn.net/rcrnstn/dotfiles-dunst' |
|
326 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-sxhkd' |
|
327 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-xdg-user-dirs' |
|
328 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-recently-used' |
|
329 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-gtk' |
|
330 |
+ ### CLI applications |
|
331 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-coreutils' |
|
332 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-diffutils' |
|
333 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-man' |
|
334 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-mpd' |
|
335 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-youtube-dl' |
|
336 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-graphviz' |
|
337 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-stow' |
|
338 |
+ ### TUI applications |
|
339 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-less' |
|
340 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-vim' |
|
341 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-tmux' |
|
342 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-ncmpcpp' |
|
343 |
+ ### GUI applications |
|
344 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-xdg-utils' |
|
345 |
+ # - 'https://git.rcrnstn.net/rcrnstn/dotfiles-gnome-terminal' |
|
346 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-xfce4-terminal' |
|
347 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-firefox' |
|
348 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-zathura' |
|
349 |
+ ### Development |
|
350 |
+ #### Git |
|
351 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-git' |
|
352 |
+ #### C/C++ |
|
353 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-cmake' |
|
354 |
+ #### JavaScript |
|
355 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-nodejs' |
|
356 |
+ ### DevOps |
|
357 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-docker' |
|
358 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-virtualbox' |
|
359 |
+ - 'https://git.rcrnstn.net/rcrnstn/dotfiles-ansible' |
|
360 |
+ |
|
361 |
+ ## Prefix dotfiles |
|
362 |
+ - role: 'dotfiles' |
|
363 |
+ dotfiles_dir: '{{ prefix }}/stow' |
|
364 |
+ dotfiles: |
|
365 |
+ ### GUI session |
|
366 |
+ - 'https://git.rcrnstn.net/rcrnstn/background' |
|
367 |
+ ### Development |
|
368 |
+ #### Git |
|
369 |
+ - 'https://git.rcrnstn.net/rcrnstn/git-gitolite' |
|
370 |
+ |
|
371 |
+ ## Firefox extensions |
|
372 |
+ - role: 'firefox-extensions' |
|
373 |
+ firefox_extensions: |
|
374 |
+ ### Mozilla recommended |
|
375 |
+ - 'ublock-origin' |
|
376 |
+ - 'enhancer-for-youtube' |
|
377 |
+ - 'clearurls' |
|
378 |
+ - 'tree-style-tab' |
|
379 |
+ - 'auto-tab-discard' |
|
380 |
+ - 'turbo-download-manager' |
|
381 |
+ # - 'https-everywhere' |
|
382 |
+ # - 'languagetool' |
|
383 |
+ # - 'styl-us' |
|
384 |
+ ### Usability |
|
385 |
+ - 'tridactyl-vim' |
|
386 |
+ - 'multiple-highlight' # Less permissions than alternatives. |
|
387 |
+ - 'old-reddit-redirect' |
|
388 |
+ ### Customizability |
|
389 |
+ # - 'violentmonkey' |
|
390 |
+ ### Password management |
|
391 |
+ # - 'passff' |
|
392 |
+ # - 'browserpass-ce' |
|
393 |
+ ### Dictionaries |
|
394 |
+ # Swedish, linked from |
|
395 |
+ # https://addons.mozilla.org/en-US/firefox/language-tools/ |
|
396 |
+ - 'görans-hemmasnickrade-ordli' |
|
397 |
+ |
|
398 |
+ post_tasks: |
|
399 |
+ |
|
400 |
+ ## pip packages |
|
401 |
+ - name: 'Install pip packages' |
|
402 |
+ pip: |
|
403 |
+ extra_args: '--user' |
|
404 |
+ name: |
|
405 |
+ - 'pipx' |
|
406 |
+ # Not installed with `pipx` because the resulting venv does not |
|
407 |
+ # include PyGObject bindings for GTK3. |
|
408 |
+ - 'git+https://git.rcrnstn.net/rcrnstn/xdot.py' |
|
409 |
+ |
|
410 |
+ ## pipx packages |
|
411 |
+ - name: 'Install pipx packages' |
|
412 |
+ community.general.pipx: |
|
413 |
+ name: '{{ item }}' |
|
414 |
+ loop: |
|
415 |
+ # - 'youtube-dl' |
|
416 |
+ - 'yt-dlp' |
|
417 |
+ - 'proselint' |
|
418 |
+ - 'asciinema' |
|
419 |
+ - 'vim-vint' |
|
420 |
+ - 'vimgolf' |
|
421 |
+ - 'git+https://github.com/google/vimdoc' |
|
422 |
+ - 'git+https://git.rcrnstn.net/rcrnstn/glregistry' |
|
423 |
+ - 'vosk' |
|
424 |
+ # - 'openai-whisper' |
|
425 |
+ # - 'ruff' |
|
426 |
+ |
|
427 |
+ ## NPM packages |
|
428 |
+ - name: 'Install NPM packages' |
|
429 |
+ community.general.npm: |
|
430 |
+ name: '{{ item }}' |
|
431 |
+ global: yes |
|
432 |
+ environment: |
|
433 |
+ NPM_CONFIG_PREFIX: '{{ prefix }}' |
|
434 |
+ loop: |
|
435 |
+ - 'n' |
|
436 |
+ - 'svg-term-cli' |
0 | 437 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,27 @@ |
1 |
+--- |
|
2 |
+ |
|
3 |
+collections: |
|
4 |
+ |
|
5 |
+ - name: 'community.general' |
|
6 |
+ |
|
7 |
+roles: |
|
8 |
+ |
|
9 |
+ - name: 'unattended' |
|
10 |
+ src: 'https://git.rcrnstn.net/rcrnstn/ansible-role-unattended' |
|
11 |
+ scm: 'git' |
|
12 |
+ |
|
13 |
+ - name: 'xsession' |
|
14 |
+ src: 'https://git.rcrnstn.net/rcrnstn/ansible-role-xsession' |
|
15 |
+ scm: 'git' |
|
16 |
+ |
|
17 |
+ - name: 'xwinwrap' |
|
18 |
+ src: 'https://git.rcrnstn.net/rcrnstn/ansible-role-xwinwrap' |
|
19 |
+ scm: 'git' |
|
20 |
+ |
|
21 |
+ - name: 'dotfiles' |
|
22 |
+ src: 'https://git.rcrnstn.net/rcrnstn/ansible-role-dotfiles' |
|
23 |
+ scm: 'git' |
|
24 |
+ |
|
25 |
+ - name: 'firefox-extensions' |
|
26 |
+ src: 'https://git.rcrnstn.net/rcrnstn/ansible-role-firefox-extensions' |
|
27 |
+ scm: 'git' |