penguins-eggs 10.0.53 → 10.0.54

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 (344) hide show
  1. package/.oclif.manifest.json +1548 -2
  2. package/README.md +788 -0
  3. package/addons/eggs/theme/livecd/grub.main.simple.cfg +49 -0
  4. package/addons/eggs/theme/livecd/isolinux.theme.cfg +6 -5
  5. package/conf/distros/fedora/calamares/settings.yml +0 -6
  6. package/dist/classes/bleach.d.ts +32 -0
  7. package/dist/classes/bleach.js +135 -0
  8. package/dist/classes/cfs.d.ts +17 -0
  9. package/dist/classes/cfs.js +39 -0
  10. package/dist/classes/cli-autologin.d.ts +52 -0
  11. package/dist/classes/cli-autologin.js +247 -0
  12. package/dist/classes/compressors.d.ts +54 -0
  13. package/dist/classes/compressors.js +109 -0
  14. package/dist/classes/daddy.d.ts +26 -0
  15. package/dist/classes/daddy.js +167 -0
  16. package/dist/classes/distro.d.ts +32 -0
  17. package/dist/classes/distro.js +341 -0
  18. package/dist/classes/diversions.d.ts +48 -0
  19. package/dist/classes/diversions.js +116 -0
  20. package/dist/classes/incubation/branding.d.ts +17 -0
  21. package/dist/classes/incubation/branding.js +85 -0
  22. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  23. package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
  24. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  25. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  26. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  27. package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
  28. package/dist/classes/incubation/fisherman.d.ts +70 -0
  29. package/dist/classes/incubation/fisherman.js +263 -0
  30. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/alpine.js +78 -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 +85 -0
  36. package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
  37. package/dist/classes/incubation/incubator.d/jessie.js +44 -0
  38. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/noble.js +85 -0
  40. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  42. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  44. package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
  45. package/dist/classes/incubation/incubator.d/rolling.js +80 -0
  46. package/dist/classes/incubation/incubator.d.ts +44 -0
  47. package/dist/classes/incubation/incubator.js +382 -0
  48. package/dist/classes/incubation/installer.d.ts +13 -0
  49. package/dist/classes/incubation/installer.js +52 -0
  50. package/dist/classes/keyboards.d.ts +50 -0
  51. package/dist/classes/keyboards.js +287 -0
  52. package/dist/classes/locales.d.ts +21 -0
  53. package/dist/classes/locales.js +77 -0
  54. package/dist/classes/network.d.ts +37 -0
  55. package/dist/classes/network.js +98 -0
  56. package/dist/classes/ovary.d.ts +198 -0
  57. package/dist/classes/ovary.js +1849 -0
  58. package/dist/classes/pacman.d/aldos.d.ts +52 -0
  59. package/dist/classes/pacman.d/aldos.js +100 -0
  60. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  61. package/dist/classes/pacman.d/alpine.js +162 -0
  62. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  63. package/dist/classes/pacman.d/archlinux.js +137 -0
  64. package/dist/classes/pacman.d/debian.d.ts +65 -0
  65. package/dist/classes/pacman.d/debian.js +143 -0
  66. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  67. package/dist/classes/pacman.d/fedora.js +101 -0
  68. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  69. package/dist/classes/pacman.d/openmamba.js +100 -0
  70. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  71. package/dist/classes/pacman.d/opensuse.js +102 -0
  72. package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
  73. package/dist/classes/pacman.d/voidlinux.js +90 -0
  74. package/dist/classes/pacman.d.ts +139 -0
  75. package/dist/classes/pacman.js +775 -0
  76. package/dist/classes/pve-live.d.ts +17 -0
  77. package/dist/classes/pve-live.js +52 -0
  78. package/dist/classes/pxe.d.ts +74 -0
  79. package/dist/classes/pxe.js +410 -0
  80. package/dist/classes/settings.d.ts +53 -0
  81. package/dist/classes/settings.js +185 -0
  82. package/dist/classes/sources_list.d.ts +28 -0
  83. package/dist/classes/sources_list.js +89 -0
  84. package/dist/classes/systemctl.d.ts +47 -0
  85. package/dist/classes/systemctl.js +86 -0
  86. package/dist/classes/tailor.d.ts +50 -0
  87. package/dist/classes/tailor.js +526 -0
  88. package/dist/classes/tools.d.ts +26 -0
  89. package/dist/classes/tools.js +50 -0
  90. package/dist/classes/users.d.ts +28 -0
  91. package/dist/classes/users.js +143 -0
  92. package/dist/classes/utils.d.ts +324 -0
  93. package/dist/classes/utils.js +984 -0
  94. package/dist/classes/xdg.d.ts +45 -0
  95. package/dist/classes/xdg.js +337 -0
  96. package/dist/classes/yolk.d.ts +33 -0
  97. package/dist/classes/yolk.js +114 -0
  98. package/dist/commands/adapt.d.ts +17 -0
  99. package/dist/commands/adapt.js +33 -0
  100. package/dist/commands/analyze.d.ts +26 -0
  101. package/dist/commands/analyze.js +95 -0
  102. package/dist/commands/calamares.d.ts +29 -0
  103. package/dist/commands/calamares.js +112 -0
  104. package/dist/commands/config.d.ts +35 -0
  105. package/dist/commands/config.js +120 -0
  106. package/dist/commands/cuckoo.d.ts +16 -0
  107. package/dist/commands/cuckoo.js +62 -0
  108. package/dist/commands/dad.d.ts +20 -0
  109. package/dist/commands/dad.js +46 -0
  110. package/dist/commands/export/iso.d.ts +19 -0
  111. package/dist/commands/export/iso.js +55 -0
  112. package/dist/commands/export/pkg.d.ts +29 -0
  113. package/dist/commands/export/pkg.js +163 -0
  114. package/dist/commands/export/tarballs.d.ts +27 -0
  115. package/dist/commands/export/tarballs.js +84 -0
  116. package/dist/commands/install.d.ts +37 -0
  117. package/dist/commands/install.js +88 -0
  118. package/dist/commands/kill.d.ts +24 -0
  119. package/dist/commands/kill.js +50 -0
  120. package/dist/commands/love.d.ts +20 -0
  121. package/dist/commands/love.js +59 -0
  122. package/dist/commands/mom.d.ts +16 -0
  123. package/dist/commands/mom.js +30 -0
  124. package/dist/commands/produce.d.ts +34 -0
  125. package/dist/commands/produce.js +201 -0
  126. package/dist/commands/status.d.ts +23 -0
  127. package/dist/commands/status.js +31 -0
  128. package/dist/commands/syncfrom.d.ts +45 -0
  129. package/dist/commands/syncfrom.js +152 -0
  130. package/dist/commands/syncto.d.ts +40 -0
  131. package/dist/commands/syncto.js +175 -0
  132. package/dist/commands/tools/clean.d.ts +18 -0
  133. package/dist/commands/tools/clean.js +37 -0
  134. package/dist/commands/tools/ppa.d.ts +26 -0
  135. package/dist/commands/tools/ppa.js +138 -0
  136. package/dist/commands/tools/skel.d.ts +18 -0
  137. package/dist/commands/tools/skel.js +44 -0
  138. package/dist/commands/tools/stat.d.ts +31 -0
  139. package/dist/commands/tools/stat.js +70 -0
  140. package/dist/commands/tools/yolk.d.ts +24 -0
  141. package/dist/commands/tools/yolk.js +45 -0
  142. package/dist/commands/update.d.ts +51 -0
  143. package/dist/commands/update.js +219 -0
  144. package/dist/commands/wardrobe/get.d.ts +23 -0
  145. package/dist/commands/wardrobe/get.js +52 -0
  146. package/dist/commands/wardrobe/list.d.ts +24 -0
  147. package/dist/commands/wardrobe/list.js +125 -0
  148. package/dist/commands/wardrobe/show.d.ts +25 -0
  149. package/dist/commands/wardrobe/show.js +97 -0
  150. package/dist/commands/wardrobe/wear.d.ts +26 -0
  151. package/dist/commands/wardrobe/wear.js +84 -0
  152. package/dist/components/finished.d.ts +16 -0
  153. package/dist/components/finished.js +56 -0
  154. package/dist/components/information.d.ts +8 -0
  155. package/dist/components/information.js +154 -0
  156. package/dist/components/install.d.ts +15 -0
  157. package/dist/components/install.js +60 -0
  158. package/dist/components/keyboard.d.ts +16 -0
  159. package/dist/components/keyboard.js +54 -0
  160. package/dist/components/location.d.ts +16 -0
  161. package/dist/components/location.js +59 -0
  162. package/dist/components/network.d.ts +19 -0
  163. package/dist/components/network.js +65 -0
  164. package/dist/components/partitions.d.ts +16 -0
  165. package/dist/components/partitions.js +73 -0
  166. package/dist/components/steps.d.ts +13 -0
  167. package/dist/components/steps.js +148 -0
  168. package/dist/components/summary.d.ts +24 -0
  169. package/dist/components/summary.js +81 -0
  170. package/dist/components/title.d.ts +11 -0
  171. package/dist/components/title.js +35 -0
  172. package/dist/components/users.d.ts +24 -0
  173. package/dist/components/users.js +80 -0
  174. package/dist/components/welcome.d.ts +13 -0
  175. package/dist/components/welcome.js +63 -0
  176. package/dist/index-old.d.ts +8 -0
  177. package/dist/index-old.js +8 -0
  178. package/dist/index.d.ts +54 -0
  179. package/dist/index.js +147 -0
  180. package/dist/interfaces/i-addons.d.ts +12 -0
  181. package/dist/interfaces/i-addons.js +8 -0
  182. package/dist/interfaces/i-analyze.d.ts +17 -0
  183. package/dist/interfaces/i-analyze.js +17 -0
  184. package/dist/interfaces/i-app.d.ts +14 -0
  185. package/dist/interfaces/i-app.js +8 -0
  186. package/dist/interfaces/i-branding.d.ts +36 -0
  187. package/dist/interfaces/i-branding.js +8 -0
  188. package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
  189. package/dist/interfaces/i-calamares-displaymanager.js +1 -0
  190. package/dist/interfaces/i-calamares-finished.d.ts +12 -0
  191. package/dist/interfaces/i-calamares-finished.js +1 -0
  192. package/dist/interfaces/i-calamares-packages.d.ts +28 -0
  193. package/dist/interfaces/i-calamares-packages.js +1 -0
  194. package/dist/interfaces/i-calamares-partition.d.ts +40 -0
  195. package/dist/interfaces/i-calamares-partition.js +1 -0
  196. package/dist/interfaces/i-config-tools.d.ts +15 -0
  197. package/dist/interfaces/i-config-tools.js +8 -0
  198. package/dist/interfaces/i-devices.d.ts +20 -0
  199. package/dist/interfaces/i-devices.js +8 -0
  200. package/dist/interfaces/i-distro.d.ts +23 -0
  201. package/dist/interfaces/i-distro.js +8 -0
  202. package/dist/interfaces/i-drive-list.d.ts +33 -0
  203. package/dist/interfaces/i-drive-list.js +8 -0
  204. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  205. package/dist/interfaces/i-eggs-config.js +8 -0
  206. package/dist/interfaces/i-excludes.d.ts +14 -0
  207. package/dist/interfaces/i-excludes.js +8 -0
  208. package/dist/interfaces/i-exec.d.ts +11 -0
  209. package/dist/interfaces/i-exec.js +8 -0
  210. package/dist/interfaces/i-initrd.d.ts +13 -0
  211. package/dist/interfaces/i-initrd.js +8 -0
  212. package/dist/interfaces/i-install.d.ts +16 -0
  213. package/dist/interfaces/i-install.js +8 -0
  214. package/dist/interfaces/i-installer.d.ts +17 -0
  215. package/dist/interfaces/i-installer.js +8 -0
  216. package/dist/interfaces/i-krill-config.d.ts +33 -0
  217. package/dist/interfaces/i-krill-config.js +8 -0
  218. package/dist/interfaces/i-krill.d.ts +42 -0
  219. package/dist/interfaces/i-krill.js +8 -0
  220. package/dist/interfaces/i-materia.d.ts +36 -0
  221. package/dist/interfaces/i-materia.js +8 -0
  222. package/dist/interfaces/i-net.d.ts +16 -0
  223. package/dist/interfaces/i-net.js +8 -0
  224. package/dist/interfaces/i-packages.d.ts +16 -0
  225. package/dist/interfaces/i-packages.js +8 -0
  226. package/dist/interfaces/i-partitions.d.ts +16 -0
  227. package/dist/interfaces/i-partitions.js +8 -0
  228. package/dist/interfaces/i-pxe.d.ts +45 -0
  229. package/dist/interfaces/i-pxe.js +1 -0
  230. package/dist/interfaces/i-remix.d.ts +21 -0
  231. package/dist/interfaces/i-remix.js +8 -0
  232. package/dist/interfaces/i-settings.d.ts +33 -0
  233. package/dist/interfaces/i-settings.js +8 -0
  234. package/dist/interfaces/i-user.d.ts +14 -0
  235. package/dist/interfaces/i-user.js +8 -0
  236. package/dist/interfaces/i-workdir.d.ts +14 -0
  237. package/dist/interfaces/i-workdir.js +8 -0
  238. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  239. package/dist/interfaces/i-xkb-model.js +8 -0
  240. package/dist/interfaces/index.d.ts +25 -0
  241. package/dist/interfaces/index.js +8 -0
  242. package/dist/krill/modules/add-user.d.ts +20 -0
  243. package/dist/krill/modules/add-user.js +48 -0
  244. package/dist/krill/modules/bootloader-config.d.ts +14 -0
  245. package/dist/krill/modules/bootloader-config.js +165 -0
  246. package/dist/krill/modules/bootloader.d.ts +14 -0
  247. package/dist/krill/modules/bootloader.js +157 -0
  248. package/dist/krill/modules/change-password.d.ts +15 -0
  249. package/dist/krill/modules/change-password.js +18 -0
  250. package/dist/krill/modules/del-live-user.d.ts +14 -0
  251. package/dist/krill/modules/del-live-user.js +39 -0
  252. package/dist/krill/modules/fstab.d.ts +14 -0
  253. package/dist/krill/modules/fstab.js +123 -0
  254. package/dist/krill/modules/grubcfg.d.ts +17 -0
  255. package/dist/krill/modules/grubcfg.js +29 -0
  256. package/dist/krill/modules/hostname.d.ts +13 -0
  257. package/dist/krill/modules/hostname.js +50 -0
  258. package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
  259. package/dist/krill/modules/initramfs-cfg.js +22 -0
  260. package/dist/krill/modules/initramfs.d.ts +13 -0
  261. package/dist/krill/modules/initramfs.js +54 -0
  262. package/dist/krill/modules/locale-cfg.d.ts +10 -0
  263. package/dist/krill/modules/locale-cfg.js +58 -0
  264. package/dist/krill/modules/locale.d.ts +13 -0
  265. package/dist/krill/modules/locale.js +91 -0
  266. package/dist/krill/modules/m-keyboard.d.ts +14 -0
  267. package/dist/krill/modules/m-keyboard.js +58 -0
  268. package/dist/krill/modules/machine-id.d.ts +15 -0
  269. package/dist/krill/modules/machine-id.js +33 -0
  270. package/dist/krill/modules/mkfs.d.ts +15 -0
  271. package/dist/krill/modules/mkfs.js +50 -0
  272. package/dist/krill/modules/mount-fs.d.ts +17 -0
  273. package/dist/krill/modules/mount-fs.js +62 -0
  274. package/dist/krill/modules/mount-vfs.d.ts +17 -0
  275. package/dist/krill/modules/mount-vfs.js +40 -0
  276. package/dist/krill/modules/network-cfg.d.ts +19 -0
  277. package/dist/krill/modules/network-cfg.js +64 -0
  278. package/dist/krill/modules/packages.d.ts +14 -0
  279. package/dist/krill/modules/packages.js +111 -0
  280. package/dist/krill/modules/partition.d.ts +20 -0
  281. package/dist/krill/modules/partition.js +324 -0
  282. package/dist/krill/modules/remove-installer-link.d.ts +13 -0
  283. package/dist/krill/modules/remove-installer-link.js +35 -0
  284. package/dist/krill/modules/umount.d.ts +14 -0
  285. package/dist/krill/modules/umount.js +28 -0
  286. package/dist/krill/modules/unpackfs.d.ts +13 -0
  287. package/dist/krill/modules/unpackfs.js +20 -0
  288. package/dist/krill/prepare.d.ts +78 -0
  289. package/dist/krill/prepare.js +624 -0
  290. package/dist/krill/sequence.d.ts +154 -0
  291. package/dist/krill/sequence.js +652 -0
  292. package/dist/lib/get_address.d.ts +8 -0
  293. package/dist/lib/get_address.js +23 -0
  294. package/dist/lib/get_dns.d.ts +8 -0
  295. package/dist/lib/get_dns.js +23 -0
  296. package/dist/lib/get_domain.d.ts +8 -0
  297. package/dist/lib/get_domain.js +23 -0
  298. package/dist/lib/get_gateway.d.ts +8 -0
  299. package/dist/lib/get_gateway.js +23 -0
  300. package/dist/lib/get_hostname.d.ts +8 -0
  301. package/dist/lib/get_hostname.js +23 -0
  302. package/dist/lib/get_netmask.d.ts +8 -0
  303. package/dist/lib/get_netmask.js +23 -0
  304. package/dist/lib/get_password.d.ts +8 -0
  305. package/dist/lib/get_password.js +36 -0
  306. package/dist/lib/get_userfullname.d.ts +8 -0
  307. package/dist/lib/get_userfullname.js +23 -0
  308. package/dist/lib/get_username.d.ts +8 -0
  309. package/dist/lib/get_username.js +23 -0
  310. package/dist/lib/kill_me_softly.d.ts +11 -0
  311. package/dist/lib/kill_me_softly.js +61 -0
  312. package/dist/lib/select_address_type.d.ts +8 -0
  313. package/dist/lib/select_address_type.js +24 -0
  314. package/dist/lib/select_filesystem_type.d.ts +8 -0
  315. package/dist/lib/select_filesystem_type.js +46 -0
  316. package/dist/lib/select_installation_device.d.ts +8 -0
  317. package/dist/lib/select_installation_device.js +30 -0
  318. package/dist/lib/select_installation_mode.d.ts +8 -0
  319. package/dist/lib/select_installation_mode.js +24 -0
  320. package/dist/lib/select_interface.d.ts +8 -0
  321. package/dist/lib/select_interface.js +24 -0
  322. package/dist/lib/select_keyboard_layout.d.ts +11 -0
  323. package/dist/lib/select_keyboard_layout.js +36 -0
  324. package/dist/lib/select_keyboard_model.d.ts +11 -0
  325. package/dist/lib/select_keyboard_model.js +34 -0
  326. package/dist/lib/select_keyboard_option.d.ts +11 -0
  327. package/dist/lib/select_keyboard_option.js +34 -0
  328. package/dist/lib/select_keyboard_variant.d.ts +11 -0
  329. package/dist/lib/select_keyboard_variant.js +35 -0
  330. package/dist/lib/select_languages.d.ts +8 -0
  331. package/dist/lib/select_languages.js +28 -0
  332. package/dist/lib/select_regions.d.ts +8 -0
  333. package/dist/lib/select_regions.js +24 -0
  334. package/dist/lib/select_user_swap_choice.d.ts +8 -0
  335. package/dist/lib/select_user_swap_choice.js +34 -0
  336. package/dist/lib/select_zones.d.ts +8 -0
  337. package/dist/lib/select_zones.js +518 -0
  338. package/dist/lib/utils.d.ts +34 -0
  339. package/dist/lib/utils.js +79 -0
  340. package/dist/penguins-eggs-tarball-10.0.54-1-linux-x64.tar.gz +0 -0
  341. package/package.json +11 -7
  342. package/scripts/_eggs +10 -1
  343. package/scripts/eggs.bash +1 -0
  344. /package/addons/eggs/theme/livecd/{grub.main.cfg → grub.main.full.cfg} +0 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * ./src/krill/modules/bootloader-config.ts
3
+ * penguins-eggs v.10.0.0 / 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 Utils from '../../classes/utils.js';
10
+ import { exec } from '../../lib/utils.js';
11
+ /**
12
+ *
13
+ * @param this
14
+ */
15
+ export default async function bootloaderConfig() {
16
+ let cmd = '';
17
+ /**
18
+ * aldos
19
+ */
20
+ if (this.distro.familyId === 'aldos') {
21
+ if (this.efi) {
22
+ try {
23
+ cmd = `chroot ${this.installTarget} yum install grub2 grub2-efi-x64 efibootmgr} ${this.toNull}`;
24
+ await exec(cmd, this.echo);
25
+ }
26
+ catch (error) {
27
+ await showError(cmd, error);
28
+ }
29
+ }
30
+ else {
31
+ try {
32
+ cmd = `chroot ${this.installTarget} yum install grub2 grub2-pc ${this.toNull}`;
33
+ await exec(cmd, this.echo);
34
+ }
35
+ catch (error) {
36
+ await showError(cmd, error);
37
+ }
38
+ }
39
+ /**
40
+ * alpine
41
+ */
42
+ }
43
+ else if (this.distro.familyId === 'alpine') {
44
+ if (this.efi) {
45
+ try {
46
+ cmd = `chroot ${this.installTarget} apk add grub grub-efi efibootmgr} ${this.toNull}`;
47
+ await exec(cmd, this.echo);
48
+ }
49
+ catch (error) {
50
+ await showError(cmd, error);
51
+ }
52
+ }
53
+ else {
54
+ try {
55
+ cmd = `chroot ${this.installTarget} apk add grub grub-bios ${this.toNull}`;
56
+ await exec(cmd, this.echo);
57
+ }
58
+ catch (error) {
59
+ await showError(cmd, error);
60
+ }
61
+ }
62
+ /**
63
+ * archlinux
64
+ */
65
+ }
66
+ else if (this.distro.familyId === 'archlinux') {
67
+ if (this.efi) {
68
+ try {
69
+ cmd = `chroot ${this.installTarget} pacman -Sy grub efibootmgr} ${this.toNull}`;
70
+ await exec(cmd, this.echo);
71
+ }
72
+ catch (error) {
73
+ await showError(cmd, error);
74
+ }
75
+ }
76
+ else {
77
+ try {
78
+ cmd = `chroot ${this.installTarget} pacman -Sy grub ${this.toNull}`;
79
+ await exec(cmd, this.echo);
80
+ }
81
+ catch (error) {
82
+ await showError(cmd, error);
83
+ }
84
+ }
85
+ /**
86
+ * debian
87
+ */
88
+ }
89
+ else if (this.distro.familyId === 'debian') {
90
+ try {
91
+ cmd = `chroot ${this.installTarget} apt-get update -y ${this.toNull}`;
92
+ await exec(cmd, this.echo);
93
+ }
94
+ catch (error) {
95
+ await showError(cmd, error);
96
+ }
97
+ await exec('sleep 1', this.echo);
98
+ const aptInstallOptions = ' apt install -y --no-upgrade --allow-unauthenticated -o Acquire::gpgv::Options::=--ignore-time-conflict ';
99
+ if (this.efi) {
100
+ try {
101
+ cmd = `chroot ${this.installTarget} ${aptInstallOptions} grub-efi-${Utils.uefiArch()} --allow-unauthenticated ${this.toNull}`;
102
+ await exec(cmd, this.echo);
103
+ }
104
+ catch (error) {
105
+ await showError(cmd, error);
106
+ }
107
+ }
108
+ else {
109
+ try {
110
+ cmd = `chroot ${this.installTarget} ${aptInstallOptions} grub-pc ${this.toNull}`;
111
+ await exec(cmd, this.echo);
112
+ }
113
+ catch (error) {
114
+ await showError(cmd, error);
115
+ }
116
+ }
117
+ /**
118
+ * fedora/openmamba
119
+ */
120
+ }
121
+ else if (this.distro.familyId === 'fedora' || this.distro.familyId === 'openmamba') {
122
+ if (this.efi) {
123
+ try {
124
+ cmd = `chroot ${this.installTarget} dnf install grub2 grub2-efi-x64 efibootmgr} ${this.toNull}`;
125
+ await exec(cmd, this.echo);
126
+ }
127
+ catch (error) {
128
+ await showError(cmd, error);
129
+ }
130
+ }
131
+ else {
132
+ try {
133
+ cmd = `chroot ${this.installTarget} dnf install grub2 grub2-pc ${this.toNull}`;
134
+ await exec(cmd, this.echo);
135
+ }
136
+ catch (error) {
137
+ await showError(cmd, error);
138
+ }
139
+ }
140
+ /**
141
+ * opensuse
142
+ */
143
+ }
144
+ else if (this.distro.familyId === 'opensuse') {
145
+ if (this.efi) {
146
+ try {
147
+ cmd = `chroot ${this.installTarget} zypper install -y grub2 grub2-i386-pc grub2-x86_64-efi- efibootmgr} ${this.toNull}`;
148
+ await exec(cmd, this.echo);
149
+ }
150
+ catch (error) {
151
+ await showError(cmd, error);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ /**
157
+ *
158
+ * @param cmd
159
+ * @param error
160
+ */
161
+ async function showError(cmd, error) {
162
+ console.log('error:', error);
163
+ console.log(cmd);
164
+ await Utils.pressKeyToExit(cmd, true);
165
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/bootloader.ts
3
+ * penguins-eggs v.10.0.0 / 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 bootloader(this: Sequence): Promise<void>;
@@ -0,0 +1,157 @@
1
+ /**
2
+ * ./src/krill/modules/bootloader.ts
3
+ * penguins-eggs v.10.0.0 / 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 Diversion from '../../classes/diversions.js';
10
+ import Utils from '../../classes/utils.js';
11
+ import { exec } from '../../lib/utils.js';
12
+ import fs from 'node:fs';
13
+ import path from 'node:path';
14
+ /**
15
+ *
16
+ * @param this
17
+ */
18
+ export default async function bootloader() {
19
+ /**
20
+ * GRUB
21
+ */
22
+ let grubName = Diversion.grubName(this.distro.familyId);
23
+ let cmd = `chroot ${this.installTarget} ${grubName}-install ${this.partitions.installationDevice} ${this.toNull}`;
24
+ try {
25
+ await exec(cmd, this.echo);
26
+ }
27
+ catch (error) {
28
+ await showError(cmd, error);
29
+ }
30
+ cmd = `chroot ${this.installTarget} ${grubName}-mkconfig -o /boot/${grubName}/grub.cfg ${this.toNull}`;
31
+ try {
32
+ await exec(cmd, this.echo);
33
+ }
34
+ catch (error) {
35
+ await showError(cmd, error);
36
+ }
37
+ /**
38
+ * create entries in /boot/efi/loader/entries
39
+ * cp vmlinuz initrams in /boot/efi
40
+ */
41
+ // update boot/loader/entries/
42
+ const pathEntries = path.join(this.installTarget, '/boot/loader/entries/');
43
+ if (fs.existsSync(pathEntries)) {
44
+ const uuid = Utils.uuid(this.devices.root.name);
45
+ const machineId = fs.readFileSync(path.join(this.installTarget, '/etc/machine-id'), 'utf-8').trim();
46
+ await renameLoaderEntries(pathEntries, machineId);
47
+ await updateLoaderEntries(pathEntries, machineId, uuid);
48
+ }
49
+ /**
50
+ * SYSTEMD-BOOT
51
+ */
52
+ if (Diversion.isSystemDBoot(this.distro.familyId, this.efi)) {
53
+ // bootctl install
54
+ await exec(`chroot ${this.installTarget} bootctl --path /boot/efi/ install`, this.echo);
55
+ let vmlinuz = path.basename(Utils.vmlinuz());
56
+ let initrdImg = path.basename(Utils.initrdImg());
57
+ await exec(`cp /boot/${vmlinuz} ${this.installTarget}/boot/efi`, this.echo);
58
+ await exec(`cp /boot/${initrdImg} ${this.installTarget}/boot/efi`, this.echo);
59
+ // create entries
60
+ let content = ``;
61
+ content += `title Linux\n`;
62
+ content += `linux /${vmlinuz}\n`;
63
+ content += `initrd /${initrdImg}\n`;
64
+ content += `options root=${this.devices.root.name} rw\n`;
65
+ await exec(`mkdir ${this.installTarget}/boot/efi/loader/entries/ -p`);
66
+ fs.writeFileSync(`${this.installTarget}/boot/efi/loader/entries/linux.conf`, content);
67
+ // bootctl update
68
+ await exec(`chroot ${this.installTarget} bootctl update`, this.echo);
69
+ }
70
+ }
71
+ /**
72
+ *
73
+ * @param directoryPath
74
+ * @param machineId
75
+ */
76
+ async function renameLoaderEntries(directoryPath, machineId) {
77
+ const files = fs.readdirSync(directoryPath);
78
+ if (files.length > 0) {
79
+ for (const file of files) {
80
+ if (file.length > 32) {
81
+ const oldEntry = path.join(directoryPath, file);
82
+ let current = file.substring(32);
83
+ current = machineId + current;
84
+ const newEntry = path.join(directoryPath, current);
85
+ const cmd = `mv ${oldEntry} ${newEntry}`;
86
+ try {
87
+ await exec(cmd);
88
+ }
89
+ catch (error) {
90
+ await showError(cmd, error);
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ *
98
+ * @param directoryPath
99
+ * @param newUUID
100
+ */
101
+ async function updateLoaderEntries(directoryPath, machineId, newUUID) {
102
+ const files = fs.readdirSync(directoryPath);
103
+ if (files.length > 0) {
104
+ for (const file of files) {
105
+ const filePath = path.join(directoryPath, file);
106
+ let source = fs.readFileSync(filePath, 'utf8');
107
+ let lines = source.split('\n');
108
+ let content = '';
109
+ for (let line of lines) {
110
+ /**
111
+ * REPLACE root=UUID=
112
+ */
113
+ if (line.includes('root=UUID=')) {
114
+ const at = line.indexOf('root=UUID=');
115
+ const start = line.substring(0, at + 10);
116
+ const stop = line.substring(at + 10 + 36);
117
+ line = start + newUUID + stop;
118
+ }
119
+ /**
120
+ * REMOVE resume=UUID=
121
+ */
122
+ if (line.includes('resume=UUID=')) {
123
+ const at = line.indexOf('resume=UUID=');
124
+ const start = line.substring(0, at - 1);
125
+ line = start;
126
+ }
127
+ /**
128
+ * REPLACE machineId
129
+ */
130
+ // version 0-rescue-
131
+ if (line.includes('version 0-rescue-')) {
132
+ line = `version 0-rescue-${machineId}`;
133
+ }
134
+ // linux /boot/vmlinuz-0-rescue-
135
+ if (line.includes('vmlinuz-0-rescue-')) {
136
+ line = `vmlinuz-0-rescue-${machineId}`;
137
+ }
138
+ // initrd /boot/initramfs-0-rescue-
139
+ if (line.includes('initrd /boot/initramfs-0-rescue-')) {
140
+ line = `initrd /boot/initramfs-0-rescue-${machineId}.img`;
141
+ }
142
+ content += line + '\n';
143
+ }
144
+ fs.writeFileSync(filePath, content);
145
+ }
146
+ }
147
+ }
148
+ /**
149
+ *
150
+ * @param cmd
151
+ * @param error
152
+ */
153
+ async function showError(cmd, error) {
154
+ console.log('error:', error);
155
+ console.log(cmd);
156
+ await Utils.pressKeyToExit(cmd, true);
157
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ./src/krill/modules/change-password.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ * changePassword
12
+ * @param name
13
+ * @param newPassword
14
+ */
15
+ export default function changePassword(this: Sequence, name?: string, newPassword?: string): Promise<void>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * ./src/krill/modules/change-password.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ /**
11
+ * changePassword
12
+ * @param name
13
+ * @param newPassword
14
+ */
15
+ export default async function changePassword(name = 'live', newPassword = 'evolution') {
16
+ const cmd = `echo ${name}:${newPassword} | chroot ${this.installTarget} chpasswd ${this.toNull}`;
17
+ await exec(cmd, this.echo);
18
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/del-live-user.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ * delUser
12
+ * va corretto con users.conf di calamares
13
+ */
14
+ export default function delLiveUser(this: Sequence): Promise<void>;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ./src/krill/modules/del-live-user.ts
3
+ * penguins-eggs v.10.0.0 / 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 Utils from '../../classes/utils.js';
10
+ import { exec } from '../../lib/utils.js';
11
+ /**
12
+ * delUser
13
+ * va corretto con users.conf di calamares
14
+ */
15
+ export default async function delLiveUser() {
16
+ if (Utils.isLive()) {
17
+ const user = this.settings.config.user_opt;
18
+ let userExists = false;
19
+ try {
20
+ const cmd = `#!/bin/sh\ngetent passwd "${user}" > /dev/null`;
21
+ await exec(cmd, Utils.setEcho(this.verbose));
22
+ userExists = true;
23
+ }
24
+ catch (error) {
25
+ console.log(error);
26
+ }
27
+ finally {
28
+ if (userExists) {
29
+ let cmd = `chroot ${this.installTarget} deluser --remove-home ${user} ${this.toNull}`;
30
+ if (this.distro.familyId === 'archlinux' ||
31
+ this.distro.familyId === 'fedora' ||
32
+ this.distro.familyId === 'opensuse') {
33
+ cmd = `chroot ${this.installTarget} sudo userdel -r ${user} ${this.toNull}`;
34
+ }
35
+ await exec(cmd, this.echo);
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/fstab.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ * fstab()
12
+ * @param devices
13
+ */
14
+ export default function fstab(this: Sequence, installDevice: string, crypted?: boolean): Promise<void>;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * ./src/krill/modules/fstab.ts
3
+ * penguins-eggs v.10.0.0 / 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 shx from 'shelljs';
10
+ import Pacman from '../../classes/pacman.js';
11
+ import Utils from '../../classes/utils.js';
12
+ /**
13
+ * fstab()
14
+ * @param devices
15
+ */
16
+ export default async function fstab(installDevice, crypted = false) {
17
+ let text = '';
18
+ /**
19
+ * crypttab
20
+ */
21
+ if (this.partitions.installationMode === 'full-encrypted') {
22
+ const crypttab = this.installTarget + '/etc/crypttab';
23
+ text += '# /etc/crypttab: mappings for encrypted partitions.\n';
24
+ text += '#\n';
25
+ text += '# Each mapped device will be created in /dev/mapper, so your /etc/fstab\n';
26
+ text += '# should use the /dev/mapper/<name> paths for encrypted devices.\n';
27
+ text += '#\n';
28
+ text += '# See crypttab(5) for the supported syntax.\n';
29
+ text += '#\n';
30
+ text += '# NOTE: You need not list your root (/) partition here, but it must be set up\n';
31
+ text += '# beforehand by the initramfs (/etc/mkinitcpio.conf). The same applies\n';
32
+ text += '# to encrypted swap, which should be set up with mkinitcpio-openswap\n';
33
+ text += '# for resume support.\n';
34
+ text += '#\n';
35
+ text += '# <name> <device> <password> <options>\n';
36
+ text += `#swap_crypted was ${this.devices.swap.cryptedFrom}\n`;
37
+ text += `swap_crypted UUID=${Utils.uuid(this.devices.swap.cryptedFrom)} none luks,discard\n`;
38
+ text += `#root_crypted was ${this.devices.root.cryptedFrom}\n`;
39
+ text += `root_crypted UUID=${Utils.uuid(this.devices.root.cryptedFrom)} none luks,swap\n`;
40
+ Utils.write(crypttab, text);
41
+ }
42
+ /**
43
+ * fstab
44
+ */
45
+ if (!Pacman.packageIsInstalled('btrfs-progs')) {
46
+ this.partitions.filesystemType === 'ext4';
47
+ }
48
+ const fstab = this.installTarget + '/etc/fstab';
49
+ let mountOptsRoot = '';
50
+ let mountOptsBoot = '';
51
+ let mountOptsData = '';
52
+ let mountOptsEfi = '';
53
+ let mountOptsSwap = '';
54
+ if (this.partitions.filesystemType === 'ext4') {
55
+ if (await isRotational(installDevice)) {
56
+ mountOptsRoot = 'defaults,relatime 0 1';
57
+ mountOptsBoot = 'defaults,relatime 0 1';
58
+ mountOptsData = 'defaults,relatime 0 1';
59
+ mountOptsEfi = 'defaults,relatime 0 2';
60
+ mountOptsSwap = 'defaults,relatime 0 2';
61
+ }
62
+ else {
63
+ mountOptsRoot = 'defaults,noatime 0 1';
64
+ mountOptsBoot = 'defaults,noatime 0 1';
65
+ mountOptsData = 'defaults,noatime 0 1';
66
+ mountOptsEfi = 'defaults,noatime 0 2';
67
+ mountOptsSwap = 'defaults,noatime 0 2';
68
+ }
69
+ text = '';
70
+ text += `# ${this.devices.root.name} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
71
+ text += `UUID=${Utils.uuid(this.devices.root.name)} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
72
+ if (this.devices.boot.name !== 'none') {
73
+ text += `# ${this.devices.boot.name} ${this.devices.boot.mountPoint} ${this.devices.boot.fsType} ${mountOptsBoot}\n`;
74
+ text += `UUID=${Utils.uuid(this.devices.boot.name)} ${this.devices.boot.mountPoint} ${this.devices.root.fsType} ${mountOptsBoot}\n`;
75
+ }
76
+ if (this.devices.data.name !== 'none') {
77
+ text += `# ${this.devices.data.name} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
78
+ text += `UUID=${Utils.uuid(this.devices.data.name)} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
79
+ }
80
+ if (this.efi) {
81
+ text += `# ${this.devices.efi.name} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
82
+ text += `UUID=${Utils.uuid(this.devices.efi.name)} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
83
+ }
84
+ text += `# ${this.devices.swap.name} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
85
+ text += `UUID=${Utils.uuid(this.devices.swap.name)} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
86
+ }
87
+ else if (this.partitions.filesystemType === 'btrfs') {
88
+ const base = '/ btrfs subvol=/@,defaults 0 0';
89
+ const snapshots = '/.snapshots btrfs subvol=/@snapshots,defaults 0 0';
90
+ const home = '/home btrfs subvol=/@home,defaults 0 0';
91
+ const root = '/root btrfs subvol=/@root,defaults 0 0';
92
+ const var_log = '/var/log btrfs subvol=/@var@log,defaults 0 0';
93
+ const var_lib_AccountsService = '/var/lib/AccountsService btrfs subvol=/@var@lib@AccountsService,defaults 0 0';
94
+ const var_lib_blueman = '/var/lib/blueman btrfs subvol=/@var@lib@blueman,defaults 0 0';
95
+ const tmp = '/tmp btrfs subvol=/@tmp,defaults 0 0';
96
+ text += `# ${this.devices.root.name} btrfs ${this.devices.root.mountPoint} subvol\n`;
97
+ text += `UUID=${Utils.uuid(this.devices.root.name)} ${base}\n`;
98
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${snapshots}\n`;
99
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${home}\n`;
100
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${root}\n`;
101
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_log}\n`;
102
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_lib_AccountsService}\n`;
103
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_lib_blueman}\n`;
104
+ text += `# UUID=${Utils.uuid(this.devices.root.name)} ${tmp}\n`;
105
+ }
106
+ //console.log(text)
107
+ //Utils.pressKeyToExit()
108
+ Utils.write(fstab, text);
109
+ }
110
+ /**
111
+ * isRotational
112
+ * @param device
113
+ */
114
+ async function isRotational(device) {
115
+ device = device.slice(4);
116
+ let response;
117
+ let retVal = false;
118
+ response = shx.exec(`cat /sys/block/${device}/queue/rotational`, { silent: true }).stdout.trim();
119
+ if (response === '1') {
120
+ retVal = true;
121
+ }
122
+ return retVal;
123
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ./src/krill/modules/grubcfg.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ * grubcfg
12
+ * - open /etc/default/grub
13
+ * - find GRUB_CMDLINE_LINUX_DEFAULT=
14
+ * - replace with GRUB_CMDLINE_LINUX_DEFAULT=
15
+ * 's/GRUB_CMDLINE_LINUX_DEFAULT=.*$/GRUB_CMDLINE_LINUX_DEFAULT=/g'
16
+ */
17
+ export default function grubcfg(this: Sequence): Promise<void>;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ./src/krill/modules/grubcfg.ts
3
+ * penguins-eggs v.10.0.0 / 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 Utils from '../../classes/utils.js';
11
+ /**
12
+ * grubcfg
13
+ * - open /etc/default/grub
14
+ * - find GRUB_CMDLINE_LINUX_DEFAULT=
15
+ * - replace with GRUB_CMDLINE_LINUX_DEFAULT=
16
+ * 's/GRUB_CMDLINE_LINUX_DEFAULT=.*$/GRUB_CMDLINE_LINUX_DEFAULT=/g'
17
+ */
18
+ export default async function grubcfg() {
19
+ const file = `${this.installTarget}/etc/default/grub`;
20
+ let content = '';
21
+ const grubs = fs.readFileSync(file, 'utf8').split('\n');
22
+ for (let i = 0; i < grubs.length; i++) {
23
+ if (grubs[i].includes('GRUB_CMDLINE_LINUX_DEFAULT=')) {
24
+ grubs[i] = this.partitions.installationMode === 'full-encrypted' ? `GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=${Utils.uuid(this.devices.swap.name)}"` : `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=${Utils.uuid(this.devices.swap.name)}"`;
25
+ }
26
+ content += grubs[i] + '\n';
27
+ }
28
+ fs.writeFileSync(file, content, 'utf-8');
29
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ./src/krill/modules/hostnames.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ * hostname
12
+ */
13
+ export default function hostname(this: Sequence, domain?: string): Promise<void>;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * ./src/krill/modules/hostnames.ts
3
+ * penguins-eggs v.10.0.0 / 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
+ * hostname
12
+ */
13
+ export default async function hostname(domain = '') {
14
+ const { hostname } = this.users;
15
+ /**
16
+ * hostname
17
+ */
18
+ {
19
+ const file = this.installTarget + '/etc/hostname';
20
+ const text = hostname;
21
+ fs.writeFileSync(file, text);
22
+ }
23
+ /**
24
+ * hosts
25
+ */
26
+ {
27
+ const file = this.installTarget + '/etc/hosts';
28
+ if (domain === '(none)') {
29
+ domain = '';
30
+ }
31
+ let text = '127.0.0.1 localhost localhost.localdomain\n';
32
+ if (this.network.addressType === 'static') {
33
+ text += `${this.network.address} ${hostname} ${hostname}${domain} pvelocalhost pvelocalhost.pvelocaldomain\n`;
34
+ }
35
+ else if (domain === '') {
36
+ text += `127.0.1.1 ${hostname}\n`;
37
+ }
38
+ else {
39
+ text += `127.0.1.1 ${hostname} ${hostname}${domain}\n`;
40
+ }
41
+ text += '# The following lines are desirable for IPv6 capable hosts\n';
42
+ text += ':: 1 ip6 - localhost ip6 - loopback\n';
43
+ text += 'fe00:: 0 ip6 - localnet\n';
44
+ text += 'ff00:: 0 ip6 - mcastprefix\n';
45
+ text += 'ff02:: 1 ip6 - allnodes\n';
46
+ text += 'ff02:: 2 ip6 - allrouters\n';
47
+ text += 'ff02:: 3 ip6 - allhosts\n';
48
+ fs.writeFileSync(file, text);
49
+ }
50
+ }