penguins-eggs 25.10.26 → 25.10.28

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 (450) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/README.md +1 -768
  3. package/addons/eggs/theme/applications/install-system.desktop +1 -1
  4. package/addons/eggs/theme/livecd/generic.grub.theme.cfg +1 -3
  5. package/addons/eggs/theme/livecd/generic.isolinux.theme.cfg +1 -2
  6. package/package.json +5 -5
  7. package/dist/classes/bleach.d.ts +0 -37
  8. package/dist/classes/bleach.js +0 -148
  9. package/dist/classes/cli-autologin.d.ts +0 -52
  10. package/dist/classes/cli-autologin.js +0 -252
  11. package/dist/classes/compressors.d.ts +0 -54
  12. package/dist/classes/compressors.js +0 -109
  13. package/dist/classes/daddy.d.ts +0 -26
  14. package/dist/classes/daddy.js +0 -175
  15. package/dist/classes/distro.d.ts +0 -32
  16. package/dist/classes/distro.js +0 -363
  17. package/dist/classes/diversions.d.ts +0 -53
  18. package/dist/classes/diversions.js +0 -131
  19. package/dist/classes/incubation/branding.d.ts +0 -17
  20. package/dist/classes/incubation/branding.js +0 -85
  21. package/dist/classes/incubation/customize/customize-partitions.d.ts +0 -4
  22. package/dist/classes/incubation/customize/customize-partitions.js +0 -29
  23. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +0 -1
  24. package/dist/classes/incubation/fisherman-helper/initcpio.js +0 -69
  25. package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
  26. package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
  27. package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
  28. package/dist/classes/incubation/fisherman-helper/settings.js +0 -116
  29. package/dist/classes/incubation/fisherman.d.ts +0 -71
  30. package/dist/classes/incubation/fisherman.js +0 -281
  31. package/dist/classes/incubation/incubator.d/alpine.d.ts +0 -32
  32. package/dist/classes/incubation/incubator.d/alpine.js +0 -78
  33. package/dist/classes/incubation/incubator.d/archlinux.d.ts +0 -32
  34. package/dist/classes/incubation/incubator.d/archlinux.js +0 -82
  35. package/dist/classes/incubation/incubator.d/bionic.d.ts +0 -32
  36. package/dist/classes/incubation/incubator.d/bionic.js +0 -83
  37. package/dist/classes/incubation/incubator.d/buster.d.ts +0 -32
  38. package/dist/classes/incubation/incubator.d/buster.js +0 -101
  39. package/dist/classes/incubation/incubator.d/fedora.d.ts +0 -32
  40. package/dist/classes/incubation/incubator.d/fedora.js +0 -81
  41. package/dist/classes/incubation/incubator.d/focal.d.ts +0 -32
  42. package/dist/classes/incubation/incubator.d/focal.js +0 -85
  43. package/dist/classes/incubation/incubator.d/manjaro.d.ts +0 -32
  44. package/dist/classes/incubation/incubator.d/manjaro.js +0 -82
  45. package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
  46. package/dist/classes/incubation/incubator.d/noble.js +0 -102
  47. package/dist/classes/incubation/incubator.d/openmamba.d.ts +0 -32
  48. package/dist/classes/incubation/incubator.d/openmamba.js +0 -81
  49. package/dist/classes/incubation/incubator.d/opensuse.d.ts +0 -32
  50. package/dist/classes/incubation/incubator.d/opensuse.js +0 -81
  51. package/dist/classes/incubation/incubator.d/trixie.d.ts +0 -32
  52. package/dist/classes/incubation/incubator.d/trixie.js +0 -98
  53. package/dist/classes/incubation/incubator.d.ts +0 -48
  54. package/dist/classes/incubation/incubator.js +0 -378
  55. package/dist/classes/incubation/installer.d.ts +0 -13
  56. package/dist/classes/incubation/installer.js +0 -52
  57. package/dist/classes/keyboards.d.ts +0 -50
  58. package/dist/classes/keyboards.js +0 -287
  59. package/dist/classes/locales.d.ts +0 -21
  60. package/dist/classes/locales.js +0 -77
  61. package/dist/classes/network.d.ts +0 -37
  62. package/dist/classes/network.js +0 -98
  63. package/dist/classes/ovary.d/bind-live-fs.d.ts +0 -18
  64. package/dist/classes/ovary.d/bind-live-fs.js +0 -185
  65. package/dist/classes/ovary.d/bind-vfs.d.ts +0 -17
  66. package/dist/classes/ovary.d/bind-vfs.js +0 -37
  67. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +0 -13
  68. package/dist/classes/ovary.d/create-xdg-autostart.js +0 -194
  69. package/dist/classes/ovary.d/edit-live-fs.d.ts +0 -20
  70. package/dist/classes/ovary.d/edit-live-fs.js +0 -239
  71. package/dist/classes/ovary.d/fertilization.d.ts +0 -12
  72. package/dist/classes/ovary.d/fertilization.js +0 -53
  73. package/dist/classes/ovary.d/finished.d.ts +0 -13
  74. package/dist/classes/ovary.d/finished.js +0 -40
  75. package/dist/classes/ovary.d/initrd.d.ts +0 -21
  76. package/dist/classes/ovary.d/initrd.js +0 -96
  77. package/dist/classes/ovary.d/kernel-copy.d.ts +0 -12
  78. package/dist/classes/ovary.d/kernel-copy.js +0 -22
  79. package/dist/classes/ovary.d/live-create-structure.d.ts +0 -12
  80. package/dist/classes/ovary.d/live-create-structure.js +0 -70
  81. package/dist/classes/ovary.d/luks-get-password.d.ts +0 -12
  82. package/dist/classes/ovary.d/luks-get-password.js +0 -58
  83. package/dist/classes/ovary.d/luks-home-support.d.ts +0 -12
  84. package/dist/classes/ovary.d/luks-home-support.js +0 -75
  85. package/dist/classes/ovary.d/luks-home.d.ts +0 -15
  86. package/dist/classes/ovary.d/luks-home.js +0 -159
  87. package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +0 -47
  88. package/dist/classes/ovary.d/luks-interactive-crypto-config.js +0 -135
  89. package/dist/classes/ovary.d/luks-root-initrd.d.ts +0 -17
  90. package/dist/classes/ovary.d/luks-root-initrd.js +0 -213
  91. package/dist/classes/ovary.d/luks-root.d.ts +0 -15
  92. package/dist/classes/ovary.d/luks-root.js +0 -185
  93. package/dist/classes/ovary.d/make-dot-disk.d.ts +0 -12
  94. package/dist/classes/ovary.d/make-dot-disk.js +0 -71
  95. package/dist/classes/ovary.d/make-efi.d.ts +0 -14
  96. package/dist/classes/ovary.d/make-efi.js +0 -290
  97. package/dist/classes/ovary.d/make-iso.d.ts +0 -13
  98. package/dist/classes/ovary.d/make-iso.js +0 -45
  99. package/dist/classes/ovary.d/make-squashfs.d.ts +0 -18
  100. package/dist/classes/ovary.d/make-squashfs.js +0 -111
  101. package/dist/classes/ovary.d/merged.d.ts +0 -27
  102. package/dist/classes/ovary.d/merged.js +0 -78
  103. package/dist/classes/ovary.d/produce.d.ts +0 -23
  104. package/dist/classes/ovary.d/produce.js +0 -354
  105. package/dist/classes/ovary.d/rexec.d.ts +0 -13
  106. package/dist/classes/ovary.d/rexec.js +0 -34
  107. package/dist/classes/ovary.d/syslinux.d.ts +0 -12
  108. package/dist/classes/ovary.d/syslinux.js +0 -95
  109. package/dist/classes/ovary.d/user-create-live.d.ts +0 -14
  110. package/dist/classes/ovary.d/user-create-live.js +0 -97
  111. package/dist/classes/ovary.d/users-remove.d.ts +0 -9
  112. package/dist/classes/ovary.d/users-remove.js +0 -38
  113. package/dist/classes/ovary.d/xorriso-command.d.ts +0 -14
  114. package/dist/classes/ovary.d/xorriso-command.js +0 -120
  115. package/dist/classes/ovary.d.ts +0 -108
  116. package/dist/classes/ovary.js +0 -119
  117. package/dist/classes/pacman.d/alpine.d.ts +0 -56
  118. package/dist/classes/pacman.d/alpine.js +0 -167
  119. package/dist/classes/pacman.d/archlinux.d.ts +0 -62
  120. package/dist/classes/pacman.d/archlinux.js +0 -128
  121. package/dist/classes/pacman.d/debian.d.ts +0 -65
  122. package/dist/classes/pacman.d/debian.js +0 -143
  123. package/dist/classes/pacman.d/fedora.d.ts +0 -53
  124. package/dist/classes/pacman.d/fedora.js +0 -107
  125. package/dist/classes/pacman.d/openmamba.d.ts +0 -52
  126. package/dist/classes/pacman.d/openmamba.js +0 -106
  127. package/dist/classes/pacman.d/opensuse.d.ts +0 -53
  128. package/dist/classes/pacman.d/opensuse.js +0 -109
  129. package/dist/classes/pacman.d.ts +0 -139
  130. package/dist/classes/pacman.js +0 -683
  131. package/dist/classes/pve-live.d.ts +0 -17
  132. package/dist/classes/pve-live.js +0 -52
  133. package/dist/classes/pxe.d.ts +0 -76
  134. package/dist/classes/pxe.js +0 -353
  135. package/dist/classes/settings.d.ts +0 -52
  136. package/dist/classes/settings.js +0 -185
  137. package/dist/classes/sources_list.d.ts +0 -28
  138. package/dist/classes/sources_list.js +0 -89
  139. package/dist/classes/systemctl.d.ts +0 -47
  140. package/dist/classes/systemctl.js +0 -86
  141. package/dist/classes/tailor.d.ts +0 -50
  142. package/dist/classes/tailor.js +0 -563
  143. package/dist/classes/tools.d.ts +0 -26
  144. package/dist/classes/tools.js +0 -50
  145. package/dist/classes/users.d.ts +0 -28
  146. package/dist/classes/users.js +0 -143
  147. package/dist/classes/utils.d/kernel.d.ts +0 -39
  148. package/dist/classes/utils.d/kernel.js +0 -206
  149. package/dist/classes/utils.d.ts +0 -330
  150. package/dist/classes/utils.js +0 -968
  151. package/dist/classes/xdg.d.ts +0 -45
  152. package/dist/classes/xdg.js +0 -337
  153. package/dist/classes/yolk.d.ts +0 -33
  154. package/dist/classes/yolk.js +0 -114
  155. package/dist/commands/adapt.d.ts +0 -17
  156. package/dist/commands/adapt.js +0 -33
  157. package/dist/commands/analyze.d.ts +0 -26
  158. package/dist/commands/analyze.js +0 -95
  159. package/dist/commands/calamares.d.ts +0 -29
  160. package/dist/commands/calamares.js +0 -112
  161. package/dist/commands/config.d.ts +0 -35
  162. package/dist/commands/config.js +0 -120
  163. package/dist/commands/cuckoo.d.ts +0 -17
  164. package/dist/commands/cuckoo.js +0 -61
  165. package/dist/commands/dad.d.ts +0 -21
  166. package/dist/commands/dad.js +0 -47
  167. package/dist/commands/export/iso.d.ts +0 -19
  168. package/dist/commands/export/iso.js +0 -55
  169. package/dist/commands/export/pkg.d.ts +0 -29
  170. package/dist/commands/export/pkg.js +0 -173
  171. package/dist/commands/export/tarballs.d.ts +0 -27
  172. package/dist/commands/export/tarballs.js +0 -79
  173. package/dist/commands/install.d.ts +0 -39
  174. package/dist/commands/install.js +0 -113
  175. package/dist/commands/kill.d.ts +0 -24
  176. package/dist/commands/kill.js +0 -50
  177. package/dist/commands/love.d.ts +0 -25
  178. package/dist/commands/love.js +0 -118
  179. package/dist/commands/mom.d.ts +0 -16
  180. package/dist/commands/mom.js +0 -30
  181. package/dist/commands/pods.d.ts +0 -22
  182. package/dist/commands/pods.js +0 -92
  183. package/dist/commands/produce.d.ts +0 -37
  184. package/dist/commands/produce.js +0 -232
  185. package/dist/commands/status.d.ts +0 -23
  186. package/dist/commands/status.js +0 -31
  187. package/dist/commands/tools/clean.d.ts +0 -18
  188. package/dist/commands/tools/clean.js +0 -37
  189. package/dist/commands/tools/repo.d.ts +0 -31
  190. package/dist/commands/tools/repo.js +0 -246
  191. package/dist/commands/tools/skel.d.ts +0 -18
  192. package/dist/commands/tools/skel.js +0 -44
  193. package/dist/commands/tools/stat.d.ts +0 -31
  194. package/dist/commands/tools/stat.js +0 -70
  195. package/dist/commands/tools/yolk.d.ts +0 -24
  196. package/dist/commands/tools/yolk.js +0 -45
  197. package/dist/commands/update.d.ts +0 -46
  198. package/dist/commands/update.js +0 -238
  199. package/dist/commands/wardrobe/get.d.ts +0 -23
  200. package/dist/commands/wardrobe/get.js +0 -52
  201. package/dist/commands/wardrobe/list.d.ts +0 -24
  202. package/dist/commands/wardrobe/list.js +0 -125
  203. package/dist/commands/wardrobe/show.d.ts +0 -25
  204. package/dist/commands/wardrobe/show.js +0 -97
  205. package/dist/commands/wardrobe/wear.d.ts +0 -26
  206. package/dist/commands/wardrobe/wear.js +0 -84
  207. package/dist/dhcpd-proxy/classes/packet.d.ts +0 -36
  208. package/dist/dhcpd-proxy/classes/packet.js +0 -124
  209. package/dist/dhcpd-proxy/index.d.ts +0 -4
  210. package/dist/dhcpd-proxy/index.js +0 -4
  211. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +0 -45
  212. package/dist/dhcpd-proxy/interfaces/i-pxe.js +0 -1
  213. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +0 -11
  214. package/dist/dhcpd-proxy/lib/packet/converters.js +0 -395
  215. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +0 -10
  216. package/dist/dhcpd-proxy/lib/packet/message-types.js +0 -12
  217. package/dist/dhcpd-proxy/lib/packet/options.d.ts +0 -8
  218. package/dist/dhcpd-proxy/lib/packet/options.js +0 -264
  219. package/dist/dhcpd-proxy/lib/sprintf.d.ts +0 -6
  220. package/dist/dhcpd-proxy/lib/sprintf.js +0 -130
  221. package/dist/dhcpd-proxy/lib/utils.d.ts +0 -126
  222. package/dist/dhcpd-proxy/lib/utils.js +0 -255
  223. package/dist/dhcpd-proxy/simple-proxy.d.ts +0 -11
  224. package/dist/dhcpd-proxy/simple-proxy.js +0 -118
  225. package/dist/index.d.ts +0 -8
  226. package/dist/index.js +0 -8
  227. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +0 -23
  228. package/dist/interfaces/calamares/i-calamares-bootloader.js +0 -7
  229. package/dist/interfaces/calamares/i-calamares-branding.d.ts +0 -46
  230. package/dist/interfaces/calamares/i-calamares-branding.js +0 -1
  231. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +0 -34
  232. package/dist/interfaces/calamares/i-calamares-displaymanager.js +0 -1
  233. package/dist/interfaces/calamares/i-calamares-finished.d.ts +0 -14
  234. package/dist/interfaces/calamares/i-calamares-finished.js +0 -1
  235. package/dist/interfaces/calamares/i-calamares-packages.d.ts +0 -26
  236. package/dist/interfaces/calamares/i-calamares-packages.js +0 -1
  237. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +0 -39
  238. package/dist/interfaces/calamares/i-calamares-partitions.js +0 -1
  239. package/dist/interfaces/calamares/i-calamares-settings.d.ts +0 -36
  240. package/dist/interfaces/calamares/i-calamares-settings.js +0 -1
  241. package/dist/interfaces/i-addons.d.ts +0 -12
  242. package/dist/interfaces/i-addons.js +0 -8
  243. package/dist/interfaces/i-analyze.d.ts +0 -17
  244. package/dist/interfaces/i-analyze.js +0 -17
  245. package/dist/interfaces/i-app.d.ts +0 -14
  246. package/dist/interfaces/i-app.js +0 -8
  247. package/dist/interfaces/i-config-tools.d.ts +0 -15
  248. package/dist/interfaces/i-config-tools.js +0 -8
  249. package/dist/interfaces/i-devices.d.ts +0 -20
  250. package/dist/interfaces/i-devices.js +0 -8
  251. package/dist/interfaces/i-distro.d.ts +0 -23
  252. package/dist/interfaces/i-distro.js +0 -8
  253. package/dist/interfaces/i-drive-list.d.ts +0 -33
  254. package/dist/interfaces/i-drive-list.js +0 -8
  255. package/dist/interfaces/i-eggs-config.d.ts +0 -32
  256. package/dist/interfaces/i-eggs-config.js +0 -8
  257. package/dist/interfaces/i-excludes.d.ts +0 -14
  258. package/dist/interfaces/i-excludes.js +0 -8
  259. package/dist/interfaces/i-exec.d.ts +0 -11
  260. package/dist/interfaces/i-exec.js +0 -8
  261. package/dist/interfaces/i-initrd.d.ts +0 -13
  262. package/dist/interfaces/i-initrd.js +0 -8
  263. package/dist/interfaces/i-install.d.ts +0 -16
  264. package/dist/interfaces/i-install.js +0 -8
  265. package/dist/interfaces/i-installer.d.ts +0 -17
  266. package/dist/interfaces/i-installer.js +0 -8
  267. package/dist/interfaces/i-luks-passphrase.d.ts +0 -11
  268. package/dist/interfaces/i-luks-passphrase.js +0 -8
  269. package/dist/interfaces/i-materia.d.ts +0 -36
  270. package/dist/interfaces/i-materia.js +0 -8
  271. package/dist/interfaces/i-net.d.ts +0 -16
  272. package/dist/interfaces/i-net.js +0 -8
  273. package/dist/interfaces/i-os-release.d.ts +0 -5
  274. package/dist/interfaces/i-os-release.js +0 -1
  275. package/dist/interfaces/i-packages.d.ts +0 -16
  276. package/dist/interfaces/i-packages.js +0 -8
  277. package/dist/interfaces/i-partitions.d.ts +0 -16
  278. package/dist/interfaces/i-partitions.js +0 -8
  279. package/dist/interfaces/i-pxe.d.ts +0 -45
  280. package/dist/interfaces/i-pxe.js +0 -1
  281. package/dist/interfaces/i-remix.d.ts +0 -21
  282. package/dist/interfaces/i-remix.js +0 -8
  283. package/dist/interfaces/i-settings.d.ts +0 -33
  284. package/dist/interfaces/i-settings.js +0 -8
  285. package/dist/interfaces/i-user.d.ts +0 -14
  286. package/dist/interfaces/i-user.js +0 -8
  287. package/dist/interfaces/i-workdir.d.ts +0 -14
  288. package/dist/interfaces/i-workdir.js +0 -8
  289. package/dist/interfaces/i-xkb-model.d.ts +0 -24
  290. package/dist/interfaces/i-xkb-model.js +0 -8
  291. package/dist/interfaces/index.d.ts +0 -26
  292. package/dist/interfaces/index.js +0 -8
  293. package/dist/krill/classes/cfs.d.ts +0 -17
  294. package/dist/krill/classes/cfs.js +0 -39
  295. package/dist/krill/classes/krill_enums.d.ts +0 -37
  296. package/dist/krill/classes/krill_enums.js +0 -41
  297. package/dist/krill/classes/prepare.d/confirm.d.ts +0 -5
  298. package/dist/krill/classes/prepare.d/confirm.js +0 -30
  299. package/dist/krill/classes/prepare.d/keyboard.d.ts +0 -14
  300. package/dist/krill/classes/prepare.d/keyboard.js +0 -62
  301. package/dist/krill/classes/prepare.d/location.d.ts +0 -17
  302. package/dist/krill/classes/prepare.d/location.js +0 -59
  303. package/dist/krill/classes/prepare.d/network.d.ts +0 -14
  304. package/dist/krill/classes/prepare.d/network.js +0 -68
  305. package/dist/krill/classes/prepare.d/partitions.d.ts +0 -14
  306. package/dist/krill/classes/prepare.d/partitions.js +0 -86
  307. package/dist/krill/classes/prepare.d/summary.d.ts +0 -15
  308. package/dist/krill/classes/prepare.d/summary.js +0 -72
  309. package/dist/krill/classes/prepare.d/users.d.ts +0 -6
  310. package/dist/krill/classes/prepare.d/users.js +0 -63
  311. package/dist/krill/classes/prepare.d/welcome.d.ts +0 -6
  312. package/dist/krill/classes/prepare.d/welcome.js +0 -30
  313. package/dist/krill/classes/prepare.d.ts +0 -89
  314. package/dist/krill/classes/prepare.js +0 -319
  315. package/dist/krill/classes/sequence.d/add_user.d.ts +0 -20
  316. package/dist/krill/classes/sequence.d/add_user.js +0 -77
  317. package/dist/krill/classes/sequence.d/bootloader.d.ts +0 -14
  318. package/dist/krill/classes/sequence.d/bootloader.js +0 -117
  319. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +0 -14
  320. package/dist/krill/classes/sequence.d/bootloader_config.js +0 -192
  321. package/dist/krill/classes/sequence.d/change_password.d.ts +0 -15
  322. package/dist/krill/classes/sequence.d/change_password.js +0 -18
  323. package/dist/krill/classes/sequence.d/del_live_user.d.ts +0 -14
  324. package/dist/krill/classes/sequence.d/del_live_user.js +0 -39
  325. package/dist/krill/classes/sequence.d/fstab.d.ts +0 -14
  326. package/dist/krill/classes/sequence.d/fstab.js +0 -177
  327. package/dist/krill/classes/sequence.d/grubcfg.d.ts +0 -17
  328. package/dist/krill/classes/sequence.d/grubcfg.js +0 -35
  329. package/dist/krill/classes/sequence.d/hostname.d.ts +0 -13
  330. package/dist/krill/classes/sequence.d/hostname.js +0 -50
  331. package/dist/krill/classes/sequence.d/initramfs.d.ts +0 -13
  332. package/dist/krill/classes/sequence.d/initramfs.js +0 -54
  333. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +0 -14
  334. package/dist/krill/classes/sequence.d/initramfs_cfg.js +0 -35
  335. package/dist/krill/classes/sequence.d/locale.d.ts +0 -13
  336. package/dist/krill/classes/sequence.d/locale.js +0 -91
  337. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +0 -10
  338. package/dist/krill/classes/sequence.d/locale_cfg.js +0 -58
  339. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +0 -14
  340. package/dist/krill/classes/sequence.d/m_keyboard.js +0 -58
  341. package/dist/krill/classes/sequence.d/machine_id.d.ts +0 -15
  342. package/dist/krill/classes/sequence.d/machine_id.js +0 -33
  343. package/dist/krill/classes/sequence.d/mkfs.d.ts +0 -15
  344. package/dist/krill/classes/sequence.d/mkfs.js +0 -88
  345. package/dist/krill/classes/sequence.d/mount_fs.d.ts +0 -17
  346. package/dist/krill/classes/sequence.d/mount_fs.js +0 -68
  347. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +0 -17
  348. package/dist/krill/classes/sequence.d/mount_vfs.js +0 -59
  349. package/dist/krill/classes/sequence.d/network_cfg.d.ts +0 -19
  350. package/dist/krill/classes/sequence.d/network_cfg.js +0 -73
  351. package/dist/krill/classes/sequence.d/packages.d.ts +0 -14
  352. package/dist/krill/classes/sequence.d/packages.js +0 -111
  353. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +0 -17
  354. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +0 -73
  355. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +0 -16
  356. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +0 -51
  357. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +0 -17
  358. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +0 -77
  359. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +0 -10
  360. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -33
  361. package/dist/krill/classes/sequence.d/partition.d.ts +0 -14
  362. package/dist/krill/classes/sequence.d/partition.js +0 -84
  363. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +0 -13
  364. package/dist/krill/classes/sequence.d/remove_installer_link.js +0 -35
  365. package/dist/krill/classes/sequence.d/umount.d.ts +0 -14
  366. package/dist/krill/classes/sequence.d/umount.js +0 -28
  367. package/dist/krill/classes/sequence.d/unpackfs.d.ts +0 -13
  368. package/dist/krill/classes/sequence.d/unpackfs.js +0 -20
  369. package/dist/krill/classes/sequence.d.ts +0 -134
  370. package/dist/krill/classes/sequence.js +0 -400
  371. package/dist/krill/components/finished.d.ts +0 -16
  372. package/dist/krill/components/finished.js +0 -56
  373. package/dist/krill/components/information.d.ts +0 -8
  374. package/dist/krill/components/information.js +0 -162
  375. package/dist/krill/components/install.d.ts +0 -15
  376. package/dist/krill/components/install.js +0 -60
  377. package/dist/krill/components/keyboard.d.ts +0 -16
  378. package/dist/krill/components/keyboard.js +0 -54
  379. package/dist/krill/components/location.d.ts +0 -16
  380. package/dist/krill/components/location.js +0 -59
  381. package/dist/krill/components/network.d.ts +0 -19
  382. package/dist/krill/components/network.js +0 -65
  383. package/dist/krill/components/partitions.d.ts +0 -18
  384. package/dist/krill/components/partitions.js +0 -89
  385. package/dist/krill/components/steps.d.ts +0 -13
  386. package/dist/krill/components/steps.js +0 -148
  387. package/dist/krill/components/summary.d.ts +0 -25
  388. package/dist/krill/components/summary.js +0 -77
  389. package/dist/krill/components/title.d.ts +0 -11
  390. package/dist/krill/components/title.js +0 -35
  391. package/dist/krill/components/users.d.ts +0 -24
  392. package/dist/krill/components/users.js +0 -80
  393. package/dist/krill/components/welcome.d.ts +0 -13
  394. package/dist/krill/components/welcome.js +0 -63
  395. package/dist/krill/interfaces/i_krill.d.ts +0 -44
  396. package/dist/krill/interfaces/i_krill.js +0 -8
  397. package/dist/krill/interfaces/i_krill_config.d.ts +0 -35
  398. package/dist/krill/interfaces/i_krill_config.js +0 -8
  399. package/dist/krill/lib/get_address.d.ts +0 -8
  400. package/dist/krill/lib/get_address.js +0 -23
  401. package/dist/krill/lib/get_dns.d.ts +0 -8
  402. package/dist/krill/lib/get_dns.js +0 -23
  403. package/dist/krill/lib/get_domain.d.ts +0 -8
  404. package/dist/krill/lib/get_domain.js +0 -23
  405. package/dist/krill/lib/get_gateway.d.ts +0 -8
  406. package/dist/krill/lib/get_gateway.js +0 -23
  407. package/dist/krill/lib/get_hostname.d.ts +0 -8
  408. package/dist/krill/lib/get_hostname.js +0 -23
  409. package/dist/krill/lib/get_luks_passphrase.d.ts +0 -8
  410. package/dist/krill/lib/get_luks_passphrase.js +0 -32
  411. package/dist/krill/lib/get_netmask.d.ts +0 -8
  412. package/dist/krill/lib/get_netmask.js +0 -23
  413. package/dist/krill/lib/get_password.d.ts +0 -8
  414. package/dist/krill/lib/get_password.js +0 -36
  415. package/dist/krill/lib/get_userfullname.d.ts +0 -8
  416. package/dist/krill/lib/get_userfullname.js +0 -23
  417. package/dist/krill/lib/get_username.d.ts +0 -8
  418. package/dist/krill/lib/get_username.js +0 -23
  419. package/dist/krill/lib/select_address_type.d.ts +0 -8
  420. package/dist/krill/lib/select_address_type.js +0 -24
  421. package/dist/krill/lib/select_filesystem_type.d.ts +0 -8
  422. package/dist/krill/lib/select_filesystem_type.js +0 -40
  423. package/dist/krill/lib/select_installation_device.d.ts +0 -8
  424. package/dist/krill/lib/select_installation_device.js +0 -40
  425. package/dist/krill/lib/select_installation_mode.d.ts +0 -9
  426. package/dist/krill/lib/select_installation_mode.js +0 -25
  427. package/dist/krill/lib/select_interface.d.ts +0 -8
  428. package/dist/krill/lib/select_interface.js +0 -24
  429. package/dist/krill/lib/select_keyboard_layout.d.ts +0 -11
  430. package/dist/krill/lib/select_keyboard_layout.js +0 -36
  431. package/dist/krill/lib/select_keyboard_model.d.ts +0 -11
  432. package/dist/krill/lib/select_keyboard_model.js +0 -34
  433. package/dist/krill/lib/select_keyboard_option.d.ts +0 -11
  434. package/dist/krill/lib/select_keyboard_option.js +0 -34
  435. package/dist/krill/lib/select_keyboard_variant.d.ts +0 -11
  436. package/dist/krill/lib/select_keyboard_variant.js +0 -35
  437. package/dist/krill/lib/select_languages.d.ts +0 -8
  438. package/dist/krill/lib/select_languages.js +0 -28
  439. package/dist/krill/lib/select_regions.d.ts +0 -8
  440. package/dist/krill/lib/select_regions.js +0 -24
  441. package/dist/krill/lib/select_replaced_partition.d.ts +0 -8
  442. package/dist/krill/lib/select_replaced_partition.js +0 -31
  443. package/dist/krill/lib/select_user_swap_choice.d.ts +0 -9
  444. package/dist/krill/lib/select_user_swap_choice.js +0 -35
  445. package/dist/krill/lib/select_zones.d.ts +0 -8
  446. package/dist/krill/lib/select_zones.js +0 -518
  447. package/dist/lib/kill_me_softly.d.ts +0 -11
  448. package/dist/lib/kill_me_softly.js +0 -61
  449. package/dist/lib/utils.d.ts +0 -19
  450. package/dist/lib/utils.js +0 -65
@@ -1,12 +0,0 @@
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;
@@ -1,75 +0,0 @@
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
- // Crea le directory necessarie
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
- // console.log(`✓ Created: ${scriptPath}`)
64
- // Scrivi il service
65
- fs.writeFileSync(servicePath, systemdService);
66
- // console.log(`✓ Created: ${servicePath}`)
67
- // Crea il symlink per abilitare il service
68
- if (fs.existsSync(symlinkPath)) {
69
- fs.unlinkSync(symlinkPath);
70
- }
71
- fs.symlinkSync('../mount-encrypted-home.service', symlinkPath);
72
- // console.log(`✓ Enabled: mount-encrypted-home.service`)
73
- // console.log('Encrypted home support installed successfully')
74
- // console.log('Logs will be available at: /var/log/mount-encrypted-home.log')
75
- }
@@ -1,15 +0,0 @@
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>;
@@ -1,159 +0,0 @@
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 { spawn } from 'node:child_process';
11
- import Utils from '../utils.js';
12
- import { exec } from '../../lib/utils.js';
13
- const noop = () => { };
14
- /**
15
- * luksHome()
16
- *
17
- * create a container LUKS with the entire
18
- * filesystem.squashfs
19
- */
20
- export async function luksHome(clone = false, homecrypt = false) {
21
- const loggers = {
22
- log: this.hidden ? noop : console.log,
23
- warning: this.hidden ? noop : Utils.warning,
24
- success: this.hidden ? noop : Utils.success,
25
- info: this.hidden ? noop : Utils.info,
26
- };
27
- const { log, warning, success, info } = loggers;
28
- try {
29
- /**
30
- * this.luksMappedName = 'home.img';
31
- * this.luksFile = `/tmp/${luksMappedName}`
32
- * this.luksDevice = `/dev/mapper/${luksMappedName}`
33
- * this.luksMountpoint = `/tmp/mnt/${luksMappedName}`
34
- * this.luksPassword = '0'
35
- */
36
- if (this.hidden) {
37
- Utils.warning("intentionally blank. System is working, please wait");
38
- }
39
- log();
40
- log('====================================');
41
- log(` Creating ${this.luksMappedName}`);
42
- log('====================================');
43
- // Utils.warning('1. Calculation of space requirements...')
44
- let sizeString = (await exec('du -sb --exclude=/home/eggs /home', { capture: true })).data.trim().split(/\s+/)[0];
45
- let size = Number.parseInt(sizeString, 10);
46
- const luksSize = Math.ceil(size * 2);
47
- /**
48
- * E' più precisa ma equivalente grazie
49
- * al truncate
50
- */
51
- // const fsOverhead = Math.max(size * 0.1, 100 * 1024 * 1024)
52
- // const luksSize = size * 1.25 + fsOverhead // +25%
53
- warning(`homes size: ${bytesToGB(size)}`);
54
- warning(`partition LUKS ${this.luksFile} size: ${bytesToGB(luksSize)}`);
55
- warning(`creating partition LUKS: ${this.luksFile}`);
56
- await executeCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
57
- warning(`formatting ${this.luksFile} as a LUKS volume...`);
58
- await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
59
- warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
60
- await executeCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
61
- warning(`formatting c ext4 `);
62
- await exec(`mkfs.ext4 -L live-home ${this.luksDevice}`, this.echo);
63
- warning(`mounting ${this.luksDevice} on ${this.luksMountpoint}`);
64
- if (fs.existsSync(this.luksMountpoint)) {
65
- if (!Utils.isMountpoint(this.luksMountpoint)) {
66
- await exec(`rm -rf ${this.luksMountpoint}`, this.echo);
67
- }
68
- else {
69
- throw new Error(`${this.luksMountpoint} is already mounted, process will abort!`);
70
- }
71
- }
72
- await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
73
- await exec(`mount /dev/mapper/${this.luksMappedName} ${this.luksMountpoint}`, this.echo);
74
- warning(`copying /home on ${this.luksMountpoint}`);
75
- await exec(`rsync -ah --exclude='eggs' /home/ ${this.luksMountpoint}`, this.echo);
76
- warning(`saving user accounts info...`);
77
- // Crea directory per backup system files
78
- await exec(`mkdir -p ${this.luksMountpoint}/.system-backup`, this.echo);
79
- // Filtra solo utenti con UID >= 1000
80
- await exec(`awk -F: '$3 >= 1000 {print}' /etc/passwd > ${this.luksMountpoint}/.system-backup/passwd`, this.echo);
81
- await exec(`awk -F: '$3 >= 1000 {print}' /etc/shadow > ${this.luksMountpoint}/.system-backup/shadow`, this.echo);
82
- // Per i gruppi: salva TUTTI (non filtrare per GID)
83
- // Gli utenti possono appartenere a gruppi di sistema (sudo, audio, video, etc.)
84
- await exec(`cp /etc/group ${this.luksMountpoint}/.system-backup/group`, this.echo);
85
- await exec(`cp /etc/gshadow ${this.luksMountpoint}/.system-backup/gshadow`, this.echo);
86
- // saving display manager (autologin) configs...
87
- warning(`saving display manager configuration...`);
88
- // GDM (gdm3 è comune su Debian/Ubuntu)
89
- await exec(`[ -e /etc/gdm3 ] && cp -a /etc/gdm3 ${this.luksMountpoint}/.system-backup/`, this.echo);
90
- // GDM (altre distro)
91
- await exec(`[ -e /etc/gdm ] && cp -a /etc/gdm ${this.luksMountpoint}/.system-backup/`, this.echo);
92
- // LightDM
93
- await exec(`[ -e /etc/lightdm ] && cp -a /etc/lightdm ${this.luksMountpoint}/.system-backup/`, this.echo);
94
- // SDDM (sia file .conf che directory .conf.d)
95
- await exec(`[ -e /etc/sddm.conf ] && cp -a /etc/sddm.conf ${this.luksMountpoint}/.system-backup/`, this.echo);
96
- await exec(`[ -e /etc/sddm.conf.d ] && cp -a /etc/sddm.conf.d ${this.luksMountpoint}/.system-backup/`, this.echo);
97
- warning(`unmount ${this.luksDevice}`);
98
- await exec(`umount ${this.luksMountpoint}`, this.echo);
99
- warning(`closing LUKS volume ${this.luksMappedName}.`);
100
- await executeCommand('cryptsetup', ['close', this.luksMappedName]);
101
- warning(`moving ${this.luksMappedName} to (ISO)/live/.`);
102
- await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
103
- warning('encryption process successfully completed!');
104
- }
105
- catch (error) {
106
- if (error instanceof Error) {
107
- Utils.error(`ERROR: ${error.message}`);
108
- }
109
- else {
110
- Utils.error(`An unknown error has occurred.`);
111
- }
112
- Utils.warning('Cleaning performed following the error...');
113
- if (fs.existsSync(this.luksMountpoint)) {
114
- await exec(`umount -lf ${this.luksMountpoint}`).catch(() => { });
115
- }
116
- if (fs.existsSync(this.luksDevice)) {
117
- await executeCommand('cryptsetup', ['close', this.luksMappedName]).catch(() => { });
118
- }
119
- await Utils.pressKeyToExit();
120
- process.exit(1);
121
- }
122
- }
123
- /**
124
- * Funzione helper per eseguire comandi esterni in modo asincrono,
125
- * gestendo lo standard input per passare le password.
126
- * Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
127
- */
128
- function executeCommand(command, args, stdinData) {
129
- return new Promise((resolve, reject) => {
130
- // Se passiamo dati a stdin, dobbiamo usare 'pipe'. Altrimenti, 'inherit'.
131
- const stdioConfig = stdinData ? ['pipe', 'inherit', 'inherit'] : 'inherit';
132
- const process = spawn(command, args, { stdio: stdioConfig });
133
- // Se fornito, scriviamo i dati (es. la password) nello stdin del processo.
134
- if (stdinData && process.stdin) {
135
- process.stdin.write(stdinData);
136
- process.stdin.end();
137
- }
138
- process.on('error', (err) => {
139
- reject(new Error(`Error starting command "${command}": ${err.message}`));
140
- });
141
- process.on('close', (code) => {
142
- if (code === 0) {
143
- resolve(); // Success
144
- }
145
- else {
146
- reject(new Error(`Command "${command} ${args.join(' ')}" ended with error code ${code}`));
147
- }
148
- });
149
- });
150
- }
151
- /**
152
- * Converte bytes in gigabytes per la visualizzazione.
153
- */
154
- function bytesToGB(bytes) {
155
- if (bytes === 0)
156
- return '0.00 GB';
157
- const gigabytes = bytes / (1024 * 1024 * 1024);
158
- return gigabytes.toFixed(2) + ' GB';
159
- }
@@ -1,47 +0,0 @@
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 {};
@@ -1,135 +0,0 @@
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 Utils from '../utils.js';
9
- // --- 1. CONSTANT VALUES ---
10
- const CIPHER_OPTIONS = [
11
- "aes-xts-plain64",
12
- "serpent-xts-plain64",
13
- "twofish-xts-plain64",
14
- ];
15
- const KEY_SIZE_OPTIONS = [512, 256];
16
- const HASH_OPTIONS = ["sha512", "sha256"];
17
- const SECTOR_SIZE_OPTIONS = [4096, 512];
18
- const ARGON_MEMORY_OPTIONS = [524288, 1048576, 2097152];
19
- const ARGON_PARALLEL_OPTIONS = [1, 2, 4, 8];
20
- const PBKDF2_ITER_TIME_OPTIONS = [2000, 5000, 10000];
21
- // --- 4. INTERACTIVE QUESTIONS (Internal) ---
22
- // This array is not exported.
23
- const questions = [
24
- {
25
- type: 'list',
26
- name: 'cipher',
27
- message: 'Choose the cipher algorithm:',
28
- choices: CIPHER_OPTIONS,
29
- default: 'aes-xts-plain64',
30
- },
31
- {
32
- type: 'list',
33
- name: 'key-size',
34
- message: 'Choose the key size:',
35
- choices: KEY_SIZE_OPTIONS.map(size => ({
36
- name: `${size} bits ${size === 512 ? '(Standard for AES-256/XTS)' : '(Standard for AES-128/XTS)'}`,
37
- value: size,
38
- })),
39
- default: 512,
40
- },
41
- {
42
- type: 'list',
43
- name: 'hash',
44
- message: 'Choose the hash algorithm:',
45
- choices: HASH_OPTIONS,
46
- default: 'sha256',
47
- },
48
- {
49
- type: 'list',
50
- name: 'sector-size',
51
- message: 'Choose the sector size:',
52
- choices: SECTOR_SIZE_OPTIONS.map(size => ({
53
- name: `${size} bytes ${size === 4096 ? '(Modern SSDs/NVMe)' : '(Legacy default)'}`,
54
- value: size,
55
- })),
56
- default: 512,
57
- },
58
- {
59
- type: 'list',
60
- name: 'pbkdf',
61
- message: 'Choose the key derivation function (PBKDF):',
62
- choices: [
63
- { name: 'argon2id (Recommended, LUKS2 default)', value: 'argon2id' },
64
- { name: 'argon2i', value: 'argon2i' },
65
- { name: 'pbkdf2 (LUKS1 standard)', value: 'pbkdf2' },
66
- ],
67
- default: 'argon2id',
68
- },
69
- {
70
- type: 'list',
71
- name: 'pbkdf-memory (KiB)',
72
- message: 'Choose the memory cost for Argon2 (KiB):',
73
- choices: ARGON_MEMORY_OPTIONS.map(mem => ({
74
- name: `${mem / 1024 / 1024} GiB (${mem} KiB)`,
75
- value: mem,
76
- })),
77
- default: 524288,
78
- when: (answers) => answers.pbkdf === 'argon2id' || answers.pbkdf === 'argon2i',
79
- },
80
- {
81
- type: 'list',
82
- name: 'pbkdf-parallel (threads)',
83
- message: 'Choose parallel threads for Argon2:',
84
- choices: ARGON_PARALLEL_OPTIONS.map(threads => ({
85
- name: `${threads} threads`,
86
- value: threads,
87
- })),
88
- default: 4,
89
- when: (answers) => answers.pbkdf === 'argon2id' || answers.pbkdf === 'argon2i',
90
- },
91
- {
92
- type: 'list',
93
- name: 'iter-time (ms)',
94
- message: 'Choose the iteration time for PBKDF2 (ms):',
95
- choices: PBKDF2_ITER_TIME_OPTIONS.map(time => ({
96
- name: `${time / 1000} seconds (${time} ms)`,
97
- value: time,
98
- })),
99
- default: 2000,
100
- when: (answers) => answers.pbkdf === 'pbkdf2',
101
- },
102
- ];
103
- // --- 5. EXPORTED MAIN FUNCTION ---
104
- /**
105
- * Runs the interactive prompt to configure LUKS encryption settings.
106
- * @returns A Promise that resolves to the CryptoConfig object.
107
- */
108
- export async function interactiveCryptoConfig() {
109
- // Default luksConfig
110
- const defaultLuksConfig = {
111
- 'cipher': 'aes-xts-plain64',
112
- 'key-size': 512,
113
- 'hash': 'sha256',
114
- 'sector-size': 512,
115
- 'pbkdf': 'argon2id',
116
- 'pbkdf-memory (KiB)': 524288,
117
- 'pbkdf-parallel (threads)': 4
118
- };
119
- const inquirer = (await import('inquirer')).default;
120
- // Chiedi se usare la configurazione LUKS di default
121
- const useDefault = await inquirer.prompt([{
122
- type: 'confirm',
123
- name: 'useDefault',
124
- message: `Use default LUKS configuration`,
125
- default: true
126
- }]);
127
- if (useDefault.useDefault) {
128
- Utils.warning(`Using default LUKS configuration`);
129
- return defaultLuksConfig;
130
- }
131
- const answers = await inquirer.prompt(questions);
132
- // Use the double-cast fix to satisfy TypeScript
133
- const finalConfig = answers;
134
- return finalConfig;
135
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * ./src/classes/ovary.d/initrd-luks.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
- * Creates a streamlined initrd image for Debian/Ubuntu with LUKS support using mkinitramfs within a temporary chroot.
11
- * Copies the necessary unlock script, ensures losetup is included via a hook, and wraps /scripts/live for debugging.
12
- * Assumes live-boot and cryptsetup packages are installed in the chroot.
13
- * No cleanup of /etc modifications is performed as the chroot is temporary.
14
- * @param this - Ovary instance context
15
- * @param verbose - Whether to show verbose output
16
- */
17
- export declare function luksRootInitrd(this: Ovary, verbose?: boolean): Promise<void>;
@@ -1,213 +0,0 @@
1
- /**
2
- * ./src/classes/ovary.d/initrd-luks.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 'node:path';
11
- // classes
12
- import { exec } from '../../lib/utils.js';
13
- import Utils from '../utils.js';
14
- // _dirname
15
- const __dirname = path.dirname(new URL(import.meta.url).pathname);
16
- const noop = () => { };
17
- /**
18
- * Creates a streamlined initrd image for Debian/Ubuntu with LUKS support using mkinitramfs within a temporary chroot.
19
- * Copies the necessary unlock script, ensures losetup is included via a hook, and wraps /scripts/live for debugging.
20
- * Assumes live-boot and cryptsetup packages are installed in the chroot.
21
- * No cleanup of /etc modifications is performed as the chroot is temporary.
22
- * @param this - Ovary instance context
23
- * @param verbose - Whether to show verbose output
24
- */
25
- export async function luksRootInitrd(verbose = false) {
26
- const loggers = {
27
- log: this.hidden ? noop : console.log,
28
- warning: this.hidden ? noop : Utils.warning,
29
- success: this.hidden ? noop : Utils.success,
30
- info: this.hidden ? noop : Utils.info,
31
- };
32
- const { log, warning, success, info } = loggers;
33
- if (this.hidden) {
34
- Utils.warning("intentionally blank. System is working, please wait");
35
- }
36
- log();
37
- log('===========================================================================');
38
- log(`Creating ${this.initrd} for LUKS using mkinitramfs`);
39
- log('===========================================================================');
40
- // --- Core Paths & Config ---
41
- const chrootPath = path.join(this.dotMnt, 'filesystem.squashfs');
42
- const kernelVersion = this.kernel;
43
- const initrdBaseName = path.basename(this.initrd);
44
- const logBaseName = `${this.settings.config.snapshot_prefix}mkinitramfs.log.txt`;
45
- const finalInitrdDestPath = path.join(this.settings.iso_work, 'live', initrdBaseName); // Define final destination early for logging
46
- try {
47
- // --- 2. Prepare Chroot Environment ---
48
- warning("Preparing chroot environment...");
49
- // --- 2.1 Copy boot-encrypted-root.sh
50
- {
51
- const bootEncryptedRootName = 'boot-encrypted-root.sh'; // Corrected to lowercase zz-
52
- const srcbootEncryptedRootPath = path.join(__dirname, '../../../scripts', bootEncryptedRootName);
53
- const chrootbootEncryptedRootDir = '/etc/initramfs-tools/scripts/live-premount';
54
- const chrootbootEncryptedRootPath = path.join(chrootbootEncryptedRootDir, bootEncryptedRootName);
55
- const hostDestbootEncryptedRootDir = path.join(chrootPath, chrootbootEncryptedRootDir);
56
- const hostDestbootEncryptedRootPath = path.join(chrootPath, chrootbootEncryptedRootPath);
57
- if (!fs.existsSync(srcbootEncryptedRootPath)) {
58
- throw new Error(`Unlock script source not found: ${srcbootEncryptedRootPath}`);
59
- }
60
- await exec(`mkdir -p "${hostDestbootEncryptedRootDir}"`);
61
- await exec(`cp "${srcbootEncryptedRootPath}" "${hostDestbootEncryptedRootPath}"`);
62
- await exec(`chmod +x "${hostDestbootEncryptedRootPath}"`);
63
- success(`Copied ${bootEncryptedRootName} script to ${hostDestbootEncryptedRootDir}`);
64
- }
65
- // --- 2.2 Create dummy /etc/crypttab if needed ---
66
- {
67
- const chrootCrypttabPath = '/etc/crypttab';
68
- const hostCrypttabPath = path.join(chrootPath, chrootCrypttabPath);
69
- if (!fs.existsSync(hostCrypttabPath)) {
70
- const crypttabContent = "# Dummy entry to ensure cryptsetup is included\ncryptroot UUID=none none luks\n";
71
- fs.writeFileSync(hostCrypttabPath, crypttabContent, 'utf-8');
72
- success(`Created crypttab on ${path.dirname(hostCrypttabPath)}`);
73
- }
74
- else {
75
- info(`${hostCrypttabPath} already exists.`);
76
- }
77
- }
78
- // --- 2.3 Add hook ---
79
- // Utils.warning(`Generating required hook scripts`)
80
- await addHook('/usr/sbin/losetup', chrootPath, loggers);
81
- await addHook('/usr/bin/rsync', chrootPath, loggers);
82
- // --- 2.4 Add modules ---
83
- // addModules('overlay', chrootPath)
84
- // --- 3. Execute mkinitramfs INSIDE Chroot ---
85
- {
86
- warning(`Running mkinitramfs for kernel ${kernelVersion} inside chroot...`);
87
- const chrootTmpInitrdPath = `/tmp/${initrdBaseName}`;
88
- let logFilePath = path.join(this.settings.iso_work, logBaseName);
89
- if (this.hidden) {
90
- logFilePath = '/dev/null';
91
- }
92
- const mkinitramfsCmd = `mkinitramfs -v -o "${chrootTmpInitrdPath}" ${kernelVersion}`;
93
- const chrootCmd = `chroot "${chrootPath}" /bin/bash -c "${mkinitramfsCmd}" > "${logFilePath}" 2>&1`;
94
- await exec(chrootCmd, this.echo);
95
- success(`mkinitramfs completed. Log: ${logFilePath}`);
96
- }
97
- // --- 4. Move Result ---
98
- {
99
- const chrootTmpInitrdPath = `/tmp/${initrdBaseName}`; // Re-declare for scope
100
- const hostTmpInitrdPath = path.join(chrootPath, chrootTmpInitrdPath);
101
- if (fs.existsSync(hostTmpInitrdPath)) {
102
- info(`Moving generated initrd to ${finalInitrdDestPath}`);
103
- await exec(`mv "${hostTmpInitrdPath}" "${finalInitrdDestPath}"`);
104
- success(`Initrd moved successfully.`);
105
- }
106
- else {
107
- Utils.error(`Generated initrd not found at ${hostTmpInitrdPath}. Build failed!`);
108
- throw new Error("mkinitramfs did not produce the expected output file.");
109
- }
110
- // process.exit()
111
- }
112
- }
113
- catch (error) {
114
- Utils.error(`Error during LUKS initrd generation: ${error}`);
115
- const logFilePath = path.join(this.settings.iso_work, logBaseName); // Re-declare for scope
116
- if (error instanceof Error && error.message.includes('mkinitramfs inside chroot failed')) {
117
- Utils.warning(`Check mkinitramfs log: ${logFilePath}`);
118
- }
119
- throw error; // Re-throw error
120
- }
121
- success(`Finished creating LUKS initrd: ${finalInitrdDestPath}`);
122
- }
123
- /**
124
- * Genera e installa uno script hook di initramfs-tools nel chroot.
125
- * Copia il comando specificato nella sua directory di destinazione
126
- * standard (/bin o /sbin) all'interno dell'initramfs.
127
- * @param cmdPath Path assoluto del comando da copiare *nel chroot* (es. '/usr/sbin/losetup')
128
- * @param chrootPath Path assoluto alla radice del chroot
129
- */
130
- async function addHook(cmdPath, chrootPath, loggers) {
131
- const { log, warning, success, info } = loggers;
132
- const chrootHooksDirPath = '/etc/initramfs-tools/hooks';
133
- const hostHooksDirPath = path.join(chrootPath, chrootHooksDirPath);
134
- const cmd = path.basename(cmdPath); // es. 'losetup'
135
- const hookScriptName = `add-${cmd}-hook.sh`; // es. 'add-losetup-hook.sh'
136
- const hostHookPath = path.join(hostHooksDirPath, hookScriptName);
137
- if (!fs.existsSync(cmdPath)) {
138
- Utils.error(`Dont' exists ${cmdPath}`);
139
- process.exit();
140
- }
141
- let destDir = "/sbin"; // Default a /sbin per i comandi di amministrazione
142
- // Determina la destinazione corretta
143
- if (cmdPath.includes('/usr/bin') || cmdPath.includes('/bin')) {
144
- destDir = "/bin"; // Comandi utente
145
- }
146
- else if (cmdPath.includes('/usr/sbin') || cmdPath.includes('/sbin')) {
147
- destDir = "/sbin"; // Comandi amministrativi
148
- }
149
- // Crea la riga di comando per l'hook
150
- const copyLine = `copy_exec ${cmdPath} ${destDir} || echo "WARNING: Failed to copy ${cmdPath} to ${destDir}" >&2`;
151
- // Crea il contenuto boilerplate dello script hook
152
- const hookContent = `#!/bin/sh
153
- # Hook: ${hookScriptName}
154
- # Generato automaticamente da penguins-eggs
155
- # Copia ${cmdPath} in ${destDir}
156
-
157
- PREREQ=""
158
- case $1 in prereqs) echo "\${PREREQ}"; exit 0;; esac
159
-
160
- . /usr/share/initramfs-tools/hook-functions
161
-
162
- echo "EGGS-HOOK: Esecuzione hook ${hookScriptName}..."
163
- ${copyLine}
164
-
165
- exit 0
166
- `;
167
- try {
168
- await exec(`mkdir -p "${hostHooksDirPath}"`);
169
- // Scrive il file e lo rende eseguibile (mode 0o755)
170
- fs.writeFileSync(hostHookPath, hookContent, { mode: 0o755, encoding: 'utf-8' });
171
- // console.log(hookContent)
172
- success(`Generated and set executable hook: ${hookScriptName}`);
173
- }
174
- catch (err) {
175
- Utils.error(`Failed to write hook script ${hostHookPath}: ${err.message}`);
176
- process.exit(1);
177
- throw err; // Lancia l'errore per fermare il processo
178
- }
179
- }
180
- /**
181
- *
182
- * @param module
183
- * @param chrootPath
184
- */
185
- function addModules(module, chrootPath, loggers) {
186
- const { log, warning, success, info } = loggers;
187
- const chrootModulesFilePath = '/etc/initramfs-tools/modules'; // Relative inside chroot
188
- const hostModulesFilePath = path.join(chrootPath, chrootModulesFilePath); // Absolute on host fs
189
- let modulesContent = '';
190
- let needsUpdate = false;
191
- if (fs.existsSync(hostModulesFilePath)) {
192
- modulesContent = fs.readFileSync(hostModulesFilePath, 'utf-8');
193
- }
194
- else {
195
- // inizializzazione modules
196
- modulesContent = '\n';
197
- }
198
- if (modulesContent.includes(`\n${module}\n`)) {
199
- info(`'${module}' module already present.`);
200
- }
201
- else {
202
- info(`Added '${module}' module on ${hostModulesFilePath}`);
203
- if (!modulesContent.endsWith('\n')) {
204
- modulesContent += '\n';
205
- }
206
- modulesContent += `${module}\n`;
207
- needsUpdate = true;
208
- }
209
- if (needsUpdate) {
210
- fs.writeFileSync(hostModulesFilePath, modulesContent, 'utf-8');
211
- success(`Updated ${hostModulesFilePath} with 'overlay'.`);
212
- }
213
- }