forked from brightflash64/Linux-Respinner
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgroup-update
executable file
·662 lines (647 loc) · 33.2 KB
/
group-update
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
#!/bin/bash
# Place this script one level above the directories containing the distro files.
# exit if not root
[[ $EUID -ne 0 ]] && echo "You must be root to run this script." && exit
# define the non-root user
export username="$(logname)"
# Partition holding distro files
export partition="MEDIA_2"
# Script working directory (one level above project directories)
export WKDIR="$(readlink -f "$(dirname "$0")")"
# name of the projects' root file system directories
export RFSCONTENTS="edit"
# destination directory for booting finished iso file
export DESTINATION="/media/user/BOOT/isofiles/"
# Go into each project and update packages
# list of directories holding linux projects
#export dirs='backup'
#export dirs='debian'
#export dirs='mofolinux'
#export dirs='respunrhino'
#export dirs='specialsid'
#export dirs='skywavelinux'
#export dirs='catbirdlinux'
#export dirs='backup debian'
#export dirs='backup respunrhino'
#export dirs='catbirdlinux catbirdlinux_cn specialsid'
#export dirs='catbirdlinux catbirdlinux_cn skywavelinux specialsid'
#export dirs='catbirdlinux mofolinux skywavelinux specialsid'
#export dirs='catbirdlinux catbirdlinux_cn debian mofolinux skywavelinux specialsid backup respunrhino'
#export dirs='catbirdlinux catbirdlinux_cn debian mofolinux skywavelinux'
#export dirs='catbirdlinux mofolinux skywavelinux'
# apt packages to install and remove
new_apt_pkg=''
rmv_apt_pkg=''
# Python packages to install and remove
new_python_pkg=''
rmv_python_pkg=''
# Kernels
kernel_path="${WKDIR}/zz_kernels"
export older_kernel='6.9.10-x64v2-xanmod1'
export rmv_kernel='6.10.6-x64v2-xanmod1'
export new_kernel='6.10.7-x64v2-xanmod1'
header_deb="${kernel_path}/linux-headers-${new_kernel}.deb"
image_deb="${kernel_path}/linux-image-${new_kernel}.deb"
libc_deb="${kernel_path}/linux-libc-dev_${new_kernel}.deb"
# DNS
CHROOTDNS='9.9.9.9' # DNS to use during chroot operation
fixfiles(){
printf "\nExecuting file and directory fixes, NON CHROOT...\n"
### Backup the bash aliases and etc/bash.bashrc
# cp ${WKDIR}/${project}/edit/etc/bash.bashrc ${WKDIR}/${project}/livecd-setup/initial-setup/bash.bashrc
# cp ${WKDIR}/${project}/edit/etc/skel/.bash_aliases ${WKDIR}/${project}/utils/.bash_aliases
### Back up a working script
# myscript="tor-remote"; cp ${WKDIR}/${project}/edit/usr/local/bin/${myscript} ${WKDIR}/${project}/livecd-setup/apps/scripts-testing/
### Clean up cruft from older kernels
# [[ -z "${older_kernel}" ]] || rm -rf ${RFSCONTENTS}/usr/lib/modules/*-${older_kernel}
# [[ -z "${rmv_kernel}" ]] || rm -rf ${RFSCONTENTS}/usr/lib/modules/*-${rmv_kernel}
# [[ -z "${older_kernel}" ]] || rm -f ${RFSCONTENTS}/boot/*-${older_kernel}
# [[ -z "${rmv_kernel}" ]] || rm -f ${RFSCONTENTS}/boot/*-${rmv_kernel}
### Copy various files from a working system
# cp /etc/default/locale ${WKDIR}/${project}/edit/etc/default/locale
# cp /home/user/.tmux.conf ${WKDIR}/${project}/edit/etc/skel/.tmux.conf
# cp ${WKDIR}/${project}/edit/etc/skel/.tmux.conf ${WKDIR}/${project}/livecd-setup/apps/dotfiles/
# rsync -avhc --inplace --mkpath /media/user/MEDIA_2/distros/catbirdlinux/edit/etc/skel/.config/castero/ ${WKDIR}/${project}/edit/etc/skel/.config/castero/
# rsync -avhc --inplace --mkpath /media/user/MEDIA_2/distros/catbirdlinux/edit/etc/skel/.config/mpv/ ${WKDIR}/${project}/edit/etc/skel/.config/mpv/
# rsync -avhc --inplace --mkpath /media/user/MEDIA_2/distros/catbirdlinux/edit/etc/skel/.config/smplayer/ ${WKDIR}/${project}/edit/etc/skel/.config/smplayer/
### Back up some SDR files
# cp -af /usr/local/src/dyatlov/index.html ${WKDIR}/${project}/edit/usr/local/src/dyatlov/index.html
# cp -af /usr/local/src/dyatlov/index.html ${WKDIR}/${project}/livecd-setup/apps/python/sdrmap/dyatlov/index.html
# cp -af /usr/local/src/dyatlov/kiwisdr_com.js ${WKDIR}/${project}/edit/usr/local/src/dyatlov/kiwisdr_com.js
# cp -af /usr/local/src/dyatlov/static_rx.js ${WKDIR}/${project}/edit/usr/local/src/dyatlov/static_rx.js
# cp -af /usr/local/src/dyatlov/static_rx.js ${WKDIR}/${project}/livecd-setup/apps/python/sdrmap/dyatlov/static_rx.js
### Edit some files with sed
# sed -i 's|Arc-Dark|Gradient-Dark-GTK|g' ${WKDIR}/${project}/edit/etc/skel/.gtkrc-2.0
# sed -i 's|Arc-Dark|Gradient-Dark-GTK|g' ${WKDIR}/${project}/edit/etc/skel/.config/gtk-3.0/settings.ini
# sed -i 's|Arc-Dark|Gradient-Dark-GTK|g' ${WKDIR}/${project}/edit/etc/skel/.config/gtk-4.0/settings.ini
# sed -i 's|Papirus-Dark|Infinity-Dark-Icons|g' ${WKDIR}/${project}/edit/etc/skel/.gtkrc-2.0
# sed -i 's|Papirus-Dark|Infinity-Dark-Icons|g' ${WKDIR}/${project}/edit/etc/skel/.config/gtk-3.0/settings.ini
# sed -i 's|Papirus-Dark|Infinity-Dark-Icons|g' ${WKDIR}/${project}/edit/etc/skel/.config/gtk-4.0/settings.ini
# sed -i 's|Papirus-Dark|Infinity-Dark-Icons|g' ${WKDIR}/${project}/edit/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
# sed -i 's|Papirus-Dark|Infinity-Dark-Icons|g' ${WKDIR}/${project}/edit/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
### Copy a Starship config
# cp -arf /root/starship ${WKDIR}/${project}/edit/etc/xdg/
# echo 'export STARSHIP_CONFIG="/etc/xdg/starship/starship.toml"' >> ${WKDIR}/${project}/edit/etc/environment
### Save the new terminal configuration
# rsync -avhc --inplace --delete \
# catbirdlinux/livecd-setup/apps/alacritty/ \
# ${WKDIR}/${project}/livecd-setup/apps/alacritty/
# rsync -avhc --inplace --delete \
# /home/user/.config/alacritty/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/alacritty/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.config/alacritty
# rsync -avhc --inplace --delete \
# ${WKDIR}/${project}/edit/etc/skel/.config/alacritty/ \
# ${WKDIR}/${project}/edit/etc/xdg/alacritty/
#
# rsync -avhc --inplace --delete \
# catbirdlinux/livecd-setup/apps/wezterm/ \
# ${WKDIR}/${project}/livecd-setup/apps/wezterm/
# rsync -avhc --inplace --delete \
# /home/user/.config/wezterm/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/wezterm/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.config/wezterm
# rsync -avhc --inplace --delete \
# ${WKDIR}/${project}/edit/etc/skel/.config/wezterm/ \
# ${WKDIR}/${project}/edit/etc/xdg/wezterm/
#
# edit with sed
# sed -i 's|"bat |"batcat |g' ${WKDIR}/${project}/livecd-setup/apps/dotfiles/.bash_aliases
# sed -i 's|"bat |"batcat |g' ${WKDIR}/${project}/utils/.bash_aliases
# sed -i 's|"bat |"batcat |g' ${WKDIR}/${project}/edit/etc/skel/.bash_aliases
# sed -i 's|"bat |"batcat |g' ${WKDIR}/${project}/edit/etc/bash.bashrc
#
##############################################################################
# general rsync
# rsync -avhc --delete ${WKDIR}/${project}/edit/usr/local/share/html/ \
# ${WKDIR}/${project}/livecd-setup/apps/html/
# chown -R root:root ${WKDIR}/${project}/livecd-setup/apps/html/
#
###############################################################################
# generic script installer
# scriptname="sdrmap"
# cp /root/${scriptname} \
# ${WKDIR}/${project}/edit/usr/sbin/
# cp /root/${scriptname} \
# ${WKDIR}/${project}/livecd-setup/apps/scripts-testing/
#
###############################################################################
# generic app launcher copy
# applauncher="locale-manager.desktop"
# cp /home/user/.local/share/applications/${applauncher} \
# ${WKDIR}/${project}/edit/etc/skel/.local/share/applications/${applauncher}
# chown root:root ${WKDIR}/${project}/edit/etc/skel/.local/share/applications/${applauncher}
# cp ${WKDIR}/${project}/edit/etc/skel/.local/share/applications/${applauncher} \
# ${WKDIR}/${project}/livecd-setup/apps/launchers/${applauncher}
# rsync -avhc --inplace --delete ${WKDIR}/${project}/edit/etc/skel/.local/share/applications/ \
# ${WKDIR}/${project}/utils/.local/share/applications/
#
##############################################################################
# Update home configs
# foldernames="Gpredict"
# for folder in $foldernames;do
# rsync -avhc --inplace --delete --mkpath \
# /home/${username}/.config/${folder}/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/${folder}/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.config/${folder}/
# rsync -avhc --inplace --delete --mkpath \
# ${WKDIR}/${project}/edit/etc/skel/.config/${folder}/ \
# ${WKDIR}/${project}/livecd-setup/apps/${folder}/
# # if necessary, configure directory for xdg
# rsync -avhc --inplace --delete --mkpath \
# ${WKDIR}/${project}/edit/etc/skel/.config/${folder}/ \
# ${WKDIR}/${project}/edit/etc/xdg/${folder}/
# done
#
##############################################################################
# Update DWM-Flexipatch
#
# rsync -avc --inplace --delete /usr/local/src/dwm-flexipatch/ \
# ${WKDIR}/${project}/edit/usr/local/src/dwm-flexipatch/
# rsync -avc --inplace --delete /usr/local/src/dwm-flexipatch/ \
# ${WKDIR}/${project}/livecd-setup/apps/dwm-flexipatch/
# # save the config patch
# # here "flexipatch.new" means fresh code from Git
# # here plain "flexipatch" means customized code running in the system
# diff -Naru \
# ${WKDIR}/${project}/livecd-setup/apps/dwm-flexipatch.new/config.def.h \
# ${WKDIR}/${project}/livecd-setup/apps/dwm-flexipatch/config.def.h \
# > ${WKDIR}/${project}/livecd-setup/apps/dwm-mypatches/config.patch
# # save the flexipatches patch
# diff -Naru \
# ${WKDIR}/${project}/livecd-setup/apps/dwm-flexipatch.new/patches.def.h \
# ${WKDIR}/${project}/livecd-setup/apps/dwm-flexipatch/patches.def.h \
# > ${WKDIR}/${project}/livecd-setup/apps/dwm-mypatches/patches.patch
#
###############################################################################
# Replace Vimwiki with generic markdown notes
# cp /usr/local/bin/vimwiki \
# ${WKDIR}/${project}/edit/usr/local/bin/
# rsync -avc --inplace --delete /home/${username}/Documents/ \
# ${WKDIR}/${project}/edit/etc/skel/Documents/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/Documents
###############################################################################
# Update Neovim files
# rm /home/${username}/.config/nvim/undo/*
# rm /home/${username}/.config/nvim/lazy-lock.json
# rm /home/${username}/.cache/nvim/*.log
# rm /home/${username}/.cache/nvim/luac/*
# rm ${WKDIR}/${project}/edit/etc/skel/.cache/nvim/*.log
# rm ${WKDIR}/${project}/edit/etc/skel/.cache/nvim/luac/*
# rsync -avhc --inplace --delete --mkpath /home/${username}/.local/share/nvim/ \
# ${WKDIR}/${project}/edit/etc/skel/.local/share/nvim/
# rsync -avhc --inplace --delete --mkpath /home/${username}/.cache/nvim/ \
# ${WKDIR}/${project}/edit/etc/skel/.cache/nvim/
# rsync -avhc --inplace --delete --mkpath /home/${username}/.config/nvim/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/nvim/
# rsync -avhc --inplace --delete --mkpath /home/${username}/.local/share/nvim/ \
# ${WKDIR}/${project}/livecd-setup/apps/neovim/skel/.local/share/nvim/
# rsync -avhc --inplace --delete --mkpath /home/${username}/.config/nvim/ \
# ${WKDIR}/${project}/livecd-setup/apps/neovim/skel/.config/nvim/
# rsync -avhc --inplace --delete --mkpath /etc/xdg/nvim/ \
# ${WKDIR}/${project}/edit/etc/xdg/nvim/
# rsync -avhc --inplace --delete --mkpath /etc/xdg/nvim/ \
# ${WKDIR}/${project}/livecd-setup/apps/neovim/nvim-root/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.local/share/nvim
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.cache/nvim
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.config/nvim
# chown -R root:root ${WKDIR}/${project}/livecd-setup/apps/neovim/skel/.local/share/nvim
# chown -R root:root ${WKDIR}/${project}/livecd-setup/apps/neovim/skel/.config/nvim
###############################################################################
# Update Obsidian files
# rsync -avhc --inplace --delete /home/${username}/.config/obsidian/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/obsidian/
# rsync -avhc --inplace --delete /home/${username}/.config/obsidian/ \
# ${WKDIR}/${project}/livecd-setup/apps/obsidian/.config/obsidian/
# rsync -avhc --inplace --delete /home/${username}/Documents/ \
# ${WKDIR}/${project}/edit/etc/skel/Documents/
# rsync -avhc --inplace --delete /home/${username}/Documents/ \
# ${WKDIR}/${project}/livecd-setup/apps/obsidian/Documents/
# > ${WKDIR}/${project}/edit/etc/skel/.config/obsidian/obsidian.log
# > ${WKDIR}/${project}/edit/etc/skel/.config/obsidian/id
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.config/obsidian
# chown -R root:root ${WKDIR}/${project}/livecd-setup/apps/obsidian/.config/obsidian
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/Documents
# chown -R root:root ${WKDIR}/${project}/livecd-setup/apps/obsidian/Documents
###############################################################################
# Group update Mozilla / Firefox
# rsync -avhc --inplace --delete /home/${username}/.mozilla/ \
# ${WKDIR}/${project}/edit/etc/skel/.mozilla/
# rm -rf ${WKDIR}/${project}/edit/etc/skel/.mozilla/firefox/*.default-beta-*/datareporting/archived/*
# rm -rf /home/user/.cache/mozilla/*
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.mozilla
# rsync -avhc --inplace --delete ${WKDIR}/${project}/edit/etc/skel/.mozilla/ \
# ${WKDIR}/${project}/livecd-setup/apps/firefox/.mozilla/
# rsync -avhc --inplace --delete /home/user/.cache/mozilla/ \
# ${WKDIR}/${project}/edit/etc/skel/.cache/mozilla/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.cache/mozilla
# rsync -avhc --inplace --delete ${WKDIR}/${project}/edit/etc/skel/.cache/mozilla/ \
# ${WKDIR}/${project}/livecd-setup/apps/firefox/.cache/mozilla/
#
###############################################################################
# Update SMPlayer
# rsync -avhc --inplace --delete /home/${username}/.config/smplayer/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/smplayer/
# rsync -avhc --inplace --delete /home/${username}/.config/smplayer/ \
# ${WKDIR}/${project}/livecd-setup/apps/smplayer/
# chown -R root:root ${WKDIR}/${project}/edit/etc/skel/.config/smplayer
# chown -R root:root ${WKDIR}/${project}/livecd-setup/apps/smplayer
#
# hide lsp plugin launchers
# sed -i '$aHidden=true' ${WKDIR}/${project}/edit/usr/share/applications/in.lsp_plug*.desktop
#
#
###############################################################################
# Update Gimp
# rsync -avhc --inplace --delete --mkpath /home/user/.config/GIMP/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/GIMP/; \
# chown -R root:root \
# ${WKDIR}/${project}/edit/etc/skel/.config/GIMP;
###############################################################################
# Update Libreoffice
#
# rsync -avhc --inplace --delete --mkpath /home/user/.config/libreoffice/ \
# ${WKDIR}/${project}/edit/etc/skel/.config/libreoffice/; \
# chown -R root:root \
# ${WKDIR}/${project}/edit/etc/skel/.config/libreoffice;
# rsync -avhc --inplace --delete --mkpath ${WKDIR}/${project}/edit/etc/skel/.config/libreoffice/ ${WKDIR}/${project}/livecd-setup/apps/libreoffice/
#
###############################################################################
# Update Audacity
#
# rsync -avhc --inplace --delete /home/user/.audacity-data/ \
# ${WKDIR}/${project}/edit/etc/skel/.audacity-data/
# chown -R root:root \
# ${WKDIR}/${project}/edit/etc/skel/.audacity-data
#
###############################################################################
printf "\nFinished file and directory fixes, NON CHROOT....\n"
}
discrete_commands(){
printf "\nStarting discrete commands in CHROOT environment...\n"
### overwrite a fresh nvim into the system ###
# tar -xvzf $WKDIR/zz_archive/packages/nvim-linux64.tar.gz -C ${RFSCONTENTS}/root/
# chroot ${RFSCONTENTS} bash -c "cd /root/nvim-linux64 || exit; \
# chown -R root:root ./*; \
# cp bin/* /usr/bin; \
# cp -r share/{icons,locale,man} /usr/share/; \
# rsync -avhc --delete --inplace --mkpath lib/nvim/ /usr/lib/nvim/; \
# rsync -avhc --delete --inplace --mkpath share/nvim/ /usr/share/nvim/; \
# rsync -avhc --delete --inplace --mkpath lib/nvim/ /usr/lib/nvim/; \
# cd ..; \
# npm install -g neovim; \
# curl -L https://cpanmin.us | perl - App::cpanminus; \
# cpanm Neovim::Ext;"
# rm -rf ${RFSCONTENTS}/root/nvim-linux64;
### end of overwrite a fresh nvim into the system ###
### Do various tasks from within the system ###
# chroot ${RFSCONTENTS} bash -c "cd /root; locale-gen; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; apt purge --autoremove -y shotcut; gtk-update-icon-cache; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; curl https://rclone.org/install.sh | sudo bash;"
# chroot ${RFSCONTENTS} bash -c "cd /root; apt purge --autoremove -y arc-theme; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; apt purge --autoremove -y ruby-mdl python3-flake8; nala update; nala install -y python3-mypy python3-ruff tidy yamllint; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; npm install -g markdownlint stylelint jsonlint eslint-plugin-html @prettier/plugin-xml; ln -sf /usr/bin/mdl /usr/bin/markdownlint"
# chroot ${RFSCONTENTS} bash -c "cd /root; npm cache clean -f; python3.11 -m pip cache clean; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; nala update; nala install -y mypy; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; curl -sS https://starship.rs/install.sh | sh"
# cp $WKDIR/zz_kernels/scripts/sdrpp_ubuntu_focal_amd64.deb ${RFSCONTENTS}/root
# chroot ${RFSCONTENTS} bash -c "cd /root; dpkg -i sdrpp_ubuntu_focal_amd64.deb; rm sdrpp_ubuntu_focal_amd64.deb;"
# cp $WKDIR/zz_kernels/scripts/python-migrate ${RFSCONTENTS}/root/
# chroot ${RFSCONTENTS} bash -c "cd /root; ./python-migrate; rm python-migrate;"
# chroot ${RFSCONTENTS} bash -c "locale-gen"
# chroot ${RFSCONTENTS} bash -c "nala update; nala update; nala purge firefox -y; nala install firefox -y; nala clean; apt clean;"
# chroot ${RFSCONTENTS} bash -c "cd /root; rm bat_0.24.0_amd64.deb; ls;"
# chroot ${RFSCONTENTS} bash -c "rm -rf /usr/share/fonts/{opentype/FuraCode,truetype/FuraCode}; fc-cache -fv"
# chroot ${RFSCONTENTS} bash -c 'checkppa --delete;'
# chroot ${RFSCONTENTS} bash -c 'python3 -m pip install --upgrade --pre lookatme;'
############### Install Neovim from Makedeb build process
# chroot ${RFSCONTENTS} bash -c "cd /root; dpkg -i nvim-linux64.deb && echo -e '\n\n\n------------------------- done!!!!!!!!!!!!!!!-----------------------\n\n\n'; rm nvim-linux64.deb;"
# chroot ${RFSCONTENTS} bash -c "update-alternatives --install /usr/bin/vi vi /usr/bin/nvim 60 && update-alternatives --config vi;"
# chroot ${RFSCONTENTS} bash -c "update-alternatives --install /usr/bin/vim vim /usr/bin/nvim 60 && update-alternatives --config vim;"
# chroot ${RFSCONTENTS} bash -c "update-alternatives --install /usr/bin/editor editor /usr/bin/nvim 60 && update-alternatives --config editor;"
############## Install Wezterm
# cp /root/wezterm-20240203-110809-5046fc22.Debian12.deb ${RFSCONTENTS}/root/
# chroot ${RFSCONTENTS} bash -c "cd /root; dpkg -i wezterm-20240203-110809-5046fc22.Debian12.deb && rm wezterm-20240203-110809-5046fc22.Debian12.deb"
#
printf "\nDiscrete commands executed in CHROOT environment.\n"
}
apt_install_remove(){
[[ -n "${rmv_apt_pkg}" ]] && chroot ${RFSCONTENTS} bash -c "nala purge -y ${rmv_apt_pkg}"
[[ -n "${new_apt_pkg}" ]] && chroot ${RFSCONTENTS} bash -c "nala update; nala install -y ${new_apt_pkg}"
}
get_apt_updates(){
#chroot ${RFSCONTENTS} bash -c "apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com"
#>>#chroot ${RFSCONTENTS} bash -c "nala update; nala update; nala upgrade -y; nala upgrade -y; nala autopurge; nala clean;"
chroot ${RFSCONTENTS} bash -c "aptitude update; aptitude upgrade"
# Debian screw up the locales diring updates!
chroot ${RFSCONTENTS} bash -c "sed -i 's|^\#.*en_US.UTF-8 UTF-8| en_US.UTF-8 UTF-8|' /etc/locale.gen"
chroot ${RFSCONTENTS} bash -c "echo -e 'LANG=C.UTF-8\nLANGUAGE=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/locale.conf; locale-gen"
#chroot ${RFSCONTENTS} bash -c "apt upgrade -y; apt --fix-broken install"
chroot ${RFSCONTENTS} bash -c "apt -y autoremove --purge; apt clean; nala autopurge; nala clean;"
chroot ${RFSCONTENTS} bash -c "dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge"
}
get_other_updates(){
chroot ${RFSCONTENTS} bash -c "cd /root; npm install -g npm@latest"
chroot ${RFSCONTENTS} bash -c "cd /root; npm install -g n; n lts; n prune"
chroot ${RFSCONTENTS} bash -c "cd /root; npm cache clean -f"
chroot ${RFSCONTENTS} bash -c "cd /root; npm update --save/--save-dev -g"
chroot ${RFSCONTENTS} bash -c "cd /root; cpan-outdated -p | cpanm"
chroot ${RFSCONTENTS} bash -c "cd /root; cpanm Neovim::Ext"
chroot ${RFSCONTENTS} bash -c "cd /root; gem update"
chroot ${RFSCONTENTS} bash -c "cd /root; gem cleanup"
chroot ${RFSCONTENTS} bash -c "cd /root; gtk-update-icon-cache"
chroot ${RFSCONTENTS} bash -c "cd /root; update-desktop-database"
chroot ${RFSCONTENTS} bash -c "cd /root; fc-cache -fv"
#chroot ${RFSCONTENTS} bash -c "cd /usr/local/src; ./getgits.sh"
}
kernel_upgrade(){
# install microcode packages
#cp $WKDIR/zz_kernels/microcode/*.deb ${RFSCONTENTS}/root
#chroot ${RFSCONTENTS} bash -c "cd /root; dpkg -i *.deb"
#rm ${RFSCONTENTS}/root/*.deb
[[ -z "${rmv_kernel}" ]] && return
[[ -z "${new_kernel}" ]] && return
cp ${header_deb} ${RFSCONTENTS}/root/kernel_header.deb
cp ${image_deb} ${RFSCONTENTS}/root/kernel_image.deb
cp ${libc_deb} ${RFSCONTENTS}/root/libc.deb
chroot ${RFSCONTENTS} bash -c "cd /root; dpkg -i *.deb; exit"
[[ -z "${older_kernel}" ]] || chroot ${RFSCONTENTS} bash -c "apt purge --autoremove *-${older_kernel} -y"
[[ -z "${rmv_kernel}" ]] || chroot ${RFSCONTENTS} bash -c "apt purge --autoremove *-${rmv_kernel} -y"
chroot ${RFSCONTENTS} bash -c "cd /root; build-bootfiles ${new_kernel}; exit"
# Create vmlinuz and initrd files for bootable hybrid livecds.
# Set proper command for Debian or Ubuntu environments
[[ -d "extract-cd/casper" ]] && export UPDINITRAMFS="/usr/sbin/update-initramfs.distrib"
[[ -d "extract-cd/live" ]] && export UPDINITRAMFS="/usr/sbin/update-initramfs.orig.initramfs-tools"
chroot ${RFSCONTENTS} bash -c "depmod -a -v -w ${new_kernel};
$UPDINITRAMFS -c -k ${new_kernel} ; sync;
cp /boot/initrd.img-${new_kernel} ~/initrd;
cp /boot/vmlinuz-${new_kernel} ~/vmlinuz;
rm -f /vmlinuz;
rm -f /initrd.img;
ln -s /boot/vmlinuz-${new_kernel} /vmlinuz;
ln -s /boot/initrd.img-${new_kernel} /initrd.img;
update-grub;"
# copy, move, or clean up for Ubuntu
[[ -d "extract-cd/casper" ]] && mv ${RFSCONTENTS}/root/initrd extract-cd/casper/initrd
[[ -d "extract-cd/casper" ]] && mv ${RFSCONTENTS}/root/vmlinuz extract-cd/casper/vmlinuz
[[ -z "${older_kernel}" ]] || rm -rf ${RFSCONTENTS}/lib/modules/${older_kernel}
[[ -z "${rmv_kernel}" ]] || rm -rf ${RFSCONTENTS}/lib/modules/${rmv_kernel}
[[ -z "${older_kernel}" ]] || rm -f ${RFSCONTENTS}/boot/*-${older_kernel}
[[ -z "${rmv_kernel}" ]] || rm -f ${RFSCONTENTS}/boot/*-${rmv_kernel}
# copy, move, or clean up for Debian
#[[ -d "extract-cd/live" ]] && cp ${RFSCONTENTS}/root/initrd extract-cd/live/initrd.img-${new_kernel}
[[ -z "${older_kernel}" ]] || rm -rf ${RFSCONTENTS}/usr/lib/modules/${older_kernel}
[[ -z "${rmv_kernel}" ]] || rm -rf ${RFSCONTENTS}/usr/lib/modules/${rmv_kernel}
[[ -z "${older_kernel}" ]] || rm -f ${RFSCONTENTS}/boot/*-${older_kernel}
[[ -z "${rmv_kernel}" ]] || rm -f ${RFSCONTENTS}/boot/*-${rmv_kernel}
[[ -d "extract-cd/live" ]] && cp ${RFSCONTENTS}/root/initrd extract-cd/live/initrd.img
#[[ -d "extract-cd/live" ]] && cp ${RFSCONTENTS}/root/vmlinuz extract-cd/live/vmlinuz-${new_kernel}
[[ -d "extract-cd/live" ]] && cp ${RFSCONTENTS}/root/vmlinuz extract-cd/live/vmlinuz
[[ -d "extract-cd/live" && -f "${RFSCONTENTS}/boot/initrd.img-${new_kernel}" ]] && rm extract-cd/live/initrd.img-${rmv_kernel}
[[ -d "extract-cd/live" && -f "${RFSCONTENTS}/boot/initrd.img-${new_kernel}" ]] && rm ${RFSCONTENTS}/boot/initrd.img-${rmv_kernel}
[[ -d "extract-cd/live" && -f "${RFSCONTENTS}/boot/vmlinuz-${new_kernel}" ]] && rm extract-cd/live/vmlinuz-${rmv_kernel}
[[ -d "extract-cd/live" && -f "${RFSCONTENTS}/boot/initrd.img-${new_kernel}" ]] && rm extract-cd/live/initrd.img-${older_kernel}
[[ -d "extract-cd/live" && -f "${RFSCONTENTS}/boot/vmlinuz-${new_kernel}" ]] && rm extract-cd/live/vmlinuz-${older_kernel}
rm ${RFSCONTENTS}/root/*.deb ${RFSCONTENTS}/root/initrd ${RFSCONTENTS}/root/vmlinuz
sed -i "s|Linux Kernel ${rmv_kernel}<br>|Linux Kernel ${new_kernel}<br>|" *-latest-dev.log
sed -i "s|Linux Kernel ${rmv_kernel}</li>|Linux Kernel ${new_kernel}</li>|" *-latest-dev.log
}
python_install_remove(){
[[ -n "${new_python_pkg}" ]] && chroot ${RFSCONTENTS} bash -c "python${pyversion} -m pip install --upgrade --retries 10 --timeout 60 ${new_python_pkg}"
[[ -n "${rmv_python_pkg}" ]] && chroot ${RFSCONTENTS} bash -c "python${pyversion} -m pip uninstall -y ${rmv_python_pkg}"
chroot ${RFSCONTENTS} python${pyversion} -m pip check
}
python_update(){
chroot ${RFSCONTENTS} bash -c "cd /root; update-python3-packages"
#chroot ${RFSCONTENTS} bash -c "cd /root; jupyter lab build"
chroot ${RFSCONTENTS} bash -c "cd /root; python${pyversion} -m pip cache purge"
chroot ${RFSCONTENTS} bash -c "cd /root; python${pyversion} -m pip check"
}
remove_snap(){
chroot ${RFSCONTENTS} bash -c "for item in $(snap list);do snap remove $item; done"
chroot ${RFSCONTENTS} bash -c 'systemctl disable snapd.service'
chroot ${RFSCONTENTS} bash -c 'systemctl disable snapd.socket'
chroot ${RFSCONTENTS} bash -c 'systemctl disable snapd.seeded.service'
chroot ${RFSCONTENTS} bash -c 'rm -rf /var/cache/snapd/; apt autoremove --purge snapd'
}
super_clean(){
chroot ${RFSCONTENTS} bash -c "apt autoremove --purge -y; apt clean; nala autopurge; nala clean;"
chroot ${RFSCONTENTS} bash -c "dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge"
chroot ${RFSCONTENTS} bash -c "cd /root; python${pyversion} -m pip cache purge"
chroot ${RFSCONTENTS} bash -c 'cd /root; npm cache clean -f'
chroot ${RFSCONTENTS} bash -c 'yarn cache clean'
list="apt.autoclean \
apt.autoremove \
apt.clean \
apt.package_lists \
firefox.cache \
java.cache \
system.cache \
system.custom \
system.desktop_entry \
system.recent_documents \
system.rotated_logs \
system.tmp \
system.trash \
thumbnails.cache \
vim.history \
vlc.memory_dump \
vlc.mru \
x11.debug_logs"
chroot ${RFSCONTENTS} bash -c "echo ${list} | xargs bleachbit --clean"
}
unmounted_work(){
for project in $dirs; do
echo -e "Working in ${project}..."
$COMMAND
echo -e "Finished in ${project}... \n"
cd ${WKDIR}
done
}
mounted_work(){
for project in $dirs; do
# Python version
[[ $project == "debian" ]] && pyversion="3.11"
[[ $project == "mofolinux" ]] && pyversion="3.11"
[[ $project == "catbirdlinux" ]] && pyversion="3.11"
[[ $project == "catbirdlinux_cn" ]] && pyversion="3.11"
[[ $project == "skywavelinux" ]] && pyversion="3.11"
[[ $project == "specialsid" ]] && pyversion="3.11"
export pyversion
export project
cd ${WKDIR}/${project} || return
echo -e "\n...Starting work in $project ..."
# Chroot into the filesystem
mount --bind /run ./${RFSCONTENTS}/run
mount --bind /dev ./${RFSCONTENTS}/dev
mount --bind /dev/pts ./${RFSCONTENTS}/dev/pts
mount --bind /proc ./${RFSCONTENTS}/proc
mount --bind /sys ./${RFSCONTENTS}/sys
cp /etc/hosts ${RFSCONTENTS}/etc/hosts
mkdir -p ${RFSCONTENTS}/run/systemd/resolve
echo 'nameserver '${CHROOTDNS}'' > ${RFSCONTENTS}/run/systemd/resolve/resolv.conf
echo 'nameserver '${CHROOTDNS}'' > ${RFSCONTENTS}/run/systemd/resolve/stub-resolv.conf
wait
echo -e "\nChrooting...\n"
# execute chroot commands below here
chroot ${RFSCONTENTS} bash -c "export LANG=C.UTF-8; export LC_ALL=C.UTF-8;"
$COMMAND
# clean up before unmounting
chroot ${RFSCONTENTS} bash -c "vers=(7 8 9 10 11); for ver in ${vers[@]};do python3.${ver} -m pip cache purge; done"
chroot ${RFSCONTENTS} bash -c "nala clean; apt clean"
# Unmount after executing the chroot commands
umount ./${RFSCONTENTS}/sys
umount ./${RFSCONTENTS}/proc || umount -lf ${RFSCONTENTS}/proc
umount ./${RFSCONTENTS}/dev/pts
umount ./${RFSCONTENTS}/dev
umount ./${RFSCONTENTS}/run
# clean up after unmounting
rm -f ./${RFSCONTENTS}/etc/hosts
rm -rf ./${RFSCONTENTS}/root/.[^.]*
rm -rf ./${RFSCONTENTS}/run/systemd/resolve/.[^.]*
rm -rf ./${RFSCONTENTS}/tmp/.[^.]*
rm -rf ./${RFSCONTENTS}/var/cache/apt/.[^.]*
rm -rf ./${RFSCONTENTS}/var/cache/fontconfig/.[^.]*
rm -rf ./${RFSCONTENTS}/var/cache/man/.[^.]*
rm -rf ./${RFSCONTENTS}/var/lib/apt/lists/.[^.]*
rm -rf ./${RFSCONTENTS}/etc/apt/*.save
rm -rf ./${RFSCONTENTS}/etc/apt/sources.list.d/*.save
wait
echo -e "\n...Finished work in $project ..."
cd ${WKDIR}
done
}
construct(){
(cd ${WKDIR}/${1} || return
echo -e "\n\nStarting work in ${1} "
./multifunction.sh makedisk
echo -e "\n\nFinished work in ${1}...\n"
)
}
ripdata(){
(cd ${WKDIR}/${1} || return
echo -e "\n\nStarting work in ${1} "
./multifunction.sh extractiso
echo -e "\n\nFinished work in ${1}...\n"
)
}
make_copy(){
([[ -f ${WKDIR}/${1}/${1}-latest.iso ]] || exit 1
# kill the loop if error
trap 'echo "Exited!"; exit;' INT TERM
MAX_RETRIES=50
x=0
# Set initial return value to failure
false
while [[ $? -ne 0 ]] && [[ $x -lt $MAX_RETRIES ]]; do
((x++))
echo -e "\n...Copying $project-latest.iso --isofiles-- Pass $x...\n"
cp -f ${WKDIR}/${1}/${1}-latest.iso ${DESTINATION}/${1}-latest.iso
rsync -avhc --inplace --info=progress2 \
${WKDIR}/${1}/${1}-latest.iso ${DESTINATION}/${1}-latest.iso
#/media/$username/$destination/isofiles/$project-latest.iso;
sha256sum ${WKDIR}/${1}/${1}-latest.iso ${DESTINATION}/${1}-latest.iso
done
[[ $x -eq $MAX_RETRIES ]] && echo -e "\n\nRetry limit reached\n\n"
)
}
extract(){
# rips files from iso images and sets up the customization environmment
clear
for project in $dirs
do
export project
ripdata "$project"
done
echo -e "\n\n ISO data extraction completed. \n\n"
}
build(){
# builds iso images and copies them to the boot partition
clear
for project in $dirs
do
export project
construct "$project" #&
done
clear
echo -e "\nn...Builds complete. Now writing to the boot drive and backup...\n\n"
for project in $dirs
do
export project
make_copy "$project" #&
done
echo -e "\n\n File copy tasks completed. Enjoy your new Linux! \n\n"
}
OPTIONS="Fix Files or Directories non Chroot
Discrete Commands in Chroot Environment
Apt Install and Remove
Apt Updates
Python Install and Remove
Python Update
Kernel Upgrade
Other Updates
Super Clean
Pre-Release (Apt and Other updates, then Clean)
Remove Snap
Build ISO Images"
# Select the desired action
CHOICE=$(echo -e "$OPTIONS" | fzf --layout=reverse --header=Select: )
clear
[[ -z "$CHOICE" ]] && echo "No selection made, exiting..." && exit 0
case "$CHOICE" in
"Fix Files or Directories non Chroot")
COMMAND="fixfiles"
unmounted_work
;;
"Discrete Commands in Chroot Environment")
COMMAND="discrete_commands"
mounted_work
;;
"Apt Install and Remove")
COMMAND="apt_install_remove"
mounted_work
;;
"Apt Updates")
COMMAND="get_apt_updates"
mounted_work
;;
"Python Install and Remove")
COMMAND="python_install_remove"
mounted_work
;;
"Python Update")
COMMAND="python_update"
mounted_work
;;
"Kernel Upgrade")
COMMAND="kernel_upgrade"
mounted_work
;;
"Other Updates")
COMMAND="get_other_updates"
mounted_work
;;
"Super Clean")
COMMAND="super_clean"
mounted_work
;;
"Pre-Release (Apt and Other updates, then Clean)")
COMMAND="get_apt_updates \
get_other_updates \
super_clean";
mounted_work
;;
"Remove Snap")
COMMAND="remove_snap";
mounted_work
;;
"Extract ISO Contents")
extract
;;
"Build ISO Images")
# COMMAND="super_clean"
# mounted_work
build
;;
esac
echo "End of work in all projects."