19
19
#
20
20
## PyInfra Functions
21
21
#
22
- @deploy ("Pacman mirror preparation " )
22
+ @deploy ("Initial pacman Operations " )
23
23
def prepare_pacman ():
24
- pacman .update (
25
- name = "Updating pacman repositories" ,
26
- _sudo = True
27
- )
28
-
29
24
pacman .packages (
30
- name = "Installing bootstrap packages" ,
25
+ name = "Installing initial packages" ,
31
26
packages = ["archlinux-keyring" , "rsync" , "rebuild-detector" , "reflector" ],
32
27
present = True ,
33
- update = False ,
28
+ update = True ,
34
29
_sudo = True ,
35
30
)
36
31
37
32
server .shell (
38
- name = "Updating arch mirrors" ,
33
+ name = "Changing pacman mirrors to the fastest available in the specified region " ,
39
34
commands = [f"reflector -c { host .data .get ("MIRROR_REGION" )} -p https,rsync --delay 12 --sort rate --save /etc/pacman.d/mirrorlist" ],
40
35
_sudo = True
41
36
)
42
37
43
38
pacman .update (
44
- name = "Updating newly synced pacman repositories " ,
39
+ name = "Syncing local mirror cache with remote sources " ,
45
40
_sudo = True
46
41
)
47
42
48
- @deploy ("Package Management " )
43
+ @deploy ("Packages Installation " )
49
44
def install_packages ():
50
45
pacman .packages (
51
- name = "Installing system packages" ,
52
- packages = ["linux-lts-headers" , "pacman-contrib" , "base-devel" , "dmidecode" , "dkms" , "amd-ucode" ,
53
- "linux-firmware" , "lm_sensors" , "curl" , "e2fsprogs" , "exfatprogs" , "iproute2" , "mtr" ,
54
- "lsof" , "smartmontools" , "udisks2" , "dosfstools" , "less" , "wget" ],
46
+ name = "System" ,
47
+ packages = ["linux-lts-headers" , "pacman-contrib" , "base-devel" , "dmidecode" ,
48
+ "dkms" , "amd-ucode" , "linux-firmware" , "lm_sensors" , "curl" ,
49
+ "e2fsprogs" , "exfatprogs" , "iproute2" , "mtr" , "lsof" , "smartmontools" ,
50
+ "udisks2" , "dosfstools" , "less" , "wget" ],
55
51
present = True ,
56
52
update = False ,
57
53
_sudo = True ,
58
54
)
59
55
60
56
pacman .packages (
61
- name = "Installing AMDGPU drivers" ,
62
- packages = ["mesa" , "xf86-video-amdgpu" , "vulkan-radeon" , "libva-mesa-driver" , "mesa-vdpau" , "nvtop" ],
57
+ name = "AMD APU/GPU" ,
58
+ packages = ["mesa" , "xf86-video-amdgpu" , "vulkan-radeon" , "libva-mesa-driver" ,
59
+ "mesa-vdpau" , "nvtop" ],
63
60
present = True ,
64
61
update = False ,
65
62
_sudo = True ,
66
63
)
67
64
68
65
pacman .packages (
69
- name = "Installing Services packages " ,
70
- packages = ["docker" , "docker-compose" , "samba" , "zerotier-one" , "openssh" , "clamav" ,
71
- "mariadb-clients" , "openldap" , "smbclient" , "vsftpd" ],
66
+ name = "Services" ,
67
+ packages = ["docker" , "docker-compose" , "samba" , "zerotier-one" , "openssh" ,
68
+ "clamav" , " mariadb-clients" , "openldap" , "smbclient" , "vsftpd" ],
72
69
present = True ,
73
70
update = False ,
74
71
_sudo = True ,
75
72
)
76
73
77
74
pacman .packages (
78
- name = "Installing Archiving & Compression packages " ,
75
+ name = "Archiving & Compression" ,
79
76
packages = ["tar" , "bzip2" , "unrar" , "gzip" , "unzip" , "zip" , "p7zip" ],
80
77
present = True ,
81
78
update = False ,
82
79
_sudo = True ,
83
80
)
84
81
85
82
pacman .packages (
86
- name = "Installing Runners & SDK packages " ,
87
- packages = ["jre17-openjdk-headless" , "jre21-openjdk-headless" , "python" ],
83
+ name = "Code Runtime " ,
84
+ packages = ["jre17-openjdk-headless" , "jre21-openjdk-headless" , "python" , "rustup" ],
88
85
present = True ,
89
86
update = False ,
90
87
_sudo = True ,
91
88
)
92
89
93
90
pacman .packages (
94
- name = "Installing User packages" ,
95
- packages = ["eza" , "neovim" , "rustup" , "trash-cli" , "git" , "dos2unix" , "screen" , "iperf3" ,
96
- "lolcat" , "zsh" , "zsh-autosuggestions" , "zsh-syntax-highlighting" , "beep" , "ffmpeg" , "influx-cli" ,
97
- "speedtest-cli" , "uwufetch" , "yt-dlp" , "duf" ],
91
+ name = "User Specific" ,
92
+ packages = ["eza" , "neovim" , "speedtest-cli" , "trash-cli" , "git" ,
93
+ "dos2unix" , "screen" , "iperf3" ,"lolcat" , "zsh" , "zsh-autosuggestions" ,
94
+ "zsh-syntax-highlighting" , "beep" , "ffmpeg" , "influx-cli" ,"speedtest-cli" ,
95
+ "uwufetch" , "yt-dlp" , "duf" ],
98
96
present = True ,
99
97
update = False ,
100
98
_sudo = True ,
101
99
)
102
100
103
- @deploy ("AUR Configuration Support " )
101
+ @deploy ("AUR Integration " )
104
102
def preparing_aur_support ():
105
103
server .shell (
106
104
name = "Fixing ownership of the `.local` user folder" ,
@@ -114,7 +112,7 @@ def preparing_aur_support():
114
112
)
115
113
116
114
git .repo (
117
- name = "Downloading paru from Github" ,
115
+ name = "Downloading ` paru` from Github" ,
118
116
src = "https://aur.archlinux.org/paru.git" ,
119
117
dest = f"/home/{ host .get_fact (User )} /paru" ,
120
118
branch = "master" ,
@@ -123,13 +121,13 @@ def preparing_aur_support():
123
121
)
124
122
125
123
server .shell (
126
- name = "Bypassing `sudo: a terminal is required to read the password` error " ,
124
+ name = "Bypassing `sudo: a terminal is required to read the password`" ,
127
125
commands = [f"echo '{ host .get_fact (User )} ALL = NOPASSWD: /usr/bin/pacman' >> /etc/sudoers" ],
128
126
_sudo = True
129
127
)
130
128
131
129
server .shell (
132
- name = "Building paru from source" ,
130
+ name = "Building ` paru` from source" ,
133
131
commands = [f"cd /home/{ host .get_fact (User )} /paru; makepkg -sci --noconfirm" ]
134
132
)
135
133
@@ -139,33 +137,38 @@ def preparing_aur_support():
139
137
_sudo = True
140
138
)
141
139
142
- @deploy ("Package Management (AUR)" )
140
+ @deploy ("Packages Installation (AUR)" )
143
141
def install_aur_packages ():
144
142
server .shell (
145
- name = "Installing AUR packages" ,
146
- commands = ["paru -S --noconfirm --cleanafter autojump mkinitcpio-firmware telegraf-bin" ],
143
+ name = "Services & Firmware" ,
144
+ commands = ["paru -S --noconfirm --cleanafter mkinitcpio-firmware telegraf-bin" ],
145
+ )
146
+
147
+ server .shell (
148
+ name = "User Specific" ,
149
+ commands = ["paru -S --noconfirm --cleanafter autojump" ],
147
150
)
148
151
149
- @deploy ("User Configuration" )
152
+ @deploy ("User Environment Configuration" )
150
153
def user_configuration ():
151
154
server .shell (
152
155
name = "Changing shell to ZSH" ,
153
156
commands = [f"chsh -s /usr/bin/zsh { host .get_fact (User )} " ],
154
157
_sudo = True
155
158
)
156
159
157
- @deploy ("Service Configuration " )
160
+ @deploy ("Service Preparation " )
158
161
def service_configuration ():
159
162
server .shell (
160
163
name = "Joining Zerotier network" ,
161
164
commands = [f"zerotier-cli join { host .data .get ("ZEROTIER_NETWORK_ID" )} " ],
162
165
_sudo = True
163
166
)
164
167
165
- @deploy ("System service management " )
168
+ @deploy ("System Configuration " )
166
169
def system_services ():
167
170
systemd .service (
168
- name = "Enabling SSH service " ,
171
+ name = "Enabling SSH" ,
169
172
service = "sshd.service" ,
170
173
running = True ,
171
174
enabled = True ,
@@ -181,56 +184,54 @@ def system_services():
181
184
)
182
185
183
186
systemd .service (
184
- name = "Enabling SMB service " ,
187
+ name = "Enabling SMB" ,
185
188
service = "smb.service" ,
186
189
running = True ,
187
190
enabled = True ,
188
191
_sudo = True
189
192
)
190
193
191
194
systemd .service (
192
- name = "Enabling NMB service " ,
195
+ name = "Enabling NMB" ,
193
196
service = "nmb.service" ,
194
197
running = True ,
195
198
enabled = True ,
196
199
_sudo = True
197
200
)
198
201
199
202
systemd .service (
200
- name = "Enabling Zerotier-one service " ,
203
+ name = "Enabling Zerotier" ,
201
204
service = "zerotier-one.service" ,
202
205
running = True ,
203
206
enabled = True ,
204
207
_sudo = True
205
208
)
206
209
207
210
systemd .service (
208
- name = "Enabling Telegraf service " ,
211
+ name = "Enabling Telegraf" ,
209
212
service = "telegraf.service" ,
210
213
running = True ,
211
214
enabled = True ,
212
215
_sudo = True
213
216
)
214
217
215
- @deploy ("Post-install tasks " )
216
- def edit_files ():
218
+ @deploy ("Post-deployment Tasks " )
219
+ def session_cleanup ():
217
220
server .shell (
218
- name = "Add hostname & IP to login screen " ,
219
- commands = ["echo -e 'Hostname: \\ n \n IPv4: \4 \n ' >> /etc/issue " ], # not tested be careful, it should work
221
+ name = "Removing sudo bypass " ,
222
+ commands = [f"sed -i '/NOPASSWD/d' /etc/sudoers " ],
220
223
_sudo = True
221
224
)
222
225
223
- @deploy ("Deploy Cleanup" )
224
- def session_cleanup ():
225
226
server .shell (
226
- name = "Removing `sudo` bypass " ,
227
- commands = [f"sed '$d' /etc/sudoers " ],
227
+ name = "Removing `paru-src` leftovers " ,
228
+ commands = [f"rm /home/ { host . get_fact ( User ) } /paru -r " ],
228
229
_sudo = True
229
230
)
230
-
231
+
231
232
server .shell (
232
- name = "Removing paru-src leftovers " ,
233
- commands = [f"rm /home/ { host . get_fact ( User ) } /paru -r " ],
233
+ name = "Adding hostname & IP to login screen " ,
234
+ commands = ["echo -e 'Hostname: \\ n \n IPv4: \4 \n ' >> /etc/issue " ], # not tested be careful, it should work
234
235
_sudo = True
235
236
)
236
237
0 commit comments