penguins-eggs 25.10.28 → 25.10.30

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 (452) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/addons/eggs/theme/applications/install-system.desktop +8 -6
  3. package/assets/calamares/io.calamares.calamares.policy +25 -0
  4. package/dist/classes/bleach.d.ts +37 -0
  5. package/dist/classes/bleach.js +148 -0
  6. package/dist/classes/cli-autologin.d.ts +52 -0
  7. package/dist/classes/cli-autologin.js +252 -0
  8. package/dist/classes/compressors.d.ts +54 -0
  9. package/dist/classes/compressors.js +109 -0
  10. package/dist/classes/daddy.d.ts +26 -0
  11. package/dist/classes/daddy.js +179 -0
  12. package/dist/classes/distro.d.ts +32 -0
  13. package/dist/classes/distro.js +363 -0
  14. package/dist/classes/diversions.d.ts +53 -0
  15. package/dist/classes/diversions.js +131 -0
  16. package/dist/classes/incubation/branding.d.ts +17 -0
  17. package/dist/classes/incubation/branding.js +85 -0
  18. package/dist/classes/incubation/customize/customize-partitions.d.ts +12 -0
  19. package/dist/classes/incubation/customize/customize-partitions.js +37 -0
  20. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
  21. package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -0
  22. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  23. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  24. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  25. package/dist/classes/incubation/fisherman-helper/settings.js +116 -0
  26. package/dist/classes/incubation/fisherman.d.ts +71 -0
  27. package/dist/classes/incubation/fisherman.js +281 -0
  28. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  29. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  30. package/dist/classes/incubation/incubator.d/archlinux.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/archlinux.js +82 -0
  32. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  33. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  34. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  35. package/dist/classes/incubation/incubator.d/buster.js +101 -0
  36. package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
  37. package/dist/classes/incubation/incubator.d/fedora.js +81 -0
  38. package/dist/classes/incubation/incubator.d/focal.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/focal.js +85 -0
  40. package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
  42. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/noble.js +102 -0
  44. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  45. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  46. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  47. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  48. package/dist/classes/incubation/incubator.d/trixie.d.ts +32 -0
  49. package/dist/classes/incubation/incubator.d/trixie.js +98 -0
  50. package/dist/classes/incubation/incubator.d.ts +49 -0
  51. package/dist/classes/incubation/incubator.js +383 -0
  52. package/dist/classes/incubation/installer.d.ts +13 -0
  53. package/dist/classes/incubation/installer.js +52 -0
  54. package/dist/classes/keyboards.d.ts +50 -0
  55. package/dist/classes/keyboards.js +287 -0
  56. package/dist/classes/locales.d.ts +21 -0
  57. package/dist/classes/locales.js +77 -0
  58. package/dist/classes/network.d.ts +37 -0
  59. package/dist/classes/network.js +98 -0
  60. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  61. package/dist/classes/ovary.d/bind-live-fs.js +185 -0
  62. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  63. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  64. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  65. package/dist/classes/ovary.d/create-xdg-autostart.js +193 -0
  66. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  67. package/dist/classes/ovary.d/edit-live-fs.js +239 -0
  68. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  69. package/dist/classes/ovary.d/fertilization.js +53 -0
  70. package/dist/classes/ovary.d/finished.d.ts +13 -0
  71. package/dist/classes/ovary.d/finished.js +40 -0
  72. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  73. package/dist/classes/ovary.d/initrd.js +96 -0
  74. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  75. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  76. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  77. package/dist/classes/ovary.d/live-create-structure.js +70 -0
  78. package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
  79. package/dist/classes/ovary.d/luks-get-password.js +58 -0
  80. package/dist/classes/ovary.d/luks-helpers.d.ts +19 -0
  81. package/dist/classes/ovary.d/luks-helpers.js +73 -0
  82. package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
  83. package/dist/classes/ovary.d/luks-home-support.js +70 -0
  84. package/dist/classes/ovary.d/luks-home.d.ts +15 -0
  85. package/dist/classes/ovary.d/luks-home.js +132 -0
  86. package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
  87. package/dist/classes/ovary.d/luks-interactive-crypto-config.js +139 -0
  88. package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
  89. package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
  90. package/dist/classes/ovary.d/luks-root.d.ts +15 -0
  91. package/dist/classes/ovary.d/luks-root.js +123 -0
  92. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  93. package/dist/classes/ovary.d/make-dot-disk.js +71 -0
  94. package/dist/classes/ovary.d/make-efi.d.ts +14 -0
  95. package/dist/classes/ovary.d/make-efi.js +296 -0
  96. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  97. package/dist/classes/ovary.d/make-iso.js +45 -0
  98. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  99. package/dist/classes/ovary.d/make-squashfs.js +111 -0
  100. package/dist/classes/ovary.d/merged.d.ts +27 -0
  101. package/dist/classes/ovary.d/merged.js +78 -0
  102. package/dist/classes/ovary.d/produce.d.ts +23 -0
  103. package/dist/classes/ovary.d/produce.js +349 -0
  104. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  105. package/dist/classes/ovary.d/rexec.js +34 -0
  106. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  107. package/dist/classes/ovary.d/syslinux.js +99 -0
  108. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  109. package/dist/classes/ovary.d/user-create-live.js +97 -0
  110. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  111. package/dist/classes/ovary.d/users-remove.js +38 -0
  112. package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
  113. package/dist/classes/ovary.d/xorriso-command.js +125 -0
  114. package/dist/classes/ovary.d.ts +111 -0
  115. package/dist/classes/ovary.js +122 -0
  116. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  117. package/dist/classes/pacman.d/alpine.js +167 -0
  118. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  119. package/dist/classes/pacman.d/archlinux.js +128 -0
  120. package/dist/classes/pacman.d/debian.d.ts +65 -0
  121. package/dist/classes/pacman.d/debian.js +143 -0
  122. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  123. package/dist/classes/pacman.d/fedora.js +107 -0
  124. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  125. package/dist/classes/pacman.d/openmamba.js +106 -0
  126. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  127. package/dist/classes/pacman.d/opensuse.js +109 -0
  128. package/dist/classes/pacman.d.ts +139 -0
  129. package/dist/classes/pacman.js +683 -0
  130. package/dist/classes/pve-live.d.ts +17 -0
  131. package/dist/classes/pve-live.js +52 -0
  132. package/dist/classes/pxe.d.ts +76 -0
  133. package/dist/classes/pxe.js +353 -0
  134. package/dist/classes/settings.d.ts +52 -0
  135. package/dist/classes/settings.js +185 -0
  136. package/dist/classes/sources_list.d.ts +28 -0
  137. package/dist/classes/sources_list.js +89 -0
  138. package/dist/classes/systemctl.d.ts +47 -0
  139. package/dist/classes/systemctl.js +86 -0
  140. package/dist/classes/tailor.d.ts +50 -0
  141. package/dist/classes/tailor.js +563 -0
  142. package/dist/classes/tools.d.ts +26 -0
  143. package/dist/classes/tools.js +50 -0
  144. package/dist/classes/users.d.ts +28 -0
  145. package/dist/classes/users.js +143 -0
  146. package/dist/classes/utils.d/kernel.d.ts +39 -0
  147. package/dist/classes/utils.d/kernel.js +206 -0
  148. package/dist/classes/utils.d.ts +330 -0
  149. package/dist/classes/utils.js +968 -0
  150. package/dist/classes/xdg.d.ts +45 -0
  151. package/dist/classes/xdg.js +337 -0
  152. package/dist/classes/yolk.d.ts +33 -0
  153. package/dist/classes/yolk.js +114 -0
  154. package/dist/commands/adapt.d.ts +17 -0
  155. package/dist/commands/adapt.js +33 -0
  156. package/dist/commands/analyze.d.ts +26 -0
  157. package/dist/commands/analyze.js +95 -0
  158. package/dist/commands/calamares.d.ts +29 -0
  159. package/dist/commands/calamares.js +112 -0
  160. package/dist/commands/config.d.ts +35 -0
  161. package/dist/commands/config.js +120 -0
  162. package/dist/commands/cuckoo.d.ts +17 -0
  163. package/dist/commands/cuckoo.js +61 -0
  164. package/dist/commands/dad.d.ts +21 -0
  165. package/dist/commands/dad.js +47 -0
  166. package/dist/commands/export/iso.d.ts +19 -0
  167. package/dist/commands/export/iso.js +55 -0
  168. package/dist/commands/export/pkg.d.ts +29 -0
  169. package/dist/commands/export/pkg.js +173 -0
  170. package/dist/commands/export/tarballs.d.ts +27 -0
  171. package/dist/commands/export/tarballs.js +79 -0
  172. package/dist/commands/install.d.ts +39 -0
  173. package/dist/commands/install.js +113 -0
  174. package/dist/commands/kill.d.ts +24 -0
  175. package/dist/commands/kill.js +50 -0
  176. package/dist/commands/love.d.ts +25 -0
  177. package/dist/commands/love.js +118 -0
  178. package/dist/commands/mom.d.ts +16 -0
  179. package/dist/commands/mom.js +30 -0
  180. package/dist/commands/pods.d.ts +22 -0
  181. package/dist/commands/pods.js +92 -0
  182. package/dist/commands/produce.d.ts +37 -0
  183. package/dist/commands/produce.js +232 -0
  184. package/dist/commands/status.d.ts +23 -0
  185. package/dist/commands/status.js +31 -0
  186. package/dist/commands/tools/clean.d.ts +18 -0
  187. package/dist/commands/tools/clean.js +37 -0
  188. package/dist/commands/tools/repo.d.ts +31 -0
  189. package/dist/commands/tools/repo.js +246 -0
  190. package/dist/commands/tools/skel.d.ts +18 -0
  191. package/dist/commands/tools/skel.js +44 -0
  192. package/dist/commands/tools/stat.d.ts +31 -0
  193. package/dist/commands/tools/stat.js +70 -0
  194. package/dist/commands/tools/yolk.d.ts +24 -0
  195. package/dist/commands/tools/yolk.js +45 -0
  196. package/dist/commands/update.d.ts +46 -0
  197. package/dist/commands/update.js +238 -0
  198. package/dist/commands/wardrobe/get.d.ts +23 -0
  199. package/dist/commands/wardrobe/get.js +52 -0
  200. package/dist/commands/wardrobe/list.d.ts +24 -0
  201. package/dist/commands/wardrobe/list.js +125 -0
  202. package/dist/commands/wardrobe/show.d.ts +25 -0
  203. package/dist/commands/wardrobe/show.js +97 -0
  204. package/dist/commands/wardrobe/wear.d.ts +26 -0
  205. package/dist/commands/wardrobe/wear.js +84 -0
  206. package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
  207. package/dist/dhcpd-proxy/classes/packet.js +124 -0
  208. package/dist/dhcpd-proxy/index.d.ts +4 -0
  209. package/dist/dhcpd-proxy/index.js +4 -0
  210. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
  211. package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
  212. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
  213. package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
  214. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
  215. package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
  216. package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
  217. package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
  218. package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
  219. package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
  220. package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
  221. package/dist/dhcpd-proxy/lib/utils.js +255 -0
  222. package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
  223. package/dist/dhcpd-proxy/simple-proxy.js +118 -0
  224. package/dist/index.d.ts +8 -0
  225. package/dist/index.js +8 -0
  226. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
  227. package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
  228. package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
  229. package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
  230. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
  231. package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
  232. package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
  233. package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
  234. package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
  235. package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
  236. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
  237. package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
  238. package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
  239. package/dist/interfaces/calamares/i-calamares-settings.js +1 -0
  240. package/dist/interfaces/i-addons.d.ts +12 -0
  241. package/dist/interfaces/i-addons.js +8 -0
  242. package/dist/interfaces/i-analyze.d.ts +17 -0
  243. package/dist/interfaces/i-analyze.js +17 -0
  244. package/dist/interfaces/i-app.d.ts +14 -0
  245. package/dist/interfaces/i-app.js +8 -0
  246. package/dist/interfaces/i-config-tools.d.ts +15 -0
  247. package/dist/interfaces/i-config-tools.js +8 -0
  248. package/dist/interfaces/i-devices.d.ts +20 -0
  249. package/dist/interfaces/i-devices.js +8 -0
  250. package/dist/interfaces/i-distro.d.ts +23 -0
  251. package/dist/interfaces/i-distro.js +8 -0
  252. package/dist/interfaces/i-drive-list.d.ts +33 -0
  253. package/dist/interfaces/i-drive-list.js +8 -0
  254. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  255. package/dist/interfaces/i-eggs-config.js +8 -0
  256. package/dist/interfaces/i-excludes.d.ts +14 -0
  257. package/dist/interfaces/i-excludes.js +8 -0
  258. package/dist/interfaces/i-exec.d.ts +11 -0
  259. package/dist/interfaces/i-exec.js +8 -0
  260. package/dist/interfaces/i-initrd.d.ts +13 -0
  261. package/dist/interfaces/i-initrd.js +8 -0
  262. package/dist/interfaces/i-install.d.ts +16 -0
  263. package/dist/interfaces/i-install.js +8 -0
  264. package/dist/interfaces/i-installer.d.ts +17 -0
  265. package/dist/interfaces/i-installer.js +8 -0
  266. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  267. package/dist/interfaces/i-luks-passphrase.js +8 -0
  268. package/dist/interfaces/i-materia.d.ts +36 -0
  269. package/dist/interfaces/i-materia.js +8 -0
  270. package/dist/interfaces/i-net.d.ts +16 -0
  271. package/dist/interfaces/i-net.js +8 -0
  272. package/dist/interfaces/i-os-release.d.ts +5 -0
  273. package/dist/interfaces/i-os-release.js +1 -0
  274. package/dist/interfaces/i-packages.d.ts +16 -0
  275. package/dist/interfaces/i-packages.js +8 -0
  276. package/dist/interfaces/i-partitions.d.ts +16 -0
  277. package/dist/interfaces/i-partitions.js +8 -0
  278. package/dist/interfaces/i-pxe.d.ts +45 -0
  279. package/dist/interfaces/i-pxe.js +1 -0
  280. package/dist/interfaces/i-remix.d.ts +21 -0
  281. package/dist/interfaces/i-remix.js +8 -0
  282. package/dist/interfaces/i-settings.d.ts +33 -0
  283. package/dist/interfaces/i-settings.js +8 -0
  284. package/dist/interfaces/i-user.d.ts +14 -0
  285. package/dist/interfaces/i-user.js +8 -0
  286. package/dist/interfaces/i-workdir.d.ts +14 -0
  287. package/dist/interfaces/i-workdir.js +8 -0
  288. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  289. package/dist/interfaces/i-xkb-model.js +8 -0
  290. package/dist/interfaces/index.d.ts +26 -0
  291. package/dist/interfaces/index.js +8 -0
  292. package/dist/krill/classes/cfs.d.ts +17 -0
  293. package/dist/krill/classes/cfs.js +39 -0
  294. package/dist/krill/classes/krill_enums.d.ts +37 -0
  295. package/dist/krill/classes/krill_enums.js +41 -0
  296. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  297. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  298. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  299. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  300. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  301. package/dist/krill/classes/prepare.d/location.js +59 -0
  302. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  303. package/dist/krill/classes/prepare.d/network.js +68 -0
  304. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  305. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  306. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  307. package/dist/krill/classes/prepare.d/summary.js +72 -0
  308. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  309. package/dist/krill/classes/prepare.d/users.js +63 -0
  310. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  311. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  312. package/dist/krill/classes/prepare.d.ts +89 -0
  313. package/dist/krill/classes/prepare.js +319 -0
  314. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  315. package/dist/krill/classes/sequence.d/add_user.js +77 -0
  316. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  317. package/dist/krill/classes/sequence.d/bootloader.js +117 -0
  318. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  319. package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
  320. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  321. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  322. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  323. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  324. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  325. package/dist/krill/classes/sequence.d/fstab.js +177 -0
  326. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  327. package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
  328. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  329. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  330. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  331. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  332. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  333. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  334. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  335. package/dist/krill/classes/sequence.d/locale.js +91 -0
  336. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  337. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  338. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  339. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  340. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  341. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  342. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  343. package/dist/krill/classes/sequence.d/mkfs.js +88 -0
  344. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  345. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  346. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  347. package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
  348. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  349. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  350. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  351. package/dist/krill/classes/sequence.d/packages.js +111 -0
  352. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  353. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  354. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
  355. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
  356. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  357. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
  358. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  359. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
  360. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  361. package/dist/krill/classes/sequence.d/partition.js +84 -0
  362. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  363. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  364. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  365. package/dist/krill/classes/sequence.d/umount.js +28 -0
  366. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  367. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  368. package/dist/krill/classes/sequence.d.ts +134 -0
  369. package/dist/krill/classes/sequence.js +400 -0
  370. package/dist/krill/components/finished.d.ts +16 -0
  371. package/dist/krill/components/finished.js +56 -0
  372. package/dist/krill/components/information.d.ts +8 -0
  373. package/dist/krill/components/information.js +162 -0
  374. package/dist/krill/components/install.d.ts +15 -0
  375. package/dist/krill/components/install.js +60 -0
  376. package/dist/krill/components/keyboard.d.ts +16 -0
  377. package/dist/krill/components/keyboard.js +54 -0
  378. package/dist/krill/components/location.d.ts +16 -0
  379. package/dist/krill/components/location.js +59 -0
  380. package/dist/krill/components/network.d.ts +19 -0
  381. package/dist/krill/components/network.js +65 -0
  382. package/dist/krill/components/partitions.d.ts +18 -0
  383. package/dist/krill/components/partitions.js +89 -0
  384. package/dist/krill/components/steps.d.ts +13 -0
  385. package/dist/krill/components/steps.js +148 -0
  386. package/dist/krill/components/summary.d.ts +25 -0
  387. package/dist/krill/components/summary.js +77 -0
  388. package/dist/krill/components/title.d.ts +11 -0
  389. package/dist/krill/components/title.js +35 -0
  390. package/dist/krill/components/users.d.ts +24 -0
  391. package/dist/krill/components/users.js +80 -0
  392. package/dist/krill/components/welcome.d.ts +13 -0
  393. package/dist/krill/components/welcome.js +63 -0
  394. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  395. package/dist/krill/interfaces/i_krill.js +8 -0
  396. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  397. package/dist/krill/interfaces/i_krill_config.js +8 -0
  398. package/dist/krill/lib/get_address.d.ts +8 -0
  399. package/dist/krill/lib/get_address.js +23 -0
  400. package/dist/krill/lib/get_dns.d.ts +8 -0
  401. package/dist/krill/lib/get_dns.js +23 -0
  402. package/dist/krill/lib/get_domain.d.ts +8 -0
  403. package/dist/krill/lib/get_domain.js +23 -0
  404. package/dist/krill/lib/get_gateway.d.ts +8 -0
  405. package/dist/krill/lib/get_gateway.js +23 -0
  406. package/dist/krill/lib/get_hostname.d.ts +8 -0
  407. package/dist/krill/lib/get_hostname.js +23 -0
  408. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  409. package/dist/krill/lib/get_luks_passphrase.js +32 -0
  410. package/dist/krill/lib/get_netmask.d.ts +8 -0
  411. package/dist/krill/lib/get_netmask.js +23 -0
  412. package/dist/krill/lib/get_password.d.ts +8 -0
  413. package/dist/krill/lib/get_password.js +36 -0
  414. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  415. package/dist/krill/lib/get_userfullname.js +23 -0
  416. package/dist/krill/lib/get_username.d.ts +8 -0
  417. package/dist/krill/lib/get_username.js +23 -0
  418. package/dist/krill/lib/select_address_type.d.ts +8 -0
  419. package/dist/krill/lib/select_address_type.js +24 -0
  420. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  421. package/dist/krill/lib/select_filesystem_type.js +40 -0
  422. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  423. package/dist/krill/lib/select_installation_device.js +40 -0
  424. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  425. package/dist/krill/lib/select_installation_mode.js +25 -0
  426. package/dist/krill/lib/select_interface.d.ts +8 -0
  427. package/dist/krill/lib/select_interface.js +24 -0
  428. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  429. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  430. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  431. package/dist/krill/lib/select_keyboard_model.js +34 -0
  432. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  433. package/dist/krill/lib/select_keyboard_option.js +34 -0
  434. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  435. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  436. package/dist/krill/lib/select_languages.d.ts +8 -0
  437. package/dist/krill/lib/select_languages.js +28 -0
  438. package/dist/krill/lib/select_regions.d.ts +8 -0
  439. package/dist/krill/lib/select_regions.js +24 -0
  440. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  441. package/dist/krill/lib/select_replaced_partition.js +31 -0
  442. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  443. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  444. package/dist/krill/lib/select_zones.d.ts +8 -0
  445. package/dist/krill/lib/select_zones.js +518 -0
  446. package/dist/lib/kill_me_softly.d.ts +11 -0
  447. package/dist/lib/kill_me_softly.js +61 -0
  448. package/dist/lib/utils.d.ts +19 -0
  449. package/dist/lib/utils.js +65 -0
  450. package/dracut/dracut.conf.d/50-live.conf +12 -13
  451. package/package.json +1 -1
  452. package/perrisbrewery/template/dependencies.yaml +1 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * ./src/krill/modules/network-cfg.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import fs from 'node:fs';
10
+ import Pacman from '../../../classes/pacman.js';
11
+ import Systemctl from '../../../classes/systemctl.js';
12
+ import { exec } from '../../../lib/utils.js';
13
+ /**
14
+ * networkcfg
15
+ *
16
+ * - debian: /etc/network/interface
17
+ * - ubuntu: netplan
18
+ * - arch:
19
+ *
20
+ * - all: /etc/resolv.conf
21
+ */
22
+ export default async function networkCfg() {
23
+ const systemdCtl = new Systemctl();
24
+ /**
25
+ * debian: /etc/network/interfaces
26
+ */
27
+ if (this.distro.familyId === 'debian' && !Pacman.packageIsInstalled('netplan.io')) {
28
+ const file = this.installTarget + '/etc/network/interfaces';
29
+ let content = '# created by eggs\n\n';
30
+ content += 'auto lo\n';
31
+ content += 'iface lo inet loopback\n\n';
32
+ content += 'auto ' + this.network.iface + '\n';
33
+ content += 'iface ' + this.network.iface + ' inet ' + this.network.addressType + '\n';
34
+ if (this.network.addressType !== 'dhcp') {
35
+ content += ' address ' + this.network.address + '\n';
36
+ content += ' netmask ' + this.network.netmask + '\n';
37
+ content += ' gateway ' + this.network.gateway + '\n';
38
+ }
39
+ try {
40
+ fs.writeFileSync(file, content, 'utf8');
41
+ }
42
+ catch (e) {
43
+ console.log("error on write: " + file);
44
+ }
45
+ }
46
+ else if (this.distro.familyId === 'debian' && Pacman.packageIsInstalled('netplan.io')) {
47
+ // netplan: to do
48
+ }
49
+ else if (this.distro.familyId === 'arch') {
50
+ // arch: seem to work
51
+ }
52
+ /**
53
+ * resolv.conf
54
+ */
55
+ const resolvFile = this.installTarget + '/etc/resolv.conf';
56
+ await exec(`rm -f ${resolvFile}`);
57
+ if (fs.existsSync('/run/systemd/resolve/resolv.conf')) {
58
+ await exec(`ln -s /run/systemd/resolve/resolv.conf ${resolvFile}`);
59
+ }
60
+ else {
61
+ let content = '# created by eggs\n\n';
62
+ content += 'domain ' + this.network.domain + '\n';
63
+ for (const element of this.network.dns) {
64
+ content += 'nameserver ' + element + '\n';
65
+ }
66
+ try {
67
+ fs.writeFileSync(resolvFile, content, 'utf8');
68
+ }
69
+ catch (e) {
70
+ console.log("error on write: " + resolvFile);
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/packages.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../../classes/sequence.js';
10
+ /**
11
+ *
12
+ * @param this
13
+ */
14
+ export default function packages(this: Sequence): Promise<void>;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * ./src/krill/modules/packages.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import yaml from 'js-yaml';
10
+ import fs from 'node:fs';
11
+ import Pacman from '../../../classes/pacman.js';
12
+ import Utils from '../../../classes/utils.js';
13
+ import { exec } from '../../../lib/utils.js';
14
+ /**
15
+ *
16
+ * @param this
17
+ */
18
+ export default async function packages() {
19
+ const echoYes = Utils.setEcho(true);
20
+ let modulePath = '/etc/penguins-eggs.d/krill/';
21
+ if (Pacman.packageIsInstalled('calamares')) {
22
+ modulePath = '/etc/calamares/';
23
+ }
24
+ const config_file = `${modulePath}modules/packages.conf`;
25
+ if (fs.existsSync(config_file)) {
26
+ const packages = yaml.load(fs.readFileSync(config_file, 'utf8'));
27
+ let packagesToInstall = [];
28
+ let packagesToRemove = [];
29
+ if (packages.operations !== undefined) {
30
+ for (const operation of packages.operations) {
31
+ if ('try_remove' in operation) {
32
+ packagesToRemove = operation.try_remove;
33
+ }
34
+ if ('try_install' in operation) {
35
+ packagesToInstall = operation.try_install;
36
+ }
37
+ }
38
+ }
39
+ // Alpine
40
+ if (this.distro.familyId === 'alpine') {
41
+ packages.backend = 'apk';
42
+ }
43
+ switch (packages.backend) {
44
+ case 'apt': {
45
+ /**
46
+ * apt
47
+ */
48
+ if (packagesToRemove != undefined && packagesToRemove.length > 0) {
49
+ let cmd = `chroot ${this.installTarget} apt-get purge -y `;
50
+ for (const elem of packagesToRemove) {
51
+ if (Pacman.packageIsInstalled(elem)) {
52
+ cmd += elem + ' ';
53
+ }
54
+ }
55
+ await exec(`${cmd} ${this.toNull}`, this.echo);
56
+ const autoremove = `chroot ${this.installTarget} apt-get autoremove -y ${this.toNull}`;
57
+ await exec(autoremove, this.echo);
58
+ }
59
+ if (packagesToInstall != undefined && packagesToInstall.length > 0) {
60
+ let cmd = `chroot ${this.installTarget} apt-get install -y `;
61
+ for (const elem of packagesToInstall) {
62
+ cmd += elem + ' ';
63
+ }
64
+ const update = `chroot ${this.installTarget} apt-get update ${this.toNull}`;
65
+ await exec(update, this.echo);
66
+ await exec(`${cmd} ${this.toNull}`, this.echo);
67
+ }
68
+ break;
69
+ }
70
+ case 'pacman': {
71
+ /**
72
+ * pacman
73
+ */
74
+ if (packagesToRemove != undefined && packagesToRemove.length > 0) {
75
+ let cmd = `chroot ${this.installTarget} pacman -R\n`;
76
+ for (const elem of packagesToRemove) {
77
+ cmd += elem + ' ';
78
+ }
79
+ await exec(`${cmd} ${echoYes}`, this.echo);
80
+ }
81
+ if (packagesToInstall != undefined && packagesToInstall.length > 0) {
82
+ for (const elem of packagesToInstall) {
83
+ await exec(`chroot ${this.installTarget} pacman -S ${elem}`, echoYes);
84
+ }
85
+ }
86
+ break;
87
+ }
88
+ case 'apk': {
89
+ /**
90
+ * apk
91
+ */
92
+ if (packagesToRemove != undefined && packagesToRemove.length > 0) {
93
+ let cmd = `chroot ${this.installTarget} apk del `;
94
+ for (const elem of packagesToRemove) {
95
+ cmd += elem + ' ';
96
+ }
97
+ await exec(`${cmd} ${this.toNull}`, this.echo);
98
+ }
99
+ if (packagesToInstall != undefined && packagesToInstall.length > 0) {
100
+ let cmd = `chroot ${this.installTarget} apk add `;
101
+ for (const elem of packagesToInstall) {
102
+ cmd += elem + ' ';
103
+ }
104
+ await exec(`${cmd} ${this.toNull}`, this.echo);
105
+ }
106
+ break;
107
+ }
108
+ // No default
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/bios-luks.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../../sequence.js';
10
+ /**
11
+ *
12
+ * @param this
13
+ * @param installDevice
14
+ * @param p
15
+ * @returns
16
+ */
17
+ export default function biosLuks(this: Sequence, installDevice?: string, p?: string): Promise<boolean>;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/bios-luks.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import { exec } from '../../../../lib/utils.js';
10
+ import Utils from '../../../../classes/utils.js';
11
+ import getLuksPassphrase from '../../../lib/get_luks_passphrase.js';
12
+ // React
13
+ import React from 'react';
14
+ import { render } from 'ink';
15
+ import Install from '../../../components/install.js';
16
+ /**
17
+ *
18
+ * @param this
19
+ * @param installDevice
20
+ * @param p
21
+ * @returns
22
+ */
23
+ export default async function biosLuks(installDevice = "", p = "") {
24
+ await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
25
+ await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 1MiB 512MiB`, this.echo); // sda1
26
+ await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 512MiB 100%`, this.echo); // sda3
27
+ await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
28
+ await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
29
+ // BOOT 512M
30
+ this.devices.boot.name = `${installDevice}${p}1`; // 'boot'
31
+ this.devices.boot.fsType = 'ext4';
32
+ this.devices.boot.mountPoint = '/boot';
33
+ // disabilito spinner per introduzione passphrase
34
+ let message = "Creating partitions";
35
+ await redraw(React.createElement(Install, { message: message, percent: 0 }));
36
+ const passphrase = await getLuksPassphrase('evolution', 'evolution'); // It's just a default
37
+ await redraw(React.createElement(Install, { message: message, percent: 0, spinner: this.spinner }));
38
+ // Aggiungi parametri di sicurezza espliciti
39
+ const cipher = "aes-xts-plain64";
40
+ const keySize = "512";
41
+ const hash = "sha512";
42
+ // ROOT
43
+ const cryptoRoot = await exec(`echo -n "${passphrase}" | cryptsetup --batch-mode --cipher ${cipher} --key-size ${keySize} --hash ${hash} --type luks2 --key-file=- -v luksFormat ${installDevice}${p}2`, this.echo);
44
+ if (cryptoRoot.code !== 0) {
45
+ Utils.warning(`Error: ${cryptoRoot.code} ${cryptoRoot.data}`);
46
+ process.exit(1);
47
+ }
48
+ const cryptoRootOpen = await exec(`echo -n "${passphrase}" | cryptsetup --key-file=- --type luks2 luksOpen ${installDevice}${p}2 root_crypted`, this.echo);
49
+ if (cryptoRootOpen.code !== 0) {
50
+ Utils.warning(`Error: ${cryptoRootOpen.code} ${cryptoRootOpen.data}`);
51
+ process.exit(1);
52
+ }
53
+ // this.devices.boot.name = DEFINED`
54
+ this.devices.data.name = 'none';
55
+ this.devices.efi.name = 'none';
56
+ this.devices.root.name = `/dev/mapper/${this.luksRootName}`;
57
+ this.devices.root.cryptedFrom = `${installDevice}${p}2`;
58
+ this.devices.root.fsType = 'ext4';
59
+ this.devices.root.mountPoint = '/';
60
+ this.devices.swap.name = 'none';
61
+ return true;
62
+ }
63
+ /**
64
+ *
65
+ * @param elem
66
+ */
67
+ async function redraw(elem) {
68
+ let opt = {};
69
+ opt.patchConsole = false;
70
+ opt.debug = true;
71
+ console.clear();
72
+ render(elem, opt);
73
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/bios-standard.ts (versione unificata)
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * Partiziona un disco per sistemi BIOS, gestendo dinamicamente ext4 (con swap) e btrfs (senza swap).
8
+ */
9
+ import Sequence from '../../sequence.js';
10
+ /**
11
+ * * @param this
12
+ * @param installDevice
13
+ * @param p
14
+ * @returns
15
+ */
16
+ export default function biosStandard(this: Sequence, installDevice?: string, p?: string): Promise<boolean>;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/bios-standard.ts (versione unificata)
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * Partiziona un disco per sistemi BIOS, gestendo dinamicamente ext4 (con swap) e btrfs (senza swap).
8
+ */
9
+ import { exec } from '../../../../lib/utils.js';
10
+ /**
11
+ * * @param this
12
+ * @param installDevice
13
+ * @param p
14
+ * @returns
15
+ */
16
+ export default async function biosStandard(installDevice = "", p = "") {
17
+ const fsType = this.partitions.filesystemType;
18
+ // 1. Creazione della tabella delle partizioni (comune a entrambi)
19
+ await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
20
+ // 2. Logica di partizionamento condizionale
21
+ if (fsType === 'btrfs') {
22
+ // --- CASO BTRFS: NESSUNA PARTIZIONE DI SWAP ---
23
+ // Creiamo un'unica partizione che occupa tutto il disco.
24
+ // Lo swap verrà gestito con uno swapfile direttamente su Btrfs.
25
+ await exec(`parted --script --align optimal ${installDevice} mkpart primary "" 1MiB 100%`, this.echo); // Partizione 1: root
26
+ await exec(`parted ${installDevice} set 1 boot on`, this.echo);
27
+ // Imposta i dispositivi per Btrfs
28
+ this.devices.root.name = `${installDevice}${p}1`;
29
+ this.devices.swap.name = 'none'; // Nessuna partizione di swap
30
+ }
31
+ else {
32
+ // --- CASO EXT4 (o default): CON PARTIZIONE DI SWAP ---
33
+ // Comportamento standard con partizione di swap.
34
+ await exec(`parted --script --align optimal ${installDevice} mkpart primary linux-swap 1MiB ${this.swapSize + 1}MiB`, this.echo); // Partizione 1: swap
35
+ await exec(`parted --script --align optimal ${installDevice} mkpart primary "" ${this.swapSize + 1}MiB 100%`, this.echo); // Partizione 2: root
36
+ await exec(`parted ${installDevice} set 2 boot on`, this.echo);
37
+ // Imposta i dispositivi per ext4
38
+ this.devices.swap.name = `${installDevice}${p}1`;
39
+ this.devices.swap.fsType = 'swap';
40
+ this.devices.swap.mountPoint = 'none';
41
+ this.devices.root.name = `${installDevice}${p}2`;
42
+ }
43
+ // 3. Impostazioni finali comuni
44
+ this.devices.root.fsType = fsType;
45
+ this.devices.root.mountPoint = '/';
46
+ // BOOT/DATA/EFI non sono usati in questo schema
47
+ this.devices.boot.name = 'none';
48
+ this.devices.data.name = 'none';
49
+ this.devices.efi.name = 'none';
50
+ return true;
51
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/uefi-luks.tsx
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../../sequence.js';
10
+ /**
11
+ *
12
+ * @param this
13
+ * @param installDevice
14
+ * @param p
15
+ * @returns
16
+ */
17
+ export default function uefiLuks(this: Sequence, installDevice?: string, p?: string): Promise<boolean>;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/uefi-luks.tsx
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import { exec } from '../../../../lib/utils.js';
10
+ import Utils from '../../../../classes/utils.js';
11
+ import getLuksPassphrase from '../../../lib/get_luks_passphrase.js';
12
+ // React
13
+ import React from 'react';
14
+ import { render } from 'ink';
15
+ import Install from '../../../components/install.js';
16
+ /**
17
+ *
18
+ * @param this
19
+ * @param installDevice
20
+ * @param p
21
+ * @returns
22
+ */
23
+ export default async function uefiLuks(installDevice = "", p = "") {
24
+ await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
25
+ await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
26
+ await exec(`parted --script ${installDevice} mkpart boot ext4 256MiB 768MiB`, this.echo); // sda2 boot
27
+ await exec(`parted --script ${installDevice} mkpart root ext4 ${768}MiB 100%`, this.echo); // sda3 root
28
+ await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
29
+ await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
30
+ // EFI 256M
31
+ this.devices.efi.name = `${installDevice}${p}1`; // 'efi'
32
+ this.devices.efi.fsType = 'F 32 -I';
33
+ this.devices.efi.mountPoint = '/boot/efi';
34
+ // BOOT 512M
35
+ this.devices.boot.name = `${installDevice}${p}2`; // 'boot'
36
+ this.devices.boot.fsType = 'ext4';
37
+ this.devices.boot.mountPoint = '/boot';
38
+ // disabilito spinner per introduzione passphrase
39
+ let message = "Creating partitions";
40
+ await redraw(React.createElement(Install, { message: message, percent: 0 }));
41
+ const passphrase = await getLuksPassphrase('evolution', 'evolution');
42
+ await redraw(React.createElement(Install, { message: message, percent: 0, spinner: this.spinner }));
43
+ // Aggiungi parametri di sicurezza espliciti
44
+ const cipher = "aes-xts-plain64";
45
+ const keySize = "512";
46
+ const hash = "sha512";
47
+ // ROOT
48
+ const cryptoRoot = await exec(`echo -n "${passphrase}" | cryptsetup --batch-mode --cipher ${cipher} --key-size ${keySize} --hash ${hash} --key-file=- -v luksFormat --type luks2 ${installDevice}${p}3`, this.echo);
49
+ if (cryptoRoot.code !== 0) {
50
+ Utils.warning(`Error: ${cryptoRoot.code} ${cryptoRoot.data}`);
51
+ process.exit(1);
52
+ }
53
+ const cryptoRootOpen = await exec(`echo -n "${passphrase}" | cryptsetup --key-file=- luksOpen --type luks2 ${installDevice}${p}3 ${this.luksRootName}`, this.echo);
54
+ if (cryptoRootOpen.code !== 0) {
55
+ Utils.warning(`Error: ${cryptoRootOpen.code} ${cryptoRootOpen.data}`);
56
+ process.exit(1);
57
+ }
58
+ // this.devices.boot.name = DEFINED
59
+ this.devices.data.name = 'none';
60
+ this.devices.root.name = `/dev/mapper/${this.luksRootName}`;
61
+ this.devices.root.cryptedFrom = `${installDevice}${p}3`;
62
+ this.devices.root.fsType = 'ext4';
63
+ this.devices.root.mountPoint = '/';
64
+ this.devices.swap.name = 'none';
65
+ return true;
66
+ }
67
+ /**
68
+ *
69
+ * @param elem
70
+ */
71
+ async function redraw(elem) {
72
+ let opt = {};
73
+ opt.patchConsole = false;
74
+ opt.debug = true;
75
+ console.clear();
76
+ render(elem, opt);
77
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/uefi-standard.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../../sequence.js';
10
+ export default function uefiStandard(this: Sequence, installDevice?: string, p?: string): Promise<boolean>;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ./src/krill/modules/partition.d/uefi-standard.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import { exec } from '../../../../lib/utils.js';
10
+ export default async function uefiStandard(installDevice = "", p = "") {
11
+ await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
12
+ // Partizione EFI: inizia a 1MiB e ha una dimensione di circa 256MiB
13
+ // Finisce a 257MiB per avere uno spazio netto di 256MiB
14
+ await exec(`parted --script ${installDevice} mkpart efi fat32 1MiB 257MiB`, this.echo);
15
+ await exec(`parted --script ${installDevice} mkpart swap linux-swap 257MiB ${this.swapSize + 257}MiB`, this.echo);
16
+ await exec(`parted --script ${installDevice} mkpart root ext4 ${this.swapSize + 257}MiB 100%`, this.echo);
17
+ await exec(`parted --script ${installDevice} set 1 boot on`, this.echo);
18
+ await exec(`parted --script ${installDevice} set 1 esp on`, this.echo);
19
+ this.devices.efi.name = `${installDevice}${p}1`;
20
+ this.devices.efi.fsType = 'F 32 -I';
21
+ this.devices.efi.mountPoint = '/boot/efi';
22
+ this.devices.boot.name = 'none';
23
+ this.devices.swap.name = `${installDevice}${p}2`;
24
+ this.devices.swap.fsType = 'swap';
25
+ this.devices.swap.mountPoint = 'none';
26
+ this.devices.root.name = `${installDevice}${p}3`;
27
+ this.devices.root.fsType = 'ext4';
28
+ this.devices.root.mountPoint = '/';
29
+ // BOOT/DATA/EFI
30
+ this.devices.boot.name = 'none';
31
+ this.devices.data.name = 'none';
32
+ return true;
33
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/partition.tsx
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../sequence.js';
10
+ /**
11
+ *
12
+ * @param this
13
+ */
14
+ export default function partition(this: Sequence): Promise<boolean>;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * ./src/krill/modules/partition.tsx
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import os from 'node:os';
10
+ import Utils from '../../../classes/utils.js';
11
+ import { SwapChoice, InstallationMode } from '../krill_enums.js';
12
+ /**
13
+ *
14
+ * @param this
15
+ */
16
+ export default async function partition() {
17
+ const echoYes = Utils.setEcho(true);
18
+ let retVal = false;
19
+ const installDevice = this.partitions.installationDevice;
20
+ const replacedPartition = this.partitions.replacedPartition;
21
+ let p = "";
22
+ if (detectDeviceType(installDevice) === "standard") {
23
+ p = "";
24
+ }
25
+ else if (detectDeviceType(installDevice) === "mmc") {
26
+ p = "";
27
+ }
28
+ else if (detectDeviceType(installDevice) === "nvme") {
29
+ p = "p";
30
+ }
31
+ else if (detectDeviceType(installDevice) === "raid") {
32
+ p = "p";
33
+ }
34
+ const installationMode = this.partitions.installationMode;
35
+ this.swapSize = Math.round(os.totalmem() / (1024 * 1024 * 1024)); // In GB
36
+ switch (this.partitions.userSwapChoice) {
37
+ case SwapChoice.None: {
38
+ this.swapSize = 0;
39
+ break;
40
+ }
41
+ case SwapChoice.Small: {
42
+ break;
43
+ }
44
+ case SwapChoice.Suspend: {
45
+ this.swapSize *= 2;
46
+ break;
47
+ }
48
+ case SwapChoice.File: {
49
+ // total mem
50
+ break;
51
+ }
52
+ // No default
53
+ }
54
+ if (installationMode === InstallationMode.Replace) {
55
+ retVal = true;
56
+ }
57
+ else if (installationMode === InstallationMode.EraseDisk && !this.efi) {
58
+ retVal = await this.partitionBiosStandard(installDevice, p);
59
+ }
60
+ else if (installationMode === InstallationMode.Luks && !this.efi) {
61
+ retVal = await this.partitionBiosLuks(installDevice, p);
62
+ }
63
+ else if (installationMode === InstallationMode.EraseDisk && this.efi) {
64
+ retVal = await this.partitionUefiStandard(installDevice, p);
65
+ }
66
+ else if (installationMode === InstallationMode.Luks && this.efi) {
67
+ retVal = await this.partitionUefiLuks(installDevice, p);
68
+ }
69
+ return retVal;
70
+ }
71
+ /**
72
+ *
73
+ * @param device
74
+ * @returns
75
+ */
76
+ function detectDeviceType(device) {
77
+ if (device.includes('nvme'))
78
+ return 'nvme';
79
+ if (device.match(/^\/dev\/md\d+/))
80
+ return 'raid';
81
+ if (device.includes('mmcblk'))
82
+ return 'mmc';
83
+ return 'standard';
84
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ./src/krill/modules/remove-installer-link.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../sequence.js';
10
+ /**
11
+ * removeInstallerLink
12
+ */
13
+ export default function removeInstallerLink(this: Sequence): Promise<void>;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ./src/krill/modules/remove-installer-link.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import fs from 'node:fs';
10
+ /**
11
+ * removeInstallerLink
12
+ */
13
+ export default async function removeInstallerLink() {
14
+ const file = `${this.installTarget}/usr/bin/penguins-links-add.sh`;
15
+ let lines = [];
16
+ let content = '';
17
+ if (fs.existsSync(file)) {
18
+ lines = fs.readFileSync(file, { encoding: 'utf8', flag: 'r' }).split('\n');
19
+ for (let i = 0; i < lines.length; i++) {
20
+ if (lines[i]) {
21
+ if (lines[i].search('penguins-krill.desktop') !== -1) {
22
+ lines[i] = '#' + lines[i];
23
+ }
24
+ if (lines[i].search('penguins-clinstaller.desktop') !== -1) {
25
+ lines[i] = '#' + lines[i];
26
+ }
27
+ if (lines[i].search('install-system.desktop') !== -1) {
28
+ lines[i] = '#' + lines[i];
29
+ }
30
+ content += lines[i] + '\n';
31
+ }
32
+ }
33
+ }
34
+ fs.writeFileSync(file, content);
35
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/umount.ts
3
+ * penguins-eggs v.25.7.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../../classes/sequence.js';
10
+ /**
11
+ *
12
+ * @param mountpoint
13
+ */
14
+ export default function umount(this: Sequence, mountPoint?: string): Promise<void>;