penguins-eggs 25.10.28 → 25.11.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/.oclif.manifest.json +4 -4
  2. package/README.md +770 -3
  3. package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
  4. package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
  5. package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
  6. package/addons/eggs/theme/applications/install-system.desktop +8 -6
  7. package/assets/calamares/install-system.sh +0 -0
  8. package/assets/calamares/io.calamares.calamares.policy +25 -0
  9. package/assets/penguins-eggs.desktop +0 -0
  10. package/assets/penguins-krill.desktop +0 -0
  11. package/assets/penguins-links-add.desktop +0 -0
  12. package/assets/penguins-live-installer.desktop +0 -0
  13. package/bin/dev.js +0 -0
  14. package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
  15. package/conf/distros/alpine/calamares/modules/packages.mustache +1 -0
  16. package/conf/distros/alpine/calamares/modules/removeuser.mustache +2 -14
  17. package/conf/distros/alpine/calamares/modules/unpackfs.mustache +2 -2
  18. package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  19. package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  20. package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  21. package/conf/distros/buster/calamares/modules/shellprocess@boot_deploy.yml +1 -16
  22. package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  23. package/conf/distros/noble/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  24. package/conf/distros/noble/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  25. package/conf/distros/noble/calamares/libexec/calamares-aptsources.sh +0 -0
  26. package/conf/distros/noble/calamares/libexec/calamares-l10n-helper.sh +0 -0
  27. package/conf/distros/noble/calamares/libexec/calamares-logs-helper.sh +1 -1
  28. package/conf/distros/noble/calamares/libexec/calamares-nomodeset.sh +0 -0
  29. package/conf/distros/noble/calamares/modules/shellprocess@boot_deploy.yml +1 -11
  30. package/conf/distros/noble/calamares/modules/shellprocess@logs.yml +1 -1
  31. package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  32. package/conf/distros/opensuse/calamares/settings.yml +0 -0
  33. package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
  34. package/conf/distros/trixie/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  35. package/conf/distros/trixie/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  36. package/conf/distros/trixie/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  37. package/conf/distros/trixie/calamares/modules/shellprocess@boot_deploy.yml +2 -10
  38. package/conf/init/unattended.sh +0 -0
  39. package/dist/classes/bleach.d.ts +37 -0
  40. package/dist/classes/bleach.js +148 -0
  41. package/dist/classes/cli-autologin.d.ts +14 -0
  42. package/dist/classes/cli-autologin.js +227 -0
  43. package/dist/classes/compressors.d.ts +54 -0
  44. package/dist/classes/compressors.js +109 -0
  45. package/dist/classes/daddy.d.ts +44 -0
  46. package/dist/classes/daddy.js +208 -0
  47. package/dist/classes/distro-hossein.d.ts +52 -0
  48. package/dist/classes/distro-hossein.js +239 -0
  49. package/dist/classes/distro.d.ts +32 -0
  50. package/dist/classes/distro.js +363 -0
  51. package/dist/classes/diversions.d.ts +19 -0
  52. package/dist/classes/diversions.js +100 -0
  53. package/dist/classes/incubation/branding.d.ts +17 -0
  54. package/dist/classes/incubation/branding.js +85 -0
  55. package/dist/classes/incubation/customize/customize-partitions.d.ts +12 -0
  56. package/dist/classes/incubation/customize/customize-partitions.js +37 -0
  57. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
  58. package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -0
  59. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  60. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  61. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  62. package/dist/classes/incubation/fisherman-helper/settings.js +116 -0
  63. package/dist/classes/incubation/fisherman.d.ts +76 -0
  64. package/dist/classes/incubation/fisherman.js +301 -0
  65. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  66. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  67. package/dist/classes/incubation/incubator.d/archlinux.d.ts +32 -0
  68. package/dist/classes/incubation/incubator.d/archlinux.js +82 -0
  69. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  70. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  71. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  72. package/dist/classes/incubation/incubator.d/buster.js +101 -0
  73. package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
  74. package/dist/classes/incubation/incubator.d/fedora.js +81 -0
  75. package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
  76. package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
  77. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  78. package/dist/classes/incubation/incubator.d/noble.js +106 -0
  79. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  80. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  81. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  82. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  83. package/dist/classes/incubation/incubator.d/trixie.d.ts +32 -0
  84. package/dist/classes/incubation/incubator.d/trixie.js +98 -0
  85. package/dist/classes/incubation/incubator.d.ts +49 -0
  86. package/dist/classes/incubation/incubator.js +382 -0
  87. package/dist/classes/incubation/installer.d.ts +13 -0
  88. package/dist/classes/incubation/installer.js +52 -0
  89. package/dist/classes/keyboards.d.ts +31 -0
  90. package/dist/classes/keyboards.js +136 -0
  91. package/dist/classes/locales.d.ts +21 -0
  92. package/dist/classes/locales.js +77 -0
  93. package/dist/classes/network.d.ts +37 -0
  94. package/dist/classes/network.js +98 -0
  95. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  96. package/dist/classes/ovary.d/bind-live-fs.js +185 -0
  97. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  98. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  99. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  100. package/dist/classes/ovary.d/create-xdg-autostart.js +193 -0
  101. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  102. package/dist/classes/ovary.d/edit-live-fs.js +239 -0
  103. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  104. package/dist/classes/ovary.d/fertilization.js +53 -0
  105. package/dist/classes/ovary.d/finished.d.ts +13 -0
  106. package/dist/classes/ovary.d/finished.js +40 -0
  107. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  108. package/dist/classes/ovary.d/initrd.js +91 -0
  109. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  110. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  111. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  112. package/dist/classes/ovary.d/live-create-structure.js +70 -0
  113. package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
  114. package/dist/classes/ovary.d/luks-get-password.js +58 -0
  115. package/dist/classes/ovary.d/luks-helpers.d.ts +19 -0
  116. package/dist/classes/ovary.d/luks-helpers.js +73 -0
  117. package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
  118. package/dist/classes/ovary.d/luks-home-support.js +70 -0
  119. package/dist/classes/ovary.d/luks-home.d.ts +15 -0
  120. package/dist/classes/ovary.d/luks-home.js +132 -0
  121. package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
  122. package/dist/classes/ovary.d/luks-interactive-crypto-config.js +139 -0
  123. package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
  124. package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
  125. package/dist/classes/ovary.d/luks-root.d.ts +15 -0
  126. package/dist/classes/ovary.d/luks-root.js +123 -0
  127. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  128. package/dist/classes/ovary.d/make-dot-disk.js +71 -0
  129. package/dist/classes/ovary.d/make-efi.d.ts +14 -0
  130. package/dist/classes/ovary.d/make-efi.js +296 -0
  131. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  132. package/dist/classes/ovary.d/make-iso.js +45 -0
  133. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  134. package/dist/classes/ovary.d/make-squashfs.js +111 -0
  135. package/dist/classes/ovary.d/merged.d.ts +27 -0
  136. package/dist/classes/ovary.d/merged.js +78 -0
  137. package/dist/classes/ovary.d/produce.d.ts +23 -0
  138. package/dist/classes/ovary.d/produce.js +349 -0
  139. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  140. package/dist/classes/ovary.d/rexec.js +34 -0
  141. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  142. package/dist/classes/ovary.d/syslinux.js +99 -0
  143. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  144. package/dist/classes/ovary.d/user-create-live.js +97 -0
  145. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  146. package/dist/classes/ovary.d/users-remove.js +38 -0
  147. package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
  148. package/dist/classes/ovary.d/xorriso-command.js +125 -0
  149. package/dist/classes/ovary.d.ts +111 -0
  150. package/dist/classes/ovary.js +122 -0
  151. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  152. package/dist/classes/pacman.d/alpine.js +167 -0
  153. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  154. package/dist/classes/pacman.d/archlinux.js +128 -0
  155. package/dist/classes/pacman.d/debian.d.ts +65 -0
  156. package/dist/classes/pacman.d/debian.js +143 -0
  157. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  158. package/dist/classes/pacman.d/fedora.js +107 -0
  159. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  160. package/dist/classes/pacman.d/openmamba.js +106 -0
  161. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  162. package/dist/classes/pacman.d/opensuse.js +109 -0
  163. package/dist/classes/pacman.d.ts +139 -0
  164. package/dist/classes/pacman.js +681 -0
  165. package/dist/classes/pve-live.d.ts +17 -0
  166. package/dist/classes/pve-live.js +52 -0
  167. package/dist/classes/pxe.d.ts +76 -0
  168. package/dist/classes/pxe.js +353 -0
  169. package/dist/classes/settings.d.ts +52 -0
  170. package/dist/classes/settings.js +185 -0
  171. package/dist/classes/sources_list.d.ts +28 -0
  172. package/dist/classes/sources_list.js +89 -0
  173. package/dist/classes/systemctl.d.ts +47 -0
  174. package/dist/classes/systemctl.js +86 -0
  175. package/dist/classes/tailor.d.ts +50 -0
  176. package/dist/classes/tailor.js +563 -0
  177. package/dist/classes/tools.d.ts +26 -0
  178. package/dist/classes/tools.js +50 -0
  179. package/dist/classes/users.d.ts +28 -0
  180. package/dist/classes/users.js +143 -0
  181. package/dist/classes/utils.d/kernel.d.ts +39 -0
  182. package/dist/classes/utils.d/kernel.js +206 -0
  183. package/dist/classes/utils.d.ts +330 -0
  184. package/dist/classes/utils.js +968 -0
  185. package/dist/classes/xdg.d.ts +45 -0
  186. package/dist/classes/xdg.js +337 -0
  187. package/dist/classes/yolk.d.ts +33 -0
  188. package/dist/classes/yolk.js +114 -0
  189. package/dist/commands/adapt.d.ts +17 -0
  190. package/dist/commands/adapt.js +33 -0
  191. package/dist/commands/analyze.d.ts +26 -0
  192. package/dist/commands/analyze.js +95 -0
  193. package/dist/commands/calamares.d.ts +29 -0
  194. package/dist/commands/calamares.js +112 -0
  195. package/dist/commands/config.d.ts +35 -0
  196. package/dist/commands/config.js +120 -0
  197. package/dist/commands/cuckoo.d.ts +17 -0
  198. package/dist/commands/cuckoo.js +61 -0
  199. package/dist/commands/dad.d.ts +21 -0
  200. package/dist/commands/dad.js +47 -0
  201. package/dist/commands/export/iso.d.ts +19 -0
  202. package/dist/commands/export/iso.js +55 -0
  203. package/dist/commands/export/pkg.d.ts +29 -0
  204. package/dist/commands/export/pkg.js +173 -0
  205. package/dist/commands/export/tarballs.d.ts +27 -0
  206. package/dist/commands/export/tarballs.js +79 -0
  207. package/dist/commands/install.d.ts +39 -0
  208. package/dist/commands/install.js +113 -0
  209. package/dist/commands/kill.d.ts +24 -0
  210. package/dist/commands/kill.js +50 -0
  211. package/dist/commands/love.d.ts +25 -0
  212. package/dist/commands/love.js +118 -0
  213. package/dist/commands/mom.d.ts +16 -0
  214. package/dist/commands/mom.js +30 -0
  215. package/dist/commands/pods.d.ts +22 -0
  216. package/dist/commands/pods.js +92 -0
  217. package/dist/commands/produce.d.ts +37 -0
  218. package/dist/commands/produce.js +232 -0
  219. package/dist/commands/status.d.ts +23 -0
  220. package/dist/commands/status.js +31 -0
  221. package/dist/commands/tools/clean.d.ts +18 -0
  222. package/dist/commands/tools/clean.js +37 -0
  223. package/dist/commands/tools/repo.d.ts +31 -0
  224. package/dist/commands/tools/repo.js +413 -0
  225. package/dist/commands/tools/skel.d.ts +18 -0
  226. package/dist/commands/tools/skel.js +44 -0
  227. package/dist/commands/tools/stat.d.ts +31 -0
  228. package/dist/commands/tools/stat.js +70 -0
  229. package/dist/commands/tools/yolk.d.ts +24 -0
  230. package/dist/commands/tools/yolk.js +45 -0
  231. package/dist/commands/update.d.ts +46 -0
  232. package/dist/commands/update.js +238 -0
  233. package/dist/commands/wardrobe/get.d.ts +23 -0
  234. package/dist/commands/wardrobe/get.js +52 -0
  235. package/dist/commands/wardrobe/list.d.ts +24 -0
  236. package/dist/commands/wardrobe/list.js +125 -0
  237. package/dist/commands/wardrobe/show.d.ts +25 -0
  238. package/dist/commands/wardrobe/show.js +97 -0
  239. package/dist/commands/wardrobe/wear.d.ts +26 -0
  240. package/dist/commands/wardrobe/wear.js +84 -0
  241. package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
  242. package/dist/dhcpd-proxy/classes/packet.js +124 -0
  243. package/dist/dhcpd-proxy/index.d.ts +4 -0
  244. package/dist/dhcpd-proxy/index.js +4 -0
  245. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
  246. package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
  247. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
  248. package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
  249. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
  250. package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
  251. package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
  252. package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
  253. package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
  254. package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
  255. package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
  256. package/dist/dhcpd-proxy/lib/utils.js +255 -0
  257. package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
  258. package/dist/dhcpd-proxy/simple-proxy.js +118 -0
  259. package/dist/index.d.ts +8 -0
  260. package/dist/index.js +8 -0
  261. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
  262. package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
  263. package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
  264. package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
  265. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
  266. package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
  267. package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
  268. package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
  269. package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
  270. package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
  271. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
  272. package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
  273. package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
  274. package/dist/interfaces/calamares/i-calamares-settings.js +1 -0
  275. package/dist/interfaces/i-addons.d.ts +12 -0
  276. package/dist/interfaces/i-addons.js +8 -0
  277. package/dist/interfaces/i-analyze.d.ts +17 -0
  278. package/dist/interfaces/i-analyze.js +17 -0
  279. package/dist/interfaces/i-app.d.ts +14 -0
  280. package/dist/interfaces/i-app.js +8 -0
  281. package/dist/interfaces/i-config-tools.d.ts +15 -0
  282. package/dist/interfaces/i-config-tools.js +8 -0
  283. package/dist/interfaces/i-devices.d.ts +20 -0
  284. package/dist/interfaces/i-devices.js +8 -0
  285. package/dist/interfaces/i-distro.d.ts +23 -0
  286. package/dist/interfaces/i-distro.js +8 -0
  287. package/dist/interfaces/i-drive-list.d.ts +33 -0
  288. package/dist/interfaces/i-drive-list.js +8 -0
  289. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  290. package/dist/interfaces/i-eggs-config.js +8 -0
  291. package/dist/interfaces/i-excludes.d.ts +14 -0
  292. package/dist/interfaces/i-excludes.js +8 -0
  293. package/dist/interfaces/i-exec.d.ts +11 -0
  294. package/dist/interfaces/i-exec.js +8 -0
  295. package/dist/interfaces/i-initrd.d.ts +13 -0
  296. package/dist/interfaces/i-initrd.js +8 -0
  297. package/dist/interfaces/i-install.d.ts +16 -0
  298. package/dist/interfaces/i-install.js +8 -0
  299. package/dist/interfaces/i-installer.d.ts +17 -0
  300. package/dist/interfaces/i-installer.js +8 -0
  301. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  302. package/dist/interfaces/i-luks-passphrase.js +8 -0
  303. package/dist/interfaces/i-materia.d.ts +36 -0
  304. package/dist/interfaces/i-materia.js +8 -0
  305. package/dist/interfaces/i-net.d.ts +16 -0
  306. package/dist/interfaces/i-net.js +8 -0
  307. package/dist/interfaces/i-os-release.d.ts +5 -0
  308. package/dist/interfaces/i-os-release.js +1 -0
  309. package/dist/interfaces/i-packages.d.ts +16 -0
  310. package/dist/interfaces/i-packages.js +8 -0
  311. package/dist/interfaces/i-partitions.d.ts +16 -0
  312. package/dist/interfaces/i-partitions.js +8 -0
  313. package/dist/interfaces/i-pxe.d.ts +45 -0
  314. package/dist/interfaces/i-pxe.js +1 -0
  315. package/dist/interfaces/i-remix.d.ts +21 -0
  316. package/dist/interfaces/i-remix.js +8 -0
  317. package/dist/interfaces/i-settings.d.ts +33 -0
  318. package/dist/interfaces/i-settings.js +8 -0
  319. package/dist/interfaces/i-user.d.ts +14 -0
  320. package/dist/interfaces/i-user.js +8 -0
  321. package/dist/interfaces/i-workdir.d.ts +14 -0
  322. package/dist/interfaces/i-workdir.js +8 -0
  323. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  324. package/dist/interfaces/i-xkb-model.js +8 -0
  325. package/dist/interfaces/index.d.ts +26 -0
  326. package/dist/interfaces/index.js +8 -0
  327. package/dist/krill/classes/cfs.d.ts +17 -0
  328. package/dist/krill/classes/cfs.js +39 -0
  329. package/dist/krill/classes/krill_enums.d.ts +37 -0
  330. package/dist/krill/classes/krill_enums.js +41 -0
  331. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  332. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  333. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  334. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  335. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  336. package/dist/krill/classes/prepare.d/location.js +59 -0
  337. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  338. package/dist/krill/classes/prepare.d/network.js +68 -0
  339. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  340. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  341. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  342. package/dist/krill/classes/prepare.d/summary.js +72 -0
  343. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  344. package/dist/krill/classes/prepare.d/users.js +63 -0
  345. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  346. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  347. package/dist/krill/classes/prepare.d.ts +89 -0
  348. package/dist/krill/classes/prepare.js +319 -0
  349. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  350. package/dist/krill/classes/sequence.d/add_user.js +77 -0
  351. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  352. package/dist/krill/classes/sequence.d/bootloader.js +117 -0
  353. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  354. package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
  355. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  356. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  357. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  358. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  359. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  360. package/dist/krill/classes/sequence.d/fstab.js +177 -0
  361. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  362. package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
  363. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  364. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  365. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  366. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  367. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  368. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  369. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  370. package/dist/krill/classes/sequence.d/locale.js +91 -0
  371. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  372. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  373. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  374. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  375. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  376. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  377. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  378. package/dist/krill/classes/sequence.d/mkfs.js +88 -0
  379. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  380. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  381. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  382. package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
  383. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  384. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  385. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  386. package/dist/krill/classes/sequence.d/packages.js +111 -0
  387. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  388. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  389. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
  390. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
  391. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  392. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
  393. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  394. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
  395. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  396. package/dist/krill/classes/sequence.d/partition.js +84 -0
  397. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  398. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  399. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  400. package/dist/krill/classes/sequence.d/umount.js +28 -0
  401. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  402. package/dist/krill/classes/sequence.d/unpackfs.js +21 -0
  403. package/dist/krill/classes/sequence.d.ts +134 -0
  404. package/dist/krill/classes/sequence.js +400 -0
  405. package/dist/krill/components/finished.d.ts +16 -0
  406. package/dist/krill/components/finished.js +56 -0
  407. package/dist/krill/components/information.d.ts +8 -0
  408. package/dist/krill/components/information.js +162 -0
  409. package/dist/krill/components/install.d.ts +15 -0
  410. package/dist/krill/components/install.js +60 -0
  411. package/dist/krill/components/keyboard.d.ts +16 -0
  412. package/dist/krill/components/keyboard.js +54 -0
  413. package/dist/krill/components/location.d.ts +16 -0
  414. package/dist/krill/components/location.js +59 -0
  415. package/dist/krill/components/network.d.ts +19 -0
  416. package/dist/krill/components/network.js +65 -0
  417. package/dist/krill/components/partitions.d.ts +18 -0
  418. package/dist/krill/components/partitions.js +89 -0
  419. package/dist/krill/components/steps.d.ts +13 -0
  420. package/dist/krill/components/steps.js +148 -0
  421. package/dist/krill/components/summary.d.ts +25 -0
  422. package/dist/krill/components/summary.js +77 -0
  423. package/dist/krill/components/title.d.ts +11 -0
  424. package/dist/krill/components/title.js +35 -0
  425. package/dist/krill/components/users.d.ts +24 -0
  426. package/dist/krill/components/users.js +80 -0
  427. package/dist/krill/components/welcome.d.ts +13 -0
  428. package/dist/krill/components/welcome.js +63 -0
  429. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  430. package/dist/krill/interfaces/i_krill.js +8 -0
  431. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  432. package/dist/krill/interfaces/i_krill_config.js +8 -0
  433. package/dist/krill/lib/get_address.d.ts +8 -0
  434. package/dist/krill/lib/get_address.js +23 -0
  435. package/dist/krill/lib/get_dns.d.ts +8 -0
  436. package/dist/krill/lib/get_dns.js +23 -0
  437. package/dist/krill/lib/get_domain.d.ts +8 -0
  438. package/dist/krill/lib/get_domain.js +23 -0
  439. package/dist/krill/lib/get_gateway.d.ts +8 -0
  440. package/dist/krill/lib/get_gateway.js +23 -0
  441. package/dist/krill/lib/get_hostname.d.ts +8 -0
  442. package/dist/krill/lib/get_hostname.js +23 -0
  443. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  444. package/dist/krill/lib/get_luks_passphrase.js +32 -0
  445. package/dist/krill/lib/get_netmask.d.ts +8 -0
  446. package/dist/krill/lib/get_netmask.js +23 -0
  447. package/dist/krill/lib/get_password.d.ts +8 -0
  448. package/dist/krill/lib/get_password.js +36 -0
  449. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  450. package/dist/krill/lib/get_userfullname.js +23 -0
  451. package/dist/krill/lib/get_username.d.ts +8 -0
  452. package/dist/krill/lib/get_username.js +23 -0
  453. package/dist/krill/lib/select_address_type.d.ts +8 -0
  454. package/dist/krill/lib/select_address_type.js +24 -0
  455. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  456. package/dist/krill/lib/select_filesystem_type.js +40 -0
  457. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  458. package/dist/krill/lib/select_installation_device.js +40 -0
  459. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  460. package/dist/krill/lib/select_installation_mode.js +25 -0
  461. package/dist/krill/lib/select_interface.d.ts +8 -0
  462. package/dist/krill/lib/select_interface.js +24 -0
  463. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  464. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  465. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  466. package/dist/krill/lib/select_keyboard_model.js +34 -0
  467. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  468. package/dist/krill/lib/select_keyboard_option.js +34 -0
  469. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  470. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  471. package/dist/krill/lib/select_languages.d.ts +8 -0
  472. package/dist/krill/lib/select_languages.js +28 -0
  473. package/dist/krill/lib/select_regions.d.ts +8 -0
  474. package/dist/krill/lib/select_regions.js +24 -0
  475. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  476. package/dist/krill/lib/select_replaced_partition.js +31 -0
  477. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  478. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  479. package/dist/krill/lib/select_zones.d.ts +8 -0
  480. package/dist/krill/lib/select_zones.js +518 -0
  481. package/dist/lib/kill_me_softly.d.ts +11 -0
  482. package/dist/lib/kill_me_softly.js +61 -0
  483. package/dist/lib/utils.d.ts +19 -0
  484. package/dist/lib/utils.js +65 -0
  485. package/dracut/create-symlink +0 -0
  486. package/dracut/dracut.conf.d/50-live.conf +12 -13
  487. package/dracut/export +0 -0
  488. package/dracut/export-dracut-analysis +0 -0
  489. package/dracut/export-dracut-log +0 -0
  490. package/dracut/mkisofs +0 -0
  491. package/dracut/modules.d/00debug-shell/debug-hook.sh +0 -0
  492. package/dracut/modules.d/00debug-shell/module-setup.sh +0 -0
  493. package/dracut/modules.d/90block/block-cmdline.sh +0 -0
  494. package/dracut/modules.d/90block/module-setup.sh +0 -0
  495. package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +0 -0
  496. package/dracut/modules.d/95iso-scan/iso-scan.sh +0 -0
  497. package/dracut/modules.d/95iso-scan/module-setup.sh +0 -0
  498. package/dracut/modules.d/95luks-loop/luks-loop.sh +0 -0
  499. package/dracut/modules.d/95luks-loop/module-setup.sh +0 -0
  500. package/dracut/renew-initramfs +0 -0
  501. package/dracut/sbin2bin +0 -0
  502. package/dracut/update-dracut-conf-d +0 -0
  503. package/dracut/update-dracut-modules +0 -0
  504. package/eui/eui-autostart-cinnamon.desktop +0 -0
  505. package/eui/eui-autostart-xfce.desktop +0 -0
  506. package/eui/eui-create-image.sh +0 -0
  507. package/eui/eui-start.sh +0 -0
  508. package/package.json +130 -124
  509. package/perrisbrewery/scripts/postinst +0 -0
  510. package/perrisbrewery/scripts/postrm +0 -0
  511. package/perrisbrewery/scripts/preinst +0 -0
  512. package/perrisbrewery/scripts/prerm +0 -0
  513. package/perrisbrewery/template/dependencies.yaml +7 -5
  514. package/scripts/99clean +0 -0
  515. package/scripts/adapt.sh +0 -0
  516. package/scripts/boot-encrypted-root.sh +0 -0
  517. package/scripts/bros/waydroid-helper.sh +0 -0
  518. package/scripts/lsb_release +0 -0
  519. package/scripts/mom.sh +0 -0
  520. package/scripts/mount-encrypted-home.sh +0 -0
  521. package/scripts/pve-live.service +0 -0
  522. package/scripts/pve-live.sh +0 -0
  523. package/scripts/resy +0 -0
  524. package/conf/distros/focal/calamares/calamares-modules/.keepit +0 -0
  525. package/conf/distros/focal/calamares/calamares-modules/cleanup/cleanup.sh +0 -20
  526. package/conf/distros/focal/calamares/calamares-modules/cleanup/module.yml +0 -9
  527. package/conf/distros/focal/calamares/calamares-modules/sources-yolk/module.yml +0 -8
  528. package/conf/distros/focal/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -50
  529. package/conf/distros/focal/calamares/calamares-modules/sources-yolk-undo/module.yml +0 -8
  530. package/conf/distros/focal/calamares/modules/after_bootloader_context.yml +0 -19
  531. package/conf/distros/focal/calamares/modules/automirror.yml +0 -6
  532. package/conf/distros/focal/calamares/modules/before_bootloader_context.yml +0 -19
  533. package/conf/distros/focal/calamares/modules/before_bootloader_mkdirs_context.yml +0 -11
  534. package/conf/distros/focal/calamares/modules/bootloader.yml +0 -34
  535. package/conf/distros/focal/calamares/modules/displaymanager.yml +0 -12
  536. package/conf/distros/focal/calamares/modules/finished.yml +0 -4
  537. package/conf/distros/focal/calamares/modules/fstab.yml +0 -13
  538. package/conf/distros/focal/calamares/modules/grubcfg.yml +0 -5
  539. package/conf/distros/focal/calamares/modules/locale.yml +0 -9
  540. package/conf/distros/focal/calamares/modules/machineid.yml +0 -9
  541. package/conf/distros/focal/calamares/modules/mount.yml +0 -41
  542. package/conf/distros/focal/calamares/modules/packages.mustache +0 -5
  543. package/conf/distros/focal/calamares/modules/partition.yml +0 -10
  544. package/conf/distros/focal/calamares/modules/removeuser.mustache +0 -3
  545. package/conf/distros/focal/calamares/modules/shellprocess_add386arch.yml +0 -6
  546. package/conf/distros/focal/calamares/modules/shellprocess_bug-LP#1829805.yml +0 -5
  547. package/conf/distros/focal/calamares/modules/shellprocess_logs.yml +0 -6
  548. package/conf/distros/focal/calamares/modules/unpackfs.mustache +0 -6
  549. package/conf/distros/focal/calamares/modules/users.yml +0 -19
  550. package/conf/distros/focal/calamares/modules/welcome.yml +0 -26
  551. package/conf/distros/focal/calamares/settings.yml +0 -72
@@ -0,0 +1,91 @@
1
+ /**
2
+ * ./src/classes/ovary.d/initrd.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import fs from 'fs';
9
+ import path from 'node:path';
10
+ // classes
11
+ import { exec } from '../../lib/utils.js';
12
+ import Utils from '../utils.js';
13
+ import Diversions from '../diversions.js';
14
+ // _dirname
15
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
16
+ /**
17
+ * initrdAlpine
18
+ */
19
+ export async function initrdAlpine() {
20
+ Utils.warning(`creating ${path.basename(this.initrd)} Alpine on (ISO)/live`);
21
+ let initrdImg = Utils.initrdImg();
22
+ initrdImg = initrdImg.slice(Math.max(0, initrdImg.lastIndexOf('/') + 1));
23
+ const pathConf = path.resolve(__dirname, `../../../mkinitfs/live.conf`);
24
+ const prefix = this.settings.config.snapshot_prefix;
25
+ const log = `> ${this.settings.iso_work}${prefix}mkinitfs.log.txt 2>&1`;
26
+ const cmd = `mkinitfs -c ${pathConf} -o ${this.settings.iso_work}live/${initrdImg} ${this.kernel} ${log}`;
27
+ await exec(cmd, this.echo);
28
+ }
29
+ /**
30
+ * initrdArch
31
+ */
32
+ export async function initrdArch() {
33
+ Utils.warning(`creating ${path.basename(this.initrd)} using mkinitcpio on (ISO)/live`);
34
+ let dirConf = 'arch';
35
+ let tool = 'archiso';
36
+ let hookSrc = '/usr/lib/initcpio/hooks/archiso_pxe_http';
37
+ let hookDest = '/etc/initcpio/hooks/archiso_pxe_http';
38
+ let edit = `sed -i 's/export copytoram="y"/# export copytoram="y"/' ${hookDest}`;
39
+ if (Diversions.isManjaroBased(this.distroId)) {
40
+ dirConf = 'manjaro';
41
+ tool = 'miso';
42
+ hookSrc = `/etc/initcpio/hooks/miso_pxe_http`;
43
+ hookDest = hookSrc;
44
+ edit = `sed -i 's/copytoram="y"/# copytoram="y"/' ${hookDest}`;
45
+ if (this.distroId === "Biglinux" || this.distroId === "Bigcommunity") {
46
+ dirConf = 'biglinux';
47
+ }
48
+ }
49
+ const restore = fs.existsSync(hookDest);
50
+ const pathConf = path.resolve(__dirname, `../../../mkinitcpio/${dirConf}`);
51
+ const fileConf = pathConf + '/live.conf';
52
+ let hookSaved = `/tmp/${path.basename(hookSrc)}`;
53
+ if (hookSrc !== hookDest) {
54
+ await exec(`cp ${hookSrc} ${hookDest}`);
55
+ }
56
+ await exec(`cp ${hookSrc} ${hookSaved}`);
57
+ await exec(edit, this.echo);
58
+ const prefix = this.settings.config.snapshot_prefix;
59
+ const log = `> ${this.settings.iso_work}${prefix}mkinitcpio.log.txt 2>&1`;
60
+ let cmd = `mkinitcpio -c ${fileConf} -g ${this.settings.iso_work}live/${path.basename(this.initrd)} -k ${this.kernel} ${log}`;
61
+ await exec(cmd, this.echo);
62
+ await exec(`rm -f ${hookDest}`);
63
+ if (restore) {
64
+ await exec(`cp ${hookSaved} ${hookDest}`);
65
+ }
66
+ await exec(`rm -f ${hookSaved}`);
67
+ }
68
+ /**
69
+ * initrdDebian
70
+ */
71
+ export async function initrdDebian(verbose = false) {
72
+ Utils.warning(`creating ${this.initrd} using mkinitramfs on (ISO)/live`);
73
+ const prefix = this.settings.config.snapshot_prefix;
74
+ const destFinal = `${this.settings.iso_work}live/${path.basename(this.initrd)}`;
75
+ const log = `> ${this.settings.iso_work}${prefix}mkinitramfs.log.txt 2>&1`;
76
+ const cmd = `mkinitramfs -v -o ${destFinal} ${this.kernel} ${log}`;
77
+ await exec(cmd, this.echo);
78
+ }
79
+ /*
80
+ * initrdDracut) Almalinux/Fedora/Openmamba/Opensuse/Rocky/
81
+ */
82
+ export async function initrdDracut() {
83
+ Utils.warning(`creating ${path.basename(this.initrd)} using dracut on (ISO)/live`);
84
+ const prefix = this.settings.config.snapshot_prefix;
85
+ const destFinal = `${this.settings.iso_work}live/${path.basename(this.initrd)}`;
86
+ const log = `> ${this.settings.iso_work}${prefix}dracut.log.txt 2>&1`;
87
+ const confdir = '--confdir ' + path.resolve(__dirname, `../../../dracut/dracut.conf.d`);
88
+ const kmoddir = `--kmoddir /lib/modules/${this.kernel}`;
89
+ const cmd = `dracut --force -v ${confdir} ${kmoddir} ${destFinal} ${this.kernel} ${log}`;
90
+ await exec(cmd, this.echo);
91
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ./src/classes/ovary.d/produce.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from './../ovary.js';
9
+ /**
10
+ * kernelCopy
11
+ */
12
+ export declare function kernelCopy(this: Ovary): Promise<void>;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ./src/classes/ovary.d/produce.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import path from 'path';
9
+ // interfaces
10
+ // libraries
11
+ import { exec } from '../../lib/utils.js';
12
+ // classes
13
+ import Utils from './../utils.js';
14
+ // _dirname
15
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
16
+ /**
17
+ * kernelCopy
18
+ */
19
+ export async function kernelCopy() {
20
+ Utils.warning(`copying ${path.basename(this.vmlinuz)} on (ISO)/live`);
21
+ await exec(`cp ${this.vmlinuz} ${this.settings.iso_work}live/`, this.echo);
22
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ./src/classes/ovary.d/live-create-structure.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from './../ovary.js';
9
+ /**
10
+ * Crea la struttura della workdir
11
+ */
12
+ export declare function liveCreateStructure(this: Ovary): Promise<void>;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * ./src/classes/ovary.d/live-create-structure.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import path from 'path';
9
+ // interfaces
10
+ // libraries
11
+ import { exec } from '../../lib/utils.js';
12
+ // classes
13
+ import Utils from './../utils.js';
14
+ // _dirname
15
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
16
+ /**
17
+ * Crea la struttura della workdir
18
+ */
19
+ export async function liveCreateStructure() {
20
+ Utils.warning(`creating live structure on ${this.nest}`);
21
+ let cmd = '';
22
+ cmd = `# create nest\n`;
23
+ cmd += `mkdir -p ${this.nest}\n`;
24
+ cmd += `# README.md\n`;
25
+ cmd += `cp ${path.resolve(__dirname, '../../../conf/README.md')} ${this.nest}README.md\n`;
26
+ cmd += `# cleaning dotMnt\n`;
27
+ cmd += `rm -rf ${this.dotMnt}efi\n`;
28
+ cmd += `rm -rf ${this.dotMnt}filesystem.squashfs\n`;
29
+ cmd += `rm -rf ${this.dotMnt}/iso\n`;
30
+ cmd += `mkdir -p ${this.dotMnt}/iso/live\n`;
31
+ cmd += `mkdir -p ${this.dotMnt}/iso/boot/grub/${Utils.uefiFormat()}\n`;
32
+ cmd += `mkdir -p ${this.dotMnt}/iso/isolinux\n`;
33
+ cmd += `# cleaning (nest).overlay\n`;
34
+ cmd += `umount ${this.dotLivefs}/* > /dev/null 2>&1\n`;
35
+ cmd += `umount ${this.dotOverlay.lowerdir}/* > /dev/null 2>&1\n`;
36
+ cmd += `umount ${this.dotOverlay.upperdir}/* > /dev/null 2>&1\n`;
37
+ cmd += `umount ${this.dotOverlay.workdir}/* > /dev/null 2>&1\n`;
38
+ cmd += `rm -rf ${this.nest}.overlay\n`;
39
+ cmd += `mkdir -p ${this.dotOverlay.lowerdir}\n`;
40
+ cmd += `mkdir -p ${this.dotOverlay.upperdir}\n`;
41
+ cmd += `mkdir -p ${this.dotOverlay.workdir}\n`;
42
+ cmd += `sleep 1\n`;
43
+ cmd += `# cleaning dotLivefs\n`;
44
+ cmd += `rm -rf ${this.dotLivefs}\n`;
45
+ cmd += `mkdir -p ${this.dotLivefs}\n`;
46
+ cmd += `# cleaning (nest)/ovarium\n`;
47
+ cmd += `rm -rf ${this.nest}ovarium\n`;
48
+ cmd += `mkdir -p ${this.nest}ovarium\n`;
49
+ cmd += `# cleaning (nest)/links\n`;
50
+ cmd += `rm -f ${this.nest}iso\n`;
51
+ cmd += `ln -s ${this.nest}.mnt/iso ${this.nest}/iso\n`;
52
+ cmd += `rm -f ${this.nest}livefs\n`;
53
+ cmd += `ln -s ${this.dotLivefs} ${this.nest}livefs\n`;
54
+ tryCatch(cmd, this.verbose);
55
+ }
56
+ /**
57
+ *
58
+ * @param cmd
59
+ */
60
+ async function tryCatch(cmd = '', verbose = false) {
61
+ try {
62
+ let echo = Utils.setEcho(verbose);
63
+ // console.log(cmd)
64
+ await exec(cmd, echo);
65
+ }
66
+ catch (error) {
67
+ console.log(`Error: ${error}`);
68
+ await Utils.pressKeyToExit(cmd);
69
+ }
70
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-get-password.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ /**
10
+ * Ottiene la password LUKS dall'utente
11
+ */
12
+ export declare function luksGetPassword(this: Ovary): Promise<void>;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-get-password.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Utils from '../utils.js';
9
+ /**
10
+ * Ottiene la password LUKS dall'utente
11
+ */
12
+ export async function luksGetPassword() {
13
+ const inquirer = (await import('inquirer')).default;
14
+ // Chiedi se usare password di default
15
+ const useDefault = await inquirer.prompt([{
16
+ type: 'confirm',
17
+ name: 'useDefault',
18
+ message: `Use default password "${this.luksPassword}" for LUKS encryption?`,
19
+ default: false
20
+ }]);
21
+ if (useDefault.useDefault) {
22
+ Utils.warning(`Using default password: ${this.luksPassword}`);
23
+ return;
24
+ }
25
+ // Chiedi password personalizzata con conferma
26
+ let password = '';
27
+ let confirmed = false;
28
+ while (!confirmed) {
29
+ const answers = await inquirer.prompt([
30
+ {
31
+ type: 'password',
32
+ name: 'password',
33
+ message: 'Enter LUKS encryption password:',
34
+ validate: (input) => {
35
+ if (input.length < 8) {
36
+ return 'Password must be at least 8 characters';
37
+ }
38
+ return true;
39
+ }
40
+ },
41
+ {
42
+ type: 'password',
43
+ name: 'confirm',
44
+ message: 'Confirm password:'
45
+ }
46
+ ]);
47
+ if (answers.password === answers.confirm) {
48
+ password = answers.password;
49
+ confirmed = true;
50
+ this.hidden = true;
51
+ Utils.success('Password confirmed!');
52
+ }
53
+ else {
54
+ Utils.error('Passwords do not match. Please try again.');
55
+ }
56
+ }
57
+ this.luksPassword = password;
58
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-helpers.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ import { type CryptoConfig } from './luks-interactive-crypto-config.js';
10
+ /**
11
+ * Funzione helper per eseguire comandi esterni in modo asincrono,
12
+ * gestendo lo standard input per passare le password.
13
+ * Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
14
+ */
15
+ export declare function luksExecuteCommand(this: Ovary, command: string, args: string[], stdinData?: string): Promise<void>;
16
+ /**
17
+ * buildLuksFormatArgs
18
+ */
19
+ export declare function buildLuksFormatArgs(this: Ovary, config: CryptoConfig, luksFile: string): string[];
@@ -0,0 +1,73 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-helpers.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import { spawn } from 'node:child_process';
9
+ import Utils from '../utils.js';
10
+ const noop = () => { };
11
+ /**
12
+ * Funzione helper per eseguire comandi esterni in modo asincrono,
13
+ * gestendo lo standard input per passare le password.
14
+ * Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
15
+ */
16
+ export function luksExecuteCommand(command, args, stdinData) {
17
+ if (!this.hidden) {
18
+ Utils.info(`${command} ${args.join(' ')}`);
19
+ }
20
+ return new Promise((resolve, reject) => {
21
+ // Se passiamo dati a stdin, dobbiamo usare 'pipe'. Altrimenti, 'inherit'.
22
+ const stdioConfig = stdinData ? ['pipe', 'inherit', 'inherit'] : 'inherit';
23
+ const process = spawn(command, args, { stdio: stdioConfig });
24
+ // Se fornito, scriviamo i dati (es. la password) nello stdin del processo.
25
+ if (stdinData && process.stdin) {
26
+ process.stdin.write(stdinData);
27
+ process.stdin.end();
28
+ }
29
+ process.on('error', (err) => {
30
+ reject(new Error(`Error starting command "${command}": ${err.message}`));
31
+ });
32
+ process.on('close', (code) => {
33
+ if (code === 0) {
34
+ resolve(); // Success
35
+ }
36
+ else {
37
+ reject(new Error(`Command "${command} ${args.join(' ')}" ended with error code ${code}`));
38
+ }
39
+ });
40
+ });
41
+ }
42
+ /**
43
+ * buildLuksFormatArgs
44
+ */
45
+ export function buildLuksFormatArgs(config, luksFile) {
46
+ const args = [
47
+ '--batch-mode', // Per saltare la conferma "YES"
48
+ 'luksFormat',
49
+ '--type', 'luks2',
50
+ // Parametri base
51
+ '--cipher', config.cipher,
52
+ '--key-size', config['key-size'].toString(),
53
+ '--hash', config.hash,
54
+ '--sector-size', config['sector-size'].toString(),
55
+ '--pbkdf', config.pbkdf,
56
+ ];
57
+ // Aggiungi i parametri condizionali del PBKDF
58
+ switch (config.pbkdf) {
59
+ case 'argon2id':
60
+ case 'argon2i':
61
+ const argonConfig = config;
62
+ args.push('--pbkdf-memory', argonConfig['pbkdf-memory (KiB)'].toString());
63
+ args.push('--pbkdf-parallel', argonConfig['pbkdf-parallel (threads)'].toString());
64
+ break;
65
+ case 'pbkdf2':
66
+ const pbkdf2Config = config;
67
+ args.push('--iter-time', pbkdf2Config['iter-time (ms)'].toString());
68
+ break;
69
+ }
70
+ // Aggiungi il file di destinazione
71
+ args.push(luksFile);
72
+ return args;
73
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-home-support.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ /**
10
+ * Installa i file necessari per sbloccare home.img LUKS durante il boot
11
+ */
12
+ export declare function installHomecryptSupport(this: Ovary, squashfsRoot: string, homeImgPath: string): void;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-home-support.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ // packages
9
+ import fs from 'fs';
10
+ import path from 'path';
11
+ import { fileURLToPath } from 'url';
12
+ import { dirname } from 'path';
13
+ import Utils from '../utils.js';
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ /**
17
+ * Installa i file necessari per sbloccare home.img LUKS durante il boot
18
+ */
19
+ export function installHomecryptSupport(squashfsRoot, homeImgPath) {
20
+ Utils.warning('installing encrypted home support...');
21
+ // console.log("squashfsRoot:", squashfsRoot)
22
+ // console.log("homeImgPath:", homeImgPath)
23
+ // Leggi il template bash
24
+ const templatePath = path.join(__dirname, '../../../scripts/mount-encrypted-home.sh');
25
+ let bashScript = fs.readFileSync(templatePath, 'utf8');
26
+ // Sostituisci il placeholder con il path reale
27
+ bashScript = bashScript.replace('__HOME_IMG_PATH__', homeImgPath);
28
+ // Systemd service
29
+ const systemdService = `[Unit]
30
+ Description=Unlock and mount encrypted home.img
31
+ DefaultDependencies=no
32
+ After=systemd-udev-settle.service local-fs-pre.target
33
+ Before=local-fs.target display-manager.service
34
+ ConditionPathExists=${homeImgPath}
35
+
36
+ [Service]
37
+ Type=oneshot
38
+ RemainAfterExit=yes
39
+ StandardInput=tty
40
+ StandardOutput=journal+console
41
+ StandardError=journal+console
42
+ TTYPath=/dev/console
43
+ TTYReset=yes
44
+ TTYVHangup=yes
45
+ ExecStart=/usr/local/bin/mount-encrypted-home.sh
46
+ ExecStop=/bin/bash -c 'umount /home && cryptsetup close live-home'
47
+
48
+ [Install]
49
+ WantedBy=local-fs.target
50
+ `;
51
+ // Percorsi di destinazione
52
+ const scriptPath = path.join(squashfsRoot, 'usr/local/bin/mount-encrypted-home.sh');
53
+ const servicePath = path.join(squashfsRoot, 'etc/systemd/system/mount-encrypted-home.service');
54
+ const symlinkDir = path.join(squashfsRoot, 'etc/systemd/system/local-fs.target.wants');
55
+ const symlinkPath = path.join(symlinkDir, 'mount-encrypted-home.service');
56
+ // Create dirs
57
+ fs.mkdirSync(path.dirname(scriptPath), { recursive: true });
58
+ fs.mkdirSync(path.dirname(servicePath), { recursive: true });
59
+ fs.mkdirSync(symlinkDir, { recursive: true });
60
+ // Scrivi lo script
61
+ fs.writeFileSync(scriptPath, bashScript);
62
+ fs.chmodSync(scriptPath, 0o755);
63
+ // Scrivi il service
64
+ fs.writeFileSync(servicePath, systemdService);
65
+ // Crea il symlink per abilitare il service
66
+ if (fs.existsSync(symlinkPath)) {
67
+ fs.unlinkSync(symlinkPath);
68
+ }
69
+ fs.symlinkSync('../mount-encrypted-home.service', symlinkPath);
70
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-home.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ /**
10
+ * luksHome()
11
+ *
12
+ * create a container LUKS with the entire
13
+ * filesystem.squashfs
14
+ */
15
+ export declare function luksHome(this: Ovary, clone?: boolean, homecrypt?: boolean): Promise<void>;
@@ -0,0 +1,132 @@
1
+ /**
2
+ * ./src/classes/ovary.d/luks-home.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ // packages
9
+ import fs from 'fs';
10
+ import Utils from '../utils.js';
11
+ import { exec } from '../../lib/utils.js';
12
+ const noop = () => { };
13
+ /**
14
+ * luksHome()
15
+ *
16
+ * create a container LUKS with the entire
17
+ * filesystem.squashfs
18
+ */
19
+ export async function luksHome(clone = false, homecrypt = false) {
20
+ const loggers = {
21
+ log: this.hidden ? noop : console.log,
22
+ warning: this.hidden ? noop : Utils.warning,
23
+ success: this.hidden ? noop : Utils.success,
24
+ info: this.hidden ? noop : Utils.info,
25
+ };
26
+ const { log, warning, success, info } = loggers;
27
+ try {
28
+ /**
29
+ * this.luksMappedName = 'home.img';
30
+ * this.luksFile = `/tmp/${luksMappedName}`
31
+ * this.luksDevice = `/dev/mapper/${luksMappedName}`
32
+ * this.luksMountpoint = `/tmp/mnt/${luksMappedName}`
33
+ * this.luksPassword = '0'
34
+ */
35
+ if (this.hidden) {
36
+ Utils.warning("intentionally blank. System is working, please wait");
37
+ }
38
+ log();
39
+ log('====================================');
40
+ log(` Creating ${this.luksMappedName}`);
41
+ log('====================================');
42
+ // Utils.warning('1. Calculation of space requirements...')
43
+ let sizeString = (await exec('du -sb --exclude=/home/eggs /home', { capture: true })).data.trim().split(/\s+/)[0];
44
+ let size = Number.parseInt(sizeString, 10);
45
+ const luksSize = Math.ceil(size * 2);
46
+ /**
47
+ * E' più precisa ma equivalente grazie
48
+ * al truncate
49
+ */
50
+ // const fsOverhead = Math.max(size * 0.1, 100 * 1024 * 1024)
51
+ // const luksSize = size * 1.25 + fsOverhead // +25%
52
+ warning(`homes size: ${bytesToGB(size)}`);
53
+ warning(`partition LUKS ${this.luksFile} size: ${bytesToGB(luksSize)}`);
54
+ warning(`creating partition LUKS: ${this.luksFile}`);
55
+ await this.luksExecuteCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
56
+ warning(`formatting ${this.luksFile} as a LUKS volume...`);
57
+ //await this.luksExecuteCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
58
+ const luksFormatArgs = this.buildLuksFormatArgs(this.luksConfig, this.luksFile);
59
+ await this.luksExecuteCommand('cryptsetup', luksFormatArgs, `${this.luksPassword}\n`);
60
+ warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
61
+ await this.luksExecuteCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
62
+ warning(`formatting c ext4 `);
63
+ await exec(`mkfs.ext4 -L live-home ${this.luksDevice}`, this.echo);
64
+ warning(`mounting ${this.luksDevice} on ${this.luksMountpoint}`);
65
+ if (fs.existsSync(this.luksMountpoint)) {
66
+ if (!Utils.isMountpoint(this.luksMountpoint)) {
67
+ await exec(`rm -rf ${this.luksMountpoint}`, this.echo);
68
+ }
69
+ else {
70
+ throw new Error(`${this.luksMountpoint} is already mounted, process will abort!`);
71
+ }
72
+ }
73
+ await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
74
+ await exec(`mount /dev/mapper/${this.luksMappedName} ${this.luksMountpoint}`, this.echo);
75
+ warning(`copying /home on ${this.luksMountpoint}`);
76
+ await exec(`rsync -ah --exclude='eggs' /home/ ${this.luksMountpoint}`, this.echo);
77
+ warning(`saving user accounts info...`);
78
+ // Crea directory per backup system files
79
+ await exec(`mkdir -p ${this.luksMountpoint}/.system-backup`, this.echo);
80
+ // Filtra solo utenti con UID >= 1000
81
+ await exec(`awk -F: '$3 >= 1000 {print}' /etc/passwd > ${this.luksMountpoint}/.system-backup/passwd`, this.echo);
82
+ await exec(`awk -F: '$3 >= 1000 {print}' /etc/shadow > ${this.luksMountpoint}/.system-backup/shadow`, this.echo);
83
+ // Per i gruppi: salva TUTTI (non filtrare per GID)
84
+ // Gli utenti possono appartenere a gruppi di sistema (sudo, audio, video, etc.)
85
+ await exec(`cp /etc/group ${this.luksMountpoint}/.system-backup/group`, this.echo);
86
+ await exec(`cp /etc/gshadow ${this.luksMountpoint}/.system-backup/gshadow`, this.echo);
87
+ // saving display manager (autologin) configs...
88
+ warning(`saving display manager configuration...`);
89
+ // GDM (gdm3 è comune su Debian/Ubuntu)
90
+ await exec(`[ -e /etc/gdm3 ] && cp -a /etc/gdm3 ${this.luksMountpoint}/.system-backup/`, this.echo);
91
+ // GDM (altre distro)
92
+ await exec(`[ -e /etc/gdm ] && cp -a /etc/gdm ${this.luksMountpoint}/.system-backup/`, this.echo);
93
+ // LightDM
94
+ await exec(`[ -e /etc/lightdm ] && cp -a /etc/lightdm ${this.luksMountpoint}/.system-backup/`, this.echo);
95
+ // SDDM (sia file .conf che directory .conf.d)
96
+ await exec(`[ -e /etc/sddm.conf ] && cp -a /etc/sddm.conf ${this.luksMountpoint}/.system-backup/`, this.echo);
97
+ await exec(`[ -e /etc/sddm.conf.d ] && cp -a /etc/sddm.conf.d ${this.luksMountpoint}/.system-backup/`, this.echo);
98
+ warning(`unmount ${this.luksDevice}`);
99
+ await exec(`umount ${this.luksMountpoint}`, this.echo);
100
+ warning(`closing LUKS volume ${this.luksMappedName}.`);
101
+ await this.luksExecuteCommand('cryptsetup', ['close', this.luksMappedName]);
102
+ warning(`moving ${this.luksMappedName} to (ISO)/live/.`);
103
+ await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
104
+ warning('encryption process successfully completed!');
105
+ }
106
+ catch (error) {
107
+ if (error instanceof Error) {
108
+ Utils.error(`ERROR: ${error.message}`);
109
+ }
110
+ else {
111
+ Utils.error(`An unknown error has occurred.`);
112
+ }
113
+ Utils.warning('Cleaning performed following the error...');
114
+ if (fs.existsSync(this.luksMountpoint)) {
115
+ await exec(`umount -lf ${this.luksMountpoint}`).catch(() => { });
116
+ }
117
+ if (fs.existsSync(this.luksDevice)) {
118
+ await this.luksExecuteCommand('cryptsetup', ['close', this.luksMappedName]).catch(() => { });
119
+ }
120
+ await Utils.pressKeyToExit();
121
+ process.exit(1);
122
+ }
123
+ }
124
+ /**
125
+ * Converte bytes in gigabytes per la visualizzazione.
126
+ */
127
+ function bytesToGB(bytes) {
128
+ if (bytes === 0)
129
+ return '0.00 GB';
130
+ const gigabytes = bytes / (1024 * 1024 * 1024);
131
+ return gigabytes.toFixed(2) + ' GB';
132
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ./src/classe/ovary.d/luks-interactive-crypto-config.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ declare const CIPHER_OPTIONS: readonly ["aes-xts-plain64", "serpent-xts-plain64", "twofish-xts-plain64"];
10
+ declare const KEY_SIZE_OPTIONS: readonly [512, 256];
11
+ declare const HASH_OPTIONS: readonly ["sha512", "sha256"];
12
+ declare const SECTOR_SIZE_OPTIONS: readonly [4096, 512];
13
+ declare const ARGON_MEMORY_OPTIONS: readonly [524288, 1048576, 2097152];
14
+ declare const ARGON_PARALLEL_OPTIONS: readonly [1, 2, 4, 8];
15
+ declare const PBKDF2_ITER_TIME_OPTIONS: readonly [2000, 5000, 10000];
16
+ type Cipher = typeof CIPHER_OPTIONS[number];
17
+ type KeySize = typeof KEY_SIZE_OPTIONS[number];
18
+ type Hash = typeof HASH_OPTIONS[number];
19
+ type SectorSize = typeof SECTOR_SIZE_OPTIONS[number];
20
+ type ArgonPbkdf = "argon2id" | "argon2i";
21
+ type Pbkdf2Pbkdf = "pbkdf2";
22
+ type ArgonMemory = typeof ARGON_MEMORY_OPTIONS[number];
23
+ type ArgonParallel = typeof ARGON_PARALLEL_OPTIONS[number];
24
+ type Pbkdf2IterTime = typeof PBKDF2_ITER_TIME_OPTIONS[number];
25
+ export interface BaseCryptoConfig {
26
+ cipher: Cipher;
27
+ 'key-size': KeySize;
28
+ hash: Hash;
29
+ 'sector-size': SectorSize;
30
+ pbkdf: ArgonPbkdf | Pbkdf2Pbkdf;
31
+ }
32
+ export interface ArgonCryptoConfig extends BaseCryptoConfig {
33
+ pbkdf: ArgonPbkdf;
34
+ 'pbkdf-memory (KiB)': ArgonMemory;
35
+ 'pbkdf-parallel (threads)': ArgonParallel;
36
+ }
37
+ export interface Pbkdf2CryptoConfig extends BaseCryptoConfig {
38
+ pbkdf: Pbkdf2Pbkdf;
39
+ 'iter-time (ms)': Pbkdf2IterTime;
40
+ }
41
+ export type CryptoConfig = ArgonCryptoConfig | Pbkdf2CryptoConfig;
42
+ /**
43
+ * Runs the interactive prompt to configure LUKS encryption settings.
44
+ * @returns A Promise that resolves to the CryptoConfig object.
45
+ */
46
+ export declare function interactiveCryptoConfig(this: Ovary): Promise<CryptoConfig>;
47
+ export {};