Mercurial > code > home > repos > infra
annotate packages.py @ 275:058c312ffdce
new host `pillow`
author | drewp@bigasterisk.com |
---|---|
date | Sat, 23 Mar 2024 14:20:20 -0700 |
parents | f7178138b736 |
children | 7f79cbbb6f24 |
rev | line source |
---|---|
271 | 1 from io import StringIO |
12 | 2 from pyinfra import host |
3 from pyinfra.facts.server import LinuxDistribution | |
186 | 4 from pyinfra.operations import apt, files, server, systemd |
205 | 5 |
114
7e280bf26dba
package lists big update, pulling from /var/log/apt on a few hosts
drewp@bigasterisk.com
parents:
108
diff
changeset
|
6 import package_lists |
12 | 7 |
8 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux'] | |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
9 |
12 | 10 |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
11 def kitty(): |
246 | 12 vers = '0.31.0' # see https://github.com/kovidgoyal/kitty/releases |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
13 home = '/home/drewp' |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
14 local = f"{home}/.local/kitty" |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
15 dl = f'/tmp/kitty-{vers}-x86_64.txz' |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
16 files.download(src=f"https://github.com/kovidgoyal/kitty/releases/download/v{vers}/kitty-{vers}-x86_64.txz", dest=dl) |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
17 files.directory(local) |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
18 server.shell([ |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
19 f"mkdir -p {local}", # https://github.com/Fizzadar/pyinfra/issues/777 |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
20 f"aunpack --extract-to={local} {dl}", |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
21 ]) |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
22 files.link(target="{local}/bin/kitty", path="{home}/bin/kitty") |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
23 |
12 | 24 |
174
b6b11048d0fb
collect nodejs pkg install stuff together
drewp@bigasterisk.com
parents:
169
diff
changeset
|
25 def nodejs(): |
b6b11048d0fb
collect nodejs pkg install stuff together
drewp@bigasterisk.com
parents:
169
diff
changeset
|
26 apt.packages(packages=['libnode72'], present=False, force=True) |
b6b11048d0fb
collect nodejs pkg install stuff together
drewp@bigasterisk.com
parents:
169
diff
changeset
|
27 apt.packages(packages=['nodejs'], latest=True) |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
28 server.shell([ |
169 | 29 "rm -f /usr/local/bin/pnp{m,x}", |
30 "corepack enable", | |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
31 # https://github.com/pnpm/pnpm/releases |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
32 # but also https://pnpm.io/installation#compatibility |
203 | 33 "corepack prepare 'pnpm@8.6.3' --activate", |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
34 ]) |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
35 |
273
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
36 def podman(): |
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
37 apt.packages(packages=['libsubid4', 'buildah', 'podman-docker'], latest=True) |
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
38 # frigate build wants to mount a single file from the host, which needs podman 4.5.1 |
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
39 # https://github.com/containers/podman/issues/12123#issuecomment-1620439593 |
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
40 apt.deb(src="http://ftp.osuosl.org/pub/ubuntu/pool/universe/libp/libpod/podman_4.9.3+ds1-1_amd64.deb") |
205 | 41 |
203 | 42 def pdm(): |
206 | 43 # https://github.com/pdm-project/pdm/blob/main/CHANGELOG.md |
255 | 44 server.shell(["pip install --break-system-packages 'pdm==2.12.2'"]) |
69 | 45 |
205 | 46 |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
47 def proper_locate(): |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
48 apt.packages(packages='mlocate', present=False) |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
49 if not is_pi and host.name not in ['prime', 'pipe']: |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
50 apt.packages(packages='plocate') |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
51 |
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
52 |
131 | 53 def proper_man(): |
54 if host.name in ['pipe', 'prime'] or is_pi: | |
55 apt.packages(packages=['mandb'], present=False) | |
12 | 56 |
205 | 57 |
196
c409ea5a1d5c
don't tie up 80/443 with an unwanted nginx instance
drewp@bigasterisk.com
parents:
192
diff
changeset
|
58 def no_unwanted_services(): |
c409ea5a1d5c
don't tie up 80/443 with an unwanted nginx instance
drewp@bigasterisk.com
parents:
192
diff
changeset
|
59 systemd.service(service='nginx', enabled=False, running=False) |
c409ea5a1d5c
don't tie up 80/443 with an unwanted nginx instance
drewp@bigasterisk.com
parents:
192
diff
changeset
|
60 |
c409ea5a1d5c
don't tie up 80/443 with an unwanted nginx instance
drewp@bigasterisk.com
parents:
192
diff
changeset
|
61 |
240 | 62 kw = dict(present=True, latest=True) |
12 | 63 |
143
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
64 apt.packages(packages=package_lists.setup, **kw) |
131 | 65 |
271 | 66 |
67 def roblox(): | |
68 server.shell('flatpak install -y org.freedesktop.Platform/x86_64/23.08') | |
69 server.shell('flatpak install -y flathub org.vinegarhq.Vinegar') # (roblox runner) | |
70 files.put(src=StringIO("#!/bin/sh\nexec flatpak run org.vinegarhq.Vinegar player run 'roblox-player:1'\n"), | |
71 dest='/usr/local/bin/roblox', | |
72 mode='755') | |
73 | |
74 | |
12 | 75 if not is_pi: |
83 | 76 if host.name != 'pipe': |
131 | 77 apt.packages(packages=['reptyr']) |
103
8b8ef9d8f0fd
dead code and templates, reformat, maybe a little refactor
drewp@bigasterisk.com
parents:
93
diff
changeset
|
78 kitty() |
131 | 79 else: |
80 apt.packages(packages=package_lists.pi_setup) | |
12 | 81 |
114
7e280bf26dba
package lists big update, pulling from /var/log/apt on a few hosts
drewp@bigasterisk.com
parents:
108
diff
changeset
|
82 proper_locate() |
131 | 83 proper_man() |
84 | |
143
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
85 apt.packages(packages=package_lists.general, **kw) |
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
86 apt.packages(packages=package_lists.debug, **kw) |
56 | 87 |
205 | 88 if host.name in ["bang", 'ditto']: |
146 | 89 apt.packages(packages=package_lists.for_bang_ditto, **kw) |
114
7e280bf26dba
package lists big update, pulling from /var/log/apt on a few hosts
drewp@bigasterisk.com
parents:
108
diff
changeset
|
90 |
7e280bf26dba
package lists big update, pulling from /var/log/apt on a few hosts
drewp@bigasterisk.com
parents:
108
diff
changeset
|
91 if host.name == "pipe": |
143
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
92 apt.packages(packages=package_lists.for_pipe, **kw) |
37
fbd0849dfdbd
redo networking to be much simpler. Uses systemd-networkd
drewp@bigasterisk.com
parents:
34
diff
changeset
|
93 |
131 | 94 if host.name == "prime": |
143
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
95 apt.packages(packages=package_lists.for_prime, **kw) |
131 | 96 |
37
fbd0849dfdbd
redo networking to be much simpler. Uses systemd-networkd
drewp@bigasterisk.com
parents:
34
diff
changeset
|
97 if host.name == 'plus': |
143
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
98 apt.packages(packages=package_lists.laptop, **kw) |
114
7e280bf26dba
package lists big update, pulling from /var/log/apt on a few hosts
drewp@bigasterisk.com
parents:
108
diff
changeset
|
99 |
268
34ab4aec7d4b
notes and changes for getting nvidia gpu k3d support going, which was very hard
drewp@bigasterisk.com
parents:
261
diff
changeset
|
100 if host.name in ['dash', 'slash', 'ditto', 'dot']: |
271 | 101 apt.packages(packages=package_lists.k8s_node_with_nvidia_gpu(host.name)) # no kw, or apt will remove nvidia-utils-VERS (!) |
254 | 102 |
273
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
103 if host.name in ['dash', 'slash', 'ditto']: |
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
104 podman() |
f7178138b736
pkgs and special podman future version
drewp@bigasterisk.com
parents:
271
diff
changeset
|
105 |
268
34ab4aec7d4b
notes and changes for getting nvidia gpu k3d support going, which was very hard
drewp@bigasterisk.com
parents:
261
diff
changeset
|
106 if host.name == 'ditto': |
34ab4aec7d4b
notes and changes for getting nvidia gpu k3d support going, which was very hard
drewp@bigasterisk.com
parents:
261
diff
changeset
|
107 # should have happened in the previous step, but it gets reverted. |
34ab4aec7d4b
notes and changes for getting nvidia gpu k3d support going, which was very hard
drewp@bigasterisk.com
parents:
261
diff
changeset
|
108 apt.packages(packages=['nvidia-utils-535-server']) |
131 | 109 |
110 if not is_pi: | |
143
6b4226845254
actually update packages, and add google chrome to the sources
drewp@bigasterisk.com
parents:
138
diff
changeset
|
111 apt.packages(packages=package_lists.non_pi, **kw) |
186 | 112 else: |
113 # move to another file? | |
205 | 114 files.template(src="templates/pigpiod.service.j2", dest="/etc/systemd/system/pigpiod.service") |
186 | 115 systemd.service(service='pigpiod', daemon_reload=True, enabled=True) |
196
c409ea5a1d5c
don't tie up 80/443 with an unwanted nginx instance
drewp@bigasterisk.com
parents:
192
diff
changeset
|
116 |
275 | 117 desktop_env = host.name in ['dash', 'slash', 'plus', 'dot', 'squib', 'pillow'] |
240 | 118 if desktop_env: |
119 apt.packages(packages=package_lists.xorg + package_lists.desktop, **kw) | |
271 | 120 roblox() |
261 | 121 if desktop_env or host.name in ['bang', 'ditto']: |
240 | 122 pdm() |
123 | |
205 | 124 no_unwanted_services() |