penguins-eggs 25.10.23 → 25.10.24
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.
- package/.oclif.manifest.json +17 -3
- package/README.md +32 -30
- package/README.pdf +1008 -1045
- package/addons/eggs/theme/livecd/{grub.theme.cfg → full.grub.theme.cfg} +1 -1
- package/addons/eggs/theme/livecd/{isolinux.theme.cfg → full.isolinux.theme.cfg} +1 -1
- package/addons/eggs/theme/livecd/generic-splash.png +0 -0
- package/addons/eggs/theme/livecd/generic.grub.main.cfg +29 -0
- package/addons/eggs/theme/livecd/generic.grub.theme.cfg +67 -0
- package/addons/eggs/theme/livecd/generic.isolinux.main.cfg +34 -0
- package/addons/eggs/theme/livecd/generic.isolinux.theme.cfg +34 -0
- package/addons/eggs/theme/livecd/simple.grub.main.cfg +29 -0
- package/addons/eggs/theme/livecd/simple.grub.theme.cfg +67 -0
- package/addons/eggs/theme/livecd/{isolinux.main.simple.cfg → simple.isolinux.main.cfg} +1 -1
- package/addons/eggs/theme/livecd/simple.isolinux.theme.cfg +47 -0
- package/dist/classes/bleach.d.ts +37 -0
- package/dist/classes/bleach.js +148 -0
- package/dist/classes/cli-autologin.d.ts +52 -0
- package/dist/classes/cli-autologin.js +252 -0
- package/dist/classes/compressors.d.ts +54 -0
- package/dist/classes/compressors.js +109 -0
- package/dist/classes/daddy.d.ts +26 -0
- package/dist/classes/daddy.js +175 -0
- package/dist/classes/distro.d.ts +32 -0
- package/dist/classes/distro.js +363 -0
- package/dist/classes/diversions.d.ts +53 -0
- package/dist/classes/diversions.js +131 -0
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +85 -0
- package/dist/classes/incubation/customize/customize-partitions.d.ts +4 -0
- package/dist/classes/incubation/customize/customize-partitions.js +29 -0
- package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
- package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -0
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
- package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
- package/dist/classes/incubation/fisherman-helper/settings.js +116 -0
- package/dist/classes/incubation/fisherman.d.ts +71 -0
- package/dist/classes/incubation/fisherman.js +281 -0
- package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/alpine.js +78 -0
- package/dist/classes/incubation/incubator.d/archlinux.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/archlinux.js +82 -0
- package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/bionic.js +83 -0
- package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/buster.js +101 -0
- package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/fedora.js +81 -0
- package/dist/classes/incubation/incubator.d/focal.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/focal.js +85 -0
- package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
- package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/noble.js +102 -0
- package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
- package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
- package/dist/classes/incubation/incubator.d/trixie.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/trixie.js +98 -0
- package/dist/classes/incubation/incubator.d.ts +48 -0
- package/dist/classes/incubation/incubator.js +378 -0
- package/dist/classes/incubation/installer.d.ts +13 -0
- package/dist/classes/incubation/installer.js +52 -0
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +287 -0
- package/dist/classes/locales.d.ts +21 -0
- package/dist/classes/locales.js +77 -0
- package/dist/classes/network.d.ts +37 -0
- package/dist/classes/network.js +98 -0
- package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
- package/dist/classes/ovary.d/bind-live-fs.js +185 -0
- package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
- package/dist/classes/ovary.d/bind-vfs.js +37 -0
- package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
- package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
- package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
- package/dist/classes/ovary.d/edit-live-fs.js +239 -0
- package/dist/classes/ovary.d/fertilization.d.ts +12 -0
- package/dist/classes/ovary.d/fertilization.js +53 -0
- package/dist/classes/ovary.d/finished.d.ts +13 -0
- package/dist/classes/ovary.d/finished.js +40 -0
- package/dist/classes/ovary.d/initrd.d.ts +21 -0
- package/dist/classes/ovary.d/initrd.js +96 -0
- package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
- package/dist/classes/ovary.d/kernel-copy.js +22 -0
- package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
- package/dist/classes/ovary.d/live-create-structure.js +70 -0
- package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
- package/dist/classes/ovary.d/luks-get-password.js +58 -0
- package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
- package/dist/classes/ovary.d/luks-home-support.js +75 -0
- package/dist/classes/ovary.d/luks-home.d.ts +15 -0
- package/dist/classes/ovary.d/luks-home.js +152 -0
- package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
- package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
- package/dist/classes/ovary.d/luks-root.d.ts +15 -0
- package/dist/classes/ovary.d/luks-root.js +151 -0
- package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
- package/dist/classes/ovary.d/make-dot-disk.js +71 -0
- package/dist/classes/ovary.d/make-efi.d.ts +14 -0
- package/dist/classes/ovary.d/make-efi.js +290 -0
- package/dist/classes/ovary.d/make-iso.d.ts +13 -0
- package/dist/classes/ovary.d/make-iso.js +45 -0
- package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
- package/dist/classes/ovary.d/make-squashfs.js +111 -0
- package/dist/classes/ovary.d/merged.d.ts +27 -0
- package/dist/classes/ovary.d/merged.js +78 -0
- package/dist/classes/ovary.d/produce.d.ts +23 -0
- package/dist/classes/ovary.d/produce.js +348 -0
- package/dist/classes/ovary.d/rexec.d.ts +13 -0
- package/dist/classes/ovary.d/rexec.js +34 -0
- package/dist/classes/ovary.d/syslinux.d.ts +12 -0
- package/dist/classes/ovary.d/syslinux.js +95 -0
- package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
- package/dist/classes/ovary.d/user-create-live.js +97 -0
- package/dist/classes/ovary.d/users-remove.d.ts +9 -0
- package/dist/classes/ovary.d/users-remove.js +38 -0
- package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
- package/dist/classes/ovary.d/xorriso-command.js +120 -0
- package/dist/classes/ovary.d.ts +105 -0
- package/dist/classes/ovary.js +116 -0
- package/dist/classes/pacman.d/alpine.d.ts +56 -0
- package/dist/classes/pacman.d/alpine.js +167 -0
- package/dist/classes/pacman.d/archlinux.d.ts +62 -0
- package/dist/classes/pacman.d/archlinux.js +128 -0
- package/dist/classes/pacman.d/debian.d.ts +65 -0
- package/dist/classes/pacman.d/debian.js +143 -0
- package/dist/classes/pacman.d/fedora.d.ts +53 -0
- package/dist/classes/pacman.d/fedora.js +107 -0
- package/dist/classes/pacman.d/openmamba.d.ts +52 -0
- package/dist/classes/pacman.d/openmamba.js +106 -0
- package/dist/classes/pacman.d/opensuse.d.ts +53 -0
- package/dist/classes/pacman.d/opensuse.js +109 -0
- package/dist/classes/pacman.d.ts +139 -0
- package/dist/classes/pacman.js +683 -0
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +52 -0
- package/dist/classes/pxe.d.ts +76 -0
- package/dist/classes/pxe.js +353 -0
- package/dist/classes/settings.d.ts +52 -0
- package/dist/classes/settings.js +185 -0
- package/dist/classes/sources_list.d.ts +28 -0
- package/dist/classes/sources_list.js +89 -0
- package/dist/classes/systemctl.d.ts +47 -0
- package/dist/classes/systemctl.js +86 -0
- package/dist/classes/tailor.d.ts +50 -0
- package/dist/classes/tailor.js +563 -0
- package/dist/classes/tools.d.ts +26 -0
- package/dist/classes/tools.js +50 -0
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +143 -0
- package/dist/classes/utils.d/kernel.d.ts +39 -0
- package/dist/classes/utils.d/kernel.js +206 -0
- package/dist/classes/utils.d.ts +330 -0
- package/dist/classes/utils.js +968 -0
- package/dist/classes/xdg.d.ts +45 -0
- package/dist/classes/xdg.js +337 -0
- package/dist/classes/yolk.d.ts +33 -0
- package/dist/classes/yolk.js +114 -0
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +33 -0
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +95 -0
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +112 -0
- package/dist/commands/config.d.ts +35 -0
- package/dist/commands/config.js +120 -0
- package/dist/commands/cuckoo.d.ts +17 -0
- package/dist/commands/cuckoo.js +61 -0
- package/dist/commands/dad.d.ts +21 -0
- package/dist/commands/dad.js +47 -0
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +55 -0
- package/dist/commands/export/pkg.d.ts +29 -0
- package/dist/commands/export/pkg.js +173 -0
- package/dist/commands/export/tarballs.d.ts +27 -0
- package/dist/commands/export/tarballs.js +79 -0
- package/dist/commands/install.d.ts +39 -0
- package/dist/commands/install.js +113 -0
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +50 -0
- package/dist/commands/love.d.ts +25 -0
- package/dist/commands/love.js +118 -0
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +30 -0
- package/dist/commands/pods.d.ts +22 -0
- package/dist/commands/pods.js +92 -0
- package/dist/commands/produce.d.ts +37 -0
- package/dist/commands/produce.js +232 -0
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +31 -0
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +37 -0
- package/dist/commands/tools/repo.d.ts +31 -0
- package/dist/commands/tools/repo.js +246 -0
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +44 -0
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +70 -0
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +45 -0
- package/dist/commands/update.d.ts +46 -0
- package/dist/commands/update.js +238 -0
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +52 -0
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +125 -0
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +97 -0
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +84 -0
- package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
- package/dist/dhcpd-proxy/classes/packet.js +124 -0
- package/dist/dhcpd-proxy/index.d.ts +4 -0
- package/dist/dhcpd-proxy/index.js +4 -0
- package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
- package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
- package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
- package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
- package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
- package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
- package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
- package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
- package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
- package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
- package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
- package/dist/dhcpd-proxy/lib/utils.js +255 -0
- package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
- package/dist/dhcpd-proxy/simple-proxy.js +118 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
- package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
- package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
- package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
- package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
- package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
- package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
- package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
- package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
- package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
- package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
- package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
- package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
- package/dist/interfaces/calamares/i-calamares-settings.js +1 -0
- package/dist/interfaces/i-addons.d.ts +12 -0
- package/dist/interfaces/i-addons.js +8 -0
- package/dist/interfaces/i-analyze.d.ts +17 -0
- package/dist/interfaces/i-analyze.js +17 -0
- package/dist/interfaces/i-app.d.ts +14 -0
- package/dist/interfaces/i-app.js +8 -0
- package/dist/interfaces/i-config-tools.d.ts +15 -0
- package/dist/interfaces/i-config-tools.js +8 -0
- package/dist/interfaces/i-devices.d.ts +20 -0
- package/dist/interfaces/i-devices.js +8 -0
- package/dist/interfaces/i-distro.d.ts +23 -0
- package/dist/interfaces/i-distro.js +8 -0
- package/dist/interfaces/i-drive-list.d.ts +33 -0
- package/dist/interfaces/i-drive-list.js +8 -0
- package/dist/interfaces/i-eggs-config.d.ts +32 -0
- package/dist/interfaces/i-eggs-config.js +8 -0
- package/dist/interfaces/i-excludes.d.ts +14 -0
- package/dist/interfaces/i-excludes.js +8 -0
- package/dist/interfaces/i-exec.d.ts +11 -0
- package/dist/interfaces/i-exec.js +8 -0
- package/dist/interfaces/i-initrd.d.ts +13 -0
- package/dist/interfaces/i-initrd.js +8 -0
- package/dist/interfaces/i-install.d.ts +16 -0
- package/dist/interfaces/i-install.js +8 -0
- package/dist/interfaces/i-installer.d.ts +17 -0
- package/dist/interfaces/i-installer.js +8 -0
- package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
- package/dist/interfaces/i-luks-passphrase.js +8 -0
- package/dist/interfaces/i-materia.d.ts +36 -0
- package/dist/interfaces/i-materia.js +8 -0
- package/dist/interfaces/i-net.d.ts +16 -0
- package/dist/interfaces/i-net.js +8 -0
- package/dist/interfaces/i-os-release.d.ts +5 -0
- package/dist/interfaces/i-os-release.js +1 -0
- package/dist/interfaces/i-packages.d.ts +16 -0
- package/dist/interfaces/i-packages.js +8 -0
- package/dist/interfaces/i-partitions.d.ts +16 -0
- package/dist/interfaces/i-partitions.js +8 -0
- package/dist/interfaces/i-pxe.d.ts +45 -0
- package/dist/interfaces/i-pxe.js +1 -0
- package/dist/interfaces/i-remix.d.ts +21 -0
- package/dist/interfaces/i-remix.js +8 -0
- package/dist/interfaces/i-settings.d.ts +33 -0
- package/dist/interfaces/i-settings.js +8 -0
- package/dist/interfaces/i-user.d.ts +14 -0
- package/dist/interfaces/i-user.js +8 -0
- package/dist/interfaces/i-workdir.d.ts +14 -0
- package/dist/interfaces/i-workdir.js +8 -0
- package/dist/interfaces/i-xkb-model.d.ts +24 -0
- package/dist/interfaces/i-xkb-model.js +8 -0
- package/dist/interfaces/index.d.ts +26 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/krill/classes/cfs.d.ts +17 -0
- package/dist/krill/classes/cfs.js +39 -0
- package/dist/krill/classes/krill_enums.d.ts +37 -0
- package/dist/krill/classes/krill_enums.js +41 -0
- package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
- package/dist/krill/classes/prepare.d/confirm.js +30 -0
- package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
- package/dist/krill/classes/prepare.d/keyboard.js +62 -0
- package/dist/krill/classes/prepare.d/location.d.ts +17 -0
- package/dist/krill/classes/prepare.d/location.js +59 -0
- package/dist/krill/classes/prepare.d/network.d.ts +14 -0
- package/dist/krill/classes/prepare.d/network.js +68 -0
- package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
- package/dist/krill/classes/prepare.d/partitions.js +86 -0
- package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
- package/dist/krill/classes/prepare.d/summary.js +72 -0
- package/dist/krill/classes/prepare.d/users.d.ts +6 -0
- package/dist/krill/classes/prepare.d/users.js +63 -0
- package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
- package/dist/krill/classes/prepare.d/welcome.js +30 -0
- package/dist/krill/classes/prepare.d.ts +89 -0
- package/dist/krill/classes/prepare.js +319 -0
- package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
- package/dist/krill/classes/sequence.d/add_user.js +77 -0
- package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
- package/dist/krill/classes/sequence.d/bootloader.js +117 -0
- package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
- package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
- package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
- package/dist/krill/classes/sequence.d/change_password.js +18 -0
- package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
- package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
- package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
- package/dist/krill/classes/sequence.d/fstab.js +177 -0
- package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
- package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
- package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
- package/dist/krill/classes/sequence.d/hostname.js +50 -0
- package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
- package/dist/krill/classes/sequence.d/initramfs.js +54 -0
- package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
- package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
- package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
- package/dist/krill/classes/sequence.d/locale.js +91 -0
- package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
- package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
- package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
- package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
- package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
- package/dist/krill/classes/sequence.d/machine_id.js +33 -0
- package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
- package/dist/krill/classes/sequence.d/mkfs.js +88 -0
- package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
- package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
- package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
- package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
- package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
- package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
- package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
- package/dist/krill/classes/sequence.d/packages.js +111 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
- package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
- package/dist/krill/classes/sequence.d/partition.js +84 -0
- package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
- package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
- package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
- package/dist/krill/classes/sequence.d/umount.js +28 -0
- package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
- package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
- package/dist/krill/classes/sequence.d.ts +134 -0
- package/dist/krill/classes/sequence.js +400 -0
- package/dist/krill/components/finished.d.ts +16 -0
- package/dist/krill/components/finished.js +56 -0
- package/dist/krill/components/information.d.ts +8 -0
- package/dist/krill/components/information.js +162 -0
- package/dist/krill/components/install.d.ts +15 -0
- package/dist/krill/components/install.js +60 -0
- package/dist/krill/components/keyboard.d.ts +16 -0
- package/dist/krill/components/keyboard.js +54 -0
- package/dist/krill/components/location.d.ts +16 -0
- package/dist/krill/components/location.js +59 -0
- package/dist/krill/components/network.d.ts +19 -0
- package/dist/krill/components/network.js +65 -0
- package/dist/krill/components/partitions.d.ts +18 -0
- package/dist/krill/components/partitions.js +89 -0
- package/dist/krill/components/steps.d.ts +13 -0
- package/dist/krill/components/steps.js +148 -0
- package/dist/krill/components/summary.d.ts +25 -0
- package/dist/krill/components/summary.js +77 -0
- package/dist/krill/components/title.d.ts +11 -0
- package/dist/krill/components/title.js +35 -0
- package/dist/krill/components/users.d.ts +24 -0
- package/dist/krill/components/users.js +80 -0
- package/dist/krill/components/welcome.d.ts +13 -0
- package/dist/krill/components/welcome.js +63 -0
- package/dist/krill/interfaces/i_krill.d.ts +44 -0
- package/dist/krill/interfaces/i_krill.js +8 -0
- package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
- package/dist/krill/interfaces/i_krill_config.js +8 -0
- package/dist/krill/lib/get_address.d.ts +8 -0
- package/dist/krill/lib/get_address.js +23 -0
- package/dist/krill/lib/get_dns.d.ts +8 -0
- package/dist/krill/lib/get_dns.js +23 -0
- package/dist/krill/lib/get_domain.d.ts +8 -0
- package/dist/krill/lib/get_domain.js +23 -0
- package/dist/krill/lib/get_gateway.d.ts +8 -0
- package/dist/krill/lib/get_gateway.js +23 -0
- package/dist/krill/lib/get_hostname.d.ts +8 -0
- package/dist/krill/lib/get_hostname.js +23 -0
- package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
- package/dist/krill/lib/get_luks_passphrase.js +32 -0
- package/dist/krill/lib/get_netmask.d.ts +8 -0
- package/dist/krill/lib/get_netmask.js +23 -0
- package/dist/krill/lib/get_password.d.ts +8 -0
- package/dist/krill/lib/get_password.js +36 -0
- package/dist/krill/lib/get_userfullname.d.ts +8 -0
- package/dist/krill/lib/get_userfullname.js +23 -0
- package/dist/krill/lib/get_username.d.ts +8 -0
- package/dist/krill/lib/get_username.js +23 -0
- package/dist/krill/lib/select_address_type.d.ts +8 -0
- package/dist/krill/lib/select_address_type.js +24 -0
- package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
- package/dist/krill/lib/select_filesystem_type.js +40 -0
- package/dist/krill/lib/select_installation_device.d.ts +8 -0
- package/dist/krill/lib/select_installation_device.js +40 -0
- package/dist/krill/lib/select_installation_mode.d.ts +9 -0
- package/dist/krill/lib/select_installation_mode.js +25 -0
- package/dist/krill/lib/select_interface.d.ts +8 -0
- package/dist/krill/lib/select_interface.js +24 -0
- package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_layout.js +36 -0
- package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_model.js +34 -0
- package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_option.js +34 -0
- package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_variant.js +35 -0
- package/dist/krill/lib/select_languages.d.ts +8 -0
- package/dist/krill/lib/select_languages.js +28 -0
- package/dist/krill/lib/select_regions.d.ts +8 -0
- package/dist/krill/lib/select_regions.js +24 -0
- package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
- package/dist/krill/lib/select_replaced_partition.js +31 -0
- package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
- package/dist/krill/lib/select_user_swap_choice.js +35 -0
- package/dist/krill/lib/select_zones.d.ts +8 -0
- package/dist/krill/lib/select_zones.js +518 -0
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +61 -0
- package/dist/lib/utils.d.ts +19 -0
- package/dist/lib/utils.js +65 -0
- package/package.json +3 -3
- package/scripts/_eggs +3 -1
- package/scripts/eggs.bash +2 -2
- /package/addons/eggs/theme/livecd/{grub.main.cfg → full.grub.main.cfg} +0 -0
- /package/addons/eggs/theme/livecd/{isolinux.main.full.cfg → full.isolinux.main.cfg} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
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 Utils from '../../../classes/utils.js';
|
|
10
|
+
import { exec } from '../../../lib/utils.js';
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @param mountpoint
|
|
14
|
+
*/
|
|
15
|
+
export default async function umount(mountPoint = '') {
|
|
16
|
+
let message = 'umount: ' + mountPoint;
|
|
17
|
+
if (Utils.isMountpoint(mountPoint)) {
|
|
18
|
+
let cmd = `umount ${mountPoint} ${this.toNull}`;
|
|
19
|
+
try {
|
|
20
|
+
await exec(cmd, this.echo);
|
|
21
|
+
await exec('sleep 1', this.echo);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
message += cmd + JSON.stringify(error);
|
|
25
|
+
await Utils.pressKeyToExit(message, true);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/krill/modules/unpackfs.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
|
+
* unpackfs
|
|
12
|
+
*/
|
|
13
|
+
export default function unpackfs(this: Sequence): Promise<void>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/krill/modules/unpackfs.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 Utils from '../../../classes/utils.js';
|
|
10
|
+
import { exec } from '../../../lib/utils.js';
|
|
11
|
+
/**
|
|
12
|
+
* unpackfs
|
|
13
|
+
*/
|
|
14
|
+
export default async function unpackfs() {
|
|
15
|
+
// const cmd = `unsquashfs -d ${this.installTarget} -f ${this.distro.liveMediumPath}`
|
|
16
|
+
const cmd = `unsquashfs -d ${this.installTarget} -f ${this.distro.liveMediumPath}${this.distro.squashfs} ${this.toNull}`;
|
|
17
|
+
const echoYes = Utils.setEcho(true);
|
|
18
|
+
const echoNo = Utils.setEcho(false);
|
|
19
|
+
await exec(cmd, echoNo);
|
|
20
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sequence - Simple Refactoring
|
|
3
|
+
* ./src/krill/sequence.ts
|
|
4
|
+
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* email: piero.proietti@gmail.com
|
|
7
|
+
* license: MIT
|
|
8
|
+
*/
|
|
9
|
+
import { IRemix, IDistro, INet } from '../../interfaces/index.js';
|
|
10
|
+
import Settings from '../../classes/settings.js';
|
|
11
|
+
import CliAutologin from '../../classes/cli-autologin.js';
|
|
12
|
+
import { IInstaller, IDevices } from '../../interfaces/index.js';
|
|
13
|
+
import { ILocation, IKeyboard, IPartitions, IUsers } from '../interfaces/i_krill.js';
|
|
14
|
+
import partition from './sequence.d/partition.js';
|
|
15
|
+
import biosStandard from './sequence.d/partition.d/bios_standard.js';
|
|
16
|
+
import biosLuks from './sequence.d/partition.d/bios_luks.js';
|
|
17
|
+
import uefiStandard from './sequence.d/partition.d/uefi_standard.js';
|
|
18
|
+
import uefiLuks from './sequence.d/partition.d/uefi_luks.js';
|
|
19
|
+
import { mountFs, umountFs } from './sequence.d/mount_fs.js';
|
|
20
|
+
import { mountVfs, umountVfs } from './sequence.d/mount_vfs.js';
|
|
21
|
+
import unpackfs from './sequence.d/unpackfs.js';
|
|
22
|
+
import machineId from './sequence.d/machine_id.js';
|
|
23
|
+
import fstab from './sequence.d/fstab.js';
|
|
24
|
+
import locale from './sequence.d/locale.js';
|
|
25
|
+
import mKeyboard from './sequence.d/m_keyboard.js';
|
|
26
|
+
import localeCfg from './sequence.d/locale_cfg.js';
|
|
27
|
+
import addUser from './sequence.d/add_user.js';
|
|
28
|
+
import changePassword from './sequence.d/change_password.js';
|
|
29
|
+
import networkCfg from './sequence.d/network_cfg.js';
|
|
30
|
+
import bootloaderConfig from './sequence.d/bootloader_config.js';
|
|
31
|
+
import grubcfg from './sequence.d/grubcfg.js';
|
|
32
|
+
import bootloader from './sequence.d/bootloader.js';
|
|
33
|
+
import packages from './sequence.d/packages.js';
|
|
34
|
+
import removeInstallerLink from './sequence.d/remove_installer_link.js';
|
|
35
|
+
import initramfsCfg from './sequence.d/initramfs_cfg.js';
|
|
36
|
+
import initramfs from './sequence.d/initramfs.js';
|
|
37
|
+
import delLiveUser from './sequence.d/del_live_user.js';
|
|
38
|
+
import umount from './sequence.d/umount.js';
|
|
39
|
+
import mkfs from './sequence.d/mkfs.js';
|
|
40
|
+
import hostname from './sequence.d/hostname.js';
|
|
41
|
+
/**
|
|
42
|
+
* Main Sequence class - Simple Refactoring
|
|
43
|
+
*/
|
|
44
|
+
export default class Sequence {
|
|
45
|
+
partition: typeof partition;
|
|
46
|
+
partitionBiosStandard: typeof biosStandard;
|
|
47
|
+
partitionUefiStandard: typeof uefiStandard;
|
|
48
|
+
partitionBiosLuks: typeof biosLuks;
|
|
49
|
+
partitionUefiLuks: typeof uefiLuks;
|
|
50
|
+
mountFs: typeof mountFs;
|
|
51
|
+
mountVfs: typeof mountVfs;
|
|
52
|
+
unpackfs: typeof unpackfs;
|
|
53
|
+
machineId: typeof machineId;
|
|
54
|
+
fstab: typeof fstab;
|
|
55
|
+
locale: typeof locale;
|
|
56
|
+
keyboard: typeof mKeyboard;
|
|
57
|
+
localeCfg: typeof localeCfg;
|
|
58
|
+
addUser: typeof addUser;
|
|
59
|
+
changePassword: typeof changePassword;
|
|
60
|
+
networkCfg: typeof networkCfg;
|
|
61
|
+
bootloaderConfig: typeof bootloaderConfig;
|
|
62
|
+
grubcfg: typeof grubcfg;
|
|
63
|
+
bootloader: typeof bootloader;
|
|
64
|
+
packages: typeof packages;
|
|
65
|
+
removeInstallerLink: typeof removeInstallerLink;
|
|
66
|
+
initramfsCfg: typeof initramfsCfg;
|
|
67
|
+
initramfs: typeof initramfs;
|
|
68
|
+
delLiveUser: typeof delLiveUser;
|
|
69
|
+
umountFs: typeof umountFs;
|
|
70
|
+
umountVfs: typeof umountVfs;
|
|
71
|
+
umount: typeof umount;
|
|
72
|
+
mkfs: typeof mkfs;
|
|
73
|
+
hostname: typeof hostname;
|
|
74
|
+
installer: IInstaller;
|
|
75
|
+
installTarget: string;
|
|
76
|
+
verbose: boolean;
|
|
77
|
+
echo: {};
|
|
78
|
+
efi: boolean;
|
|
79
|
+
devices: IDevices;
|
|
80
|
+
users: IUsers;
|
|
81
|
+
network: INet;
|
|
82
|
+
partitions: IPartitions;
|
|
83
|
+
swapSize: number;
|
|
84
|
+
language: string;
|
|
85
|
+
region: string;
|
|
86
|
+
zone: string;
|
|
87
|
+
keyboardModel: string;
|
|
88
|
+
keyboardLayout: string;
|
|
89
|
+
keyboardVariant: string;
|
|
90
|
+
toNull: string;
|
|
91
|
+
spinner: boolean;
|
|
92
|
+
settings: Settings;
|
|
93
|
+
remix: IRemix;
|
|
94
|
+
distro: IDistro;
|
|
95
|
+
luksMappedName: string;
|
|
96
|
+
luksFile: string;
|
|
97
|
+
luksDevice: string;
|
|
98
|
+
luksMountpoint: string;
|
|
99
|
+
luksRootName: string;
|
|
100
|
+
is_clone: boolean;
|
|
101
|
+
is_crypted_clone: boolean;
|
|
102
|
+
unattended: boolean;
|
|
103
|
+
nointeractive: boolean;
|
|
104
|
+
chroot: boolean;
|
|
105
|
+
halt: boolean;
|
|
106
|
+
cliAutologin: CliAutologin;
|
|
107
|
+
/**
|
|
108
|
+
* Constructor (unchanged)
|
|
109
|
+
*/
|
|
110
|
+
constructor(location: ILocation, keyboard: IKeyboard, partitions: IPartitions, users: IUsers, network: INet);
|
|
111
|
+
/**
|
|
112
|
+
* Helper method to execute a step with standard error handling
|
|
113
|
+
*/
|
|
114
|
+
private executeStep;
|
|
115
|
+
/**
|
|
116
|
+
* Main start method - Much cleaner sequence
|
|
117
|
+
*/
|
|
118
|
+
start(domain?: string, unattended?: boolean, nointeractive?: boolean, chroot?: boolean, halt?: boolean, verbose?: boolean): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Setup installation parameters and environment
|
|
121
|
+
*/
|
|
122
|
+
private setupInstallation;
|
|
123
|
+
/**
|
|
124
|
+
* Main installation sequence - Linear and clear
|
|
125
|
+
*/
|
|
126
|
+
private runInstallationSequence;
|
|
127
|
+
/**
|
|
128
|
+
* Complete installation with reboot/halt
|
|
129
|
+
*/
|
|
130
|
+
private completeInstallation;
|
|
131
|
+
execCalamaresModule(name: string): Promise<void>;
|
|
132
|
+
emergencyShell(message: string): Promise<void>;
|
|
133
|
+
showProblem(message: string, currErr: any): Promise<void>;
|
|
134
|
+
}
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sequence - Simple Refactoring
|
|
3
|
+
* ./src/krill/sequence.ts
|
|
4
|
+
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* email: piero.proietti@gmail.com
|
|
7
|
+
* license: MIT
|
|
8
|
+
*/
|
|
9
|
+
import Settings from '../../classes/settings.js';
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import { render, Box, Text } from 'ink';
|
|
12
|
+
import Install from '../components/install.js';
|
|
13
|
+
import Finished from '../components/finished.js';
|
|
14
|
+
import fs from 'fs';
|
|
15
|
+
import yaml from 'js-yaml';
|
|
16
|
+
import { installer } from '../../classes/incubation/installer.js';
|
|
17
|
+
import CliAutologin from '../../classes/cli-autologin.js';
|
|
18
|
+
import Distro from '../../classes/distro.js';
|
|
19
|
+
import Pacman from '../../classes/pacman.js';
|
|
20
|
+
import Utils from '../../classes/utils.js';
|
|
21
|
+
import Xdg from '../../classes/xdg.js';
|
|
22
|
+
import { exec } from '../../lib/utils.js';
|
|
23
|
+
// Import all modules (unchanged)
|
|
24
|
+
import partition from './sequence.d/partition.js';
|
|
25
|
+
import biosStandard from './sequence.d/partition.d/bios_standard.js';
|
|
26
|
+
import biosLuks from './sequence.d/partition.d/bios_luks.js';
|
|
27
|
+
import uefiStandard from './sequence.d/partition.d/uefi_standard.js';
|
|
28
|
+
import uefiLuks from './sequence.d/partition.d/uefi_luks.js';
|
|
29
|
+
import { mountFs, umountFs } from './sequence.d/mount_fs.js';
|
|
30
|
+
import { mountVfs, umountVfs } from './sequence.d/mount_vfs.js';
|
|
31
|
+
import unpackfs from './sequence.d/unpackfs.js';
|
|
32
|
+
import machineId from './sequence.d/machine_id.js';
|
|
33
|
+
import fstab from './sequence.d/fstab.js';
|
|
34
|
+
import locale from './sequence.d/locale.js';
|
|
35
|
+
import mKeyboard from './sequence.d/m_keyboard.js';
|
|
36
|
+
import localeCfg from './sequence.d/locale_cfg.js';
|
|
37
|
+
import addUser from './sequence.d/add_user.js';
|
|
38
|
+
import changePassword from './sequence.d/change_password.js';
|
|
39
|
+
import networkCfg from './sequence.d/network_cfg.js';
|
|
40
|
+
import bootloaderConfig from './sequence.d/bootloader_config.js';
|
|
41
|
+
import grubcfg from './sequence.d/grubcfg.js';
|
|
42
|
+
import bootloader from './sequence.d/bootloader.js';
|
|
43
|
+
import packages from './sequence.d/packages.js';
|
|
44
|
+
import removeInstallerLink from './sequence.d/remove_installer_link.js';
|
|
45
|
+
import initramfsCfg from './sequence.d/initramfs_cfg.js';
|
|
46
|
+
import initramfs from './sequence.d/initramfs.js';
|
|
47
|
+
import delLiveUser from './sequence.d/del_live_user.js';
|
|
48
|
+
import umount from './sequence.d/umount.js';
|
|
49
|
+
import mkfs from './sequence.d/mkfs.js';
|
|
50
|
+
import hostname from './sequence.d/hostname.js';
|
|
51
|
+
import CFS from './cfs.js';
|
|
52
|
+
import Title from '../components/title.js';
|
|
53
|
+
import cliCursor from 'cli-cursor';
|
|
54
|
+
import { spawnSync } from 'child_process';
|
|
55
|
+
/**
|
|
56
|
+
* Main Sequence class - Simple Refactoring
|
|
57
|
+
*/
|
|
58
|
+
export default class Sequence {
|
|
59
|
+
// All module references (unchanged)
|
|
60
|
+
partition = partition;
|
|
61
|
+
partitionBiosStandard = biosStandard;
|
|
62
|
+
partitionUefiStandard = uefiStandard;
|
|
63
|
+
partitionBiosLuks = biosLuks;
|
|
64
|
+
partitionUefiLuks = uefiLuks;
|
|
65
|
+
mountFs = mountFs;
|
|
66
|
+
mountVfs = mountVfs;
|
|
67
|
+
unpackfs = unpackfs;
|
|
68
|
+
machineId = machineId;
|
|
69
|
+
fstab = fstab;
|
|
70
|
+
locale = locale;
|
|
71
|
+
keyboard = mKeyboard;
|
|
72
|
+
localeCfg = localeCfg;
|
|
73
|
+
addUser = addUser;
|
|
74
|
+
changePassword = changePassword;
|
|
75
|
+
networkCfg = networkCfg;
|
|
76
|
+
bootloaderConfig = bootloaderConfig;
|
|
77
|
+
grubcfg = grubcfg;
|
|
78
|
+
bootloader = bootloader;
|
|
79
|
+
packages = packages;
|
|
80
|
+
removeInstallerLink = removeInstallerLink;
|
|
81
|
+
initramfsCfg = initramfsCfg;
|
|
82
|
+
initramfs = initramfs;
|
|
83
|
+
delLiveUser = delLiveUser;
|
|
84
|
+
umountFs = umountFs;
|
|
85
|
+
umountVfs = umountVfs;
|
|
86
|
+
umount = umount;
|
|
87
|
+
mkfs = mkfs;
|
|
88
|
+
hostname = hostname;
|
|
89
|
+
// All properties (unchanged)
|
|
90
|
+
installer = {};
|
|
91
|
+
installTarget = '/tmp/calamares-krill-root';
|
|
92
|
+
verbose = false;
|
|
93
|
+
echo = {};
|
|
94
|
+
efi = false;
|
|
95
|
+
devices = {};
|
|
96
|
+
users = {};
|
|
97
|
+
network = {};
|
|
98
|
+
partitions = {};
|
|
99
|
+
swapSize = 0;
|
|
100
|
+
language = '';
|
|
101
|
+
region = '';
|
|
102
|
+
zone = '';
|
|
103
|
+
keyboardModel = '';
|
|
104
|
+
keyboardLayout = '';
|
|
105
|
+
keyboardVariant = '';
|
|
106
|
+
toNull = ' > /dev/null 2>&1';
|
|
107
|
+
spinner = true;
|
|
108
|
+
settings = {};
|
|
109
|
+
remix = {};
|
|
110
|
+
distro = {};
|
|
111
|
+
luksMappedName = 'luks-volume'; // encrypted ISOs
|
|
112
|
+
luksFile = ``; // encrypted ISOs
|
|
113
|
+
luksDevice = `/dev/mapper/${this.luksMappedName}`; // encrypted ISOs
|
|
114
|
+
luksMountpoint = `/mnt`; // encrypted ISOs
|
|
115
|
+
luksRootName = ''; // installation encrypted
|
|
116
|
+
is_clone = fs.existsSync('/etc/penguins-eggs.d/is_clone');
|
|
117
|
+
is_crypted_clone = fs.existsSync('/etc/penguins-eggs.d/is_crypted_clone');
|
|
118
|
+
unattended = false;
|
|
119
|
+
nointeractive = false;
|
|
120
|
+
chroot = false;
|
|
121
|
+
halt = false;
|
|
122
|
+
cliAutologin = new CliAutologin();
|
|
123
|
+
/**
|
|
124
|
+
* Constructor (unchanged)
|
|
125
|
+
*/
|
|
126
|
+
constructor(location, keyboard, partitions, users, network) {
|
|
127
|
+
this.installer = installer();
|
|
128
|
+
this.settings = new Settings();
|
|
129
|
+
this.language = location.language;
|
|
130
|
+
this.region = location.region;
|
|
131
|
+
this.zone = location.zone;
|
|
132
|
+
this.keyboardModel = keyboard.keyboardModel;
|
|
133
|
+
this.keyboardLayout = keyboard.keyboardLayout;
|
|
134
|
+
this.keyboardVariant = keyboard.keyboardVariant;
|
|
135
|
+
this.network = network;
|
|
136
|
+
this.partitions = partitions;
|
|
137
|
+
this.users = users;
|
|
138
|
+
this.devices.efi = {};
|
|
139
|
+
this.devices.boot = {};
|
|
140
|
+
this.devices.root = {};
|
|
141
|
+
this.devices.data = {};
|
|
142
|
+
this.devices.swap = {};
|
|
143
|
+
this.distro = new Distro();
|
|
144
|
+
this.efi = fs.existsSync('/sys/firmware/efi/efivars');
|
|
145
|
+
this.luksFile = `${this.distro.liveMediumPath}live/${this.luksMappedName}`;
|
|
146
|
+
this.luksRootName = `${this.distro.distroLike}_root`;
|
|
147
|
+
this.luksRootName = this.luksRootName.toLowerCase(); // installation encrypted
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Helper method to execute a step with standard error handling
|
|
151
|
+
*/
|
|
152
|
+
async executeStep(message, percent, action) {
|
|
153
|
+
await redraw(React.createElement(Install, { message: message, percent: percent, spinner: this.spinner }));
|
|
154
|
+
try {
|
|
155
|
+
await action();
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
await this.showProblem(message, error);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Main start method - Much cleaner sequence
|
|
163
|
+
*/
|
|
164
|
+
async start(domain = '', unattended = false, nointeractive = false, chroot = false, halt = false, verbose = false) {
|
|
165
|
+
// Setup (unchanged)
|
|
166
|
+
await this.setupInstallation(domain, unattended, nointeractive, chroot, halt, verbose);
|
|
167
|
+
// Installation sequence - each step clearly visible
|
|
168
|
+
await this.runInstallationSequence(chroot);
|
|
169
|
+
// Completion
|
|
170
|
+
await this.completeInstallation();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Setup installation parameters and environment
|
|
174
|
+
*/
|
|
175
|
+
async setupInstallation(domain, unattended, nointeractive, chroot, halt, verbose) {
|
|
176
|
+
// Set domain
|
|
177
|
+
if (domain !== '') {
|
|
178
|
+
if (domain.at(0) !== '.') {
|
|
179
|
+
domain = '.' + domain;
|
|
180
|
+
}
|
|
181
|
+
this.network.domain = domain;
|
|
182
|
+
}
|
|
183
|
+
// Arch-specific setup
|
|
184
|
+
if (this.distro.familyId === 'archlinux') {
|
|
185
|
+
if (this.distro.distroId === 'Manjarolinux') {
|
|
186
|
+
await exec(`ln -s /run/miso/bootmnt/live/ /live`);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
await exec(`ln -s /run/archiso/bootmnt/live/ /live`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// OpenSUSE-specific setup
|
|
193
|
+
if (this.distro.familyId === 'opensuse') {
|
|
194
|
+
await exec('dmsetup remove_all');
|
|
195
|
+
}
|
|
196
|
+
// Set flags
|
|
197
|
+
this.unattended = unattended;
|
|
198
|
+
this.nointeractive = nointeractive;
|
|
199
|
+
this.chroot = chroot;
|
|
200
|
+
this.halt = halt;
|
|
201
|
+
this.verbose = verbose;
|
|
202
|
+
this.echo = Utils.setEcho(this.verbose);
|
|
203
|
+
if (this.verbose) {
|
|
204
|
+
this.toNull = '';
|
|
205
|
+
this.spinner = false;
|
|
206
|
+
}
|
|
207
|
+
await this.settings.load();
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Main installation sequence - Linear and clear
|
|
211
|
+
*/
|
|
212
|
+
async runInstallationSequence(chroot = false) {
|
|
213
|
+
// 1. Partitioning and formatting
|
|
214
|
+
let isPartitioned = false;
|
|
215
|
+
await this.executeStep("Creating partitions", 0, async () => {
|
|
216
|
+
isPartitioned = await this.partition();
|
|
217
|
+
});
|
|
218
|
+
if (!isPartitioned)
|
|
219
|
+
return;
|
|
220
|
+
await this.executeStep("Formatting file system", 6, () => this.mkfs());
|
|
221
|
+
// 2. Mounting
|
|
222
|
+
await this.executeStep("Mounting target file system", 9, async () => {
|
|
223
|
+
await this.mountFs();
|
|
224
|
+
await sleep(500); // Give time to mount
|
|
225
|
+
});
|
|
226
|
+
await this.executeStep("Mounting on target VFS", 12, () => this.mountVfs());
|
|
227
|
+
// 3. System setup
|
|
228
|
+
await this.executeStep("Unpacking filesystem", 15, () => this.unpackfs());
|
|
229
|
+
// 4. Debian-specific steps
|
|
230
|
+
if (this.distro.familyId === 'debian') {
|
|
231
|
+
await this.executeStep("Force dpkg-unsafe-io", 40, () => this.execCalamaresModule('dpkg-unsafe-io'));
|
|
232
|
+
await this.executeStep("Add sources-yolk", 43, () => this.execCalamaresModule('sources-yolk'));
|
|
233
|
+
}
|
|
234
|
+
// 5. Core system configuration
|
|
235
|
+
await this.executeStep("machineid", 46, () => this.machineId());
|
|
236
|
+
await this.executeStep("Creating fstab", 49, () => this.fstab(this.partitions.installationDevice));
|
|
237
|
+
// 6. Crypted clone restoration
|
|
238
|
+
if (this.is_crypted_clone) {
|
|
239
|
+
await this.executeStep("Restore private data from crypted clone", 55, async () => {
|
|
240
|
+
if (fs.existsSync(this.luksFile)) {
|
|
241
|
+
const cmd = `eggs syncfrom --rootdir /tmp/calamares-krill-root/ --file ${this.luksFile}`;
|
|
242
|
+
await exec(cmd, Utils.setEcho(true));
|
|
243
|
+
this.is_clone = true;
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
await Utils.pressKeyToExit(`Cannot find luks-volume file ${this.luksFile}`);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
// 7. Network and hostname
|
|
251
|
+
await this.executeStep("Network configuration", 61, () => this.networkCfg());
|
|
252
|
+
await this.executeStep("Create hostname", 64, () => this.hostname(this.network.domain));
|
|
253
|
+
// 8. Debian cleanup
|
|
254
|
+
if (this.distro.familyId === 'debian') {
|
|
255
|
+
await this.executeStep("Remove dpkg-unsafe-io", 65, () => this.execCalamaresModule('dpkg-unsafe-io-undo'));
|
|
256
|
+
}
|
|
257
|
+
// 9. User configuration (only if not clone)
|
|
258
|
+
if (!this.is_clone) {
|
|
259
|
+
// Locale
|
|
260
|
+
await this.executeStep("Locale", 70, async () => {
|
|
261
|
+
if (this.distro.familyId === 'alpine' ||
|
|
262
|
+
this.distro.familyId === 'archlinux' ||
|
|
263
|
+
this.distro.familyId === 'debian') {
|
|
264
|
+
await this.locale();
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
await this.executeStep("Settings keyboard", 71, () => this.keyboard());
|
|
268
|
+
// Locale configuration
|
|
269
|
+
if (this.distro.familyId === 'archlinux' || this.distro.familyId === 'debian') {
|
|
270
|
+
await this.executeStep("Locale configuration", 72, async () => {
|
|
271
|
+
await this.localeCfg();
|
|
272
|
+
await exec("chroot " + this.installTarget + " locale-gen" + this.toNull);
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
await this.executeStep("Remove live user", 73, () => this.delLiveUser());
|
|
276
|
+
await this.executeStep(`Add user ${this.users.username}`, 74, () => this.addUser(this.users.username, this.users.password, this.users.fullname, '', '', ''));
|
|
277
|
+
await this.executeStep("Add root password", 75, () => this.changePassword('root', this.users.rootPassword));
|
|
278
|
+
// GUI autologin
|
|
279
|
+
if (Pacman.isInstalledGui()) {
|
|
280
|
+
await this.executeStep("Autologin GUI", 78, async () => {
|
|
281
|
+
if (this.users.autologin) {
|
|
282
|
+
await Xdg.autologin(await Utils.getPrimaryUser(), this.users.username, this.installTarget);
|
|
283
|
+
if (this.distro.distroLike === 'Arch') {
|
|
284
|
+
await exec(`chroot ${this.installTarget} groupadd autologin ${this.toNull}`);
|
|
285
|
+
await exec(`chroot ${this.installTarget} gpasswd -a ${this.users.username} autologin ${this.toNull}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// 10. Always remove CLI autologin
|
|
292
|
+
await this.executeStep("Remove autologin CLI", 80, () => this.cliAutologin.remove(this.installTarget));
|
|
293
|
+
// 10. mkinitramfs
|
|
294
|
+
await this.executeStep("initramfs configure", 86, () => this.initramfsCfg(this.partitions.installationDevice));
|
|
295
|
+
await this.executeStep("initramfs", 87, () => this.initramfs());
|
|
296
|
+
// 11. Bootloader configuration
|
|
297
|
+
await this.executeStep("bootloader-config", 81, () => this.bootloaderConfig());
|
|
298
|
+
await this.executeStep("grubcfg", 82, () => this.grubcfg());
|
|
299
|
+
await this.executeStep("bootloader", 83, () => this.bootloader());
|
|
300
|
+
// 12. Final system setup
|
|
301
|
+
if (this.distro.familyId === 'debian') {
|
|
302
|
+
await this.executeStep("Remove sources-yolk", 84, () => this.execCalamaresModule('sources-yolk-undo'));
|
|
303
|
+
}
|
|
304
|
+
await this.executeStep("Add/remove packages", 85, () => this.packages());
|
|
305
|
+
await this.executeStep("Remove GUI installer link", 88, () => this.removeInstallerLink());
|
|
306
|
+
await this.executeStep("Cleanup", 89, async () => {
|
|
307
|
+
await exec(`rm -f ${this.installTarget}/etc/penguins-eggs.d/is_clone`);
|
|
308
|
+
await exec(`rm -f ${this.installTarget}/etc/penguins-eggs.d/is_crypted_clone`);
|
|
309
|
+
});
|
|
310
|
+
// 13. Custom final steps
|
|
311
|
+
const cfs = new CFS();
|
|
312
|
+
const steps = await cfs.steps();
|
|
313
|
+
if (steps.length > 0) {
|
|
314
|
+
for (const step of steps) {
|
|
315
|
+
await this.executeStep(`running ${step}`, 90, () => this.execCalamaresModule(step));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// 14- Handle chroot if requested
|
|
319
|
+
if (chroot) {
|
|
320
|
+
const message = `You are in chroot mode under ${this.installTarget}, type "exit" to exit.`;
|
|
321
|
+
await this.emergencyShell(message);
|
|
322
|
+
}
|
|
323
|
+
// 15. Unmounting
|
|
324
|
+
await this.executeStep("umount Virtual File System", 96, () => this.umountVfs());
|
|
325
|
+
await this.executeStep("umount File system", 99, () => this.umountFs());
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Complete installation with reboot/halt
|
|
329
|
+
*/
|
|
330
|
+
async completeInstallation() {
|
|
331
|
+
await sleep(500);
|
|
332
|
+
const cmd = this.halt ? "poweroff" : "reboot";
|
|
333
|
+
let message = `Press a key to ${cmd}`;
|
|
334
|
+
if (this.unattended && this.nointeractive) {
|
|
335
|
+
message = `System will ${cmd} in 5 seconds...`;
|
|
336
|
+
}
|
|
337
|
+
await redraw(React.createElement(Finished, { installationDevice: this.partitions.installationDevice, hostName: this.users.hostname, userName: this.users.username, message: message }));
|
|
338
|
+
if (this.unattended && this.nointeractive) {
|
|
339
|
+
await sleep(5000);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
spawnSync('read _ ', { shell: true, stdio: [0, 1, 2] });
|
|
343
|
+
}
|
|
344
|
+
await exec(cmd, { echo: false });
|
|
345
|
+
}
|
|
346
|
+
// Keep all existing methods unchanged
|
|
347
|
+
async execCalamaresModule(name) {
|
|
348
|
+
const moduleName = this.installer.multiarchModules + name + '/module.desc';
|
|
349
|
+
if (fs.existsSync(moduleName)) {
|
|
350
|
+
const calamaresModule = yaml.load(fs.readFileSync(moduleName, 'utf8'));
|
|
351
|
+
let command = calamaresModule.command;
|
|
352
|
+
if (command !== '' || command !== undefined) {
|
|
353
|
+
command += this.toNull;
|
|
354
|
+
await exec(command, this.echo);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
async emergencyShell(message) {
|
|
359
|
+
try {
|
|
360
|
+
await redraw(React.createElement(React.Fragment, null,
|
|
361
|
+
React.createElement(Title, null),
|
|
362
|
+
React.createElement(Box, null,
|
|
363
|
+
React.createElement(Text, null, message))));
|
|
364
|
+
cliCursor.show();
|
|
365
|
+
await exec(`chroot ${this.installTarget} /bin/bash`);
|
|
366
|
+
cliCursor.hide();
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
await Utils.pressKeyToExit(JSON.stringify(error));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
async showProblem(message, currErr) {
|
|
373
|
+
message = `We was on "${message}", get error: ${JSON.stringify(currErr)}, type "exit" to exit from krill emergency shell.`;
|
|
374
|
+
try {
|
|
375
|
+
await redraw(React.createElement(React.Fragment, null,
|
|
376
|
+
React.createElement(Title, null),
|
|
377
|
+
React.createElement(Box, null,
|
|
378
|
+
React.createElement(Text, null, message))));
|
|
379
|
+
cliCursor.show();
|
|
380
|
+
await exec("/bin/bash");
|
|
381
|
+
cliCursor.hide();
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
await Utils.pressKeyToExit(JSON.stringify(error));
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// Helper functions (unchanged)
|
|
389
|
+
async function redraw(elem) {
|
|
390
|
+
let opt = {};
|
|
391
|
+
opt.patchConsole = false;
|
|
392
|
+
opt.debug = true;
|
|
393
|
+
console.clear();
|
|
394
|
+
render(elem, opt);
|
|
395
|
+
}
|
|
396
|
+
function sleep(ms = 0) {
|
|
397
|
+
return new Promise((resolve) => {
|
|
398
|
+
setTimeout(resolve, ms);
|
|
399
|
+
});
|
|
400
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/components/finished.tsx
|
|
3
|
+
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
type FinishedProps = {
|
|
10
|
+
installationDevice?: string;
|
|
11
|
+
hostName?: string;
|
|
12
|
+
userName?: string;
|
|
13
|
+
message?: string;
|
|
14
|
+
};
|
|
15
|
+
export default function Finished({ installationDevice, hostName, userName, message }: FinishedProps): React.JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/components/finished.tsx
|
|
3
|
+
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { Box, Newline, Text, Spacer } from 'ink';
|
|
10
|
+
import Title from './title.js';
|
|
11
|
+
import Steps from './steps.js';
|
|
12
|
+
import yaml from 'js-yaml';
|
|
13
|
+
import fs from 'fs';
|
|
14
|
+
export default function Finished({ installationDevice = '', hostName = '', userName = '', message = 'Press a key to continue...' }) {
|
|
15
|
+
let productName = 'unknown';
|
|
16
|
+
let version = 'x.x.x';
|
|
17
|
+
let configRoot = '/etc/penguins-eggs.d/krill/';
|
|
18
|
+
if (fs.existsSync('/etc/calamares/settings.conf')) {
|
|
19
|
+
configRoot = '/etc/calamares/';
|
|
20
|
+
}
|
|
21
|
+
const settings = yaml.load(fs.readFileSync(configRoot + 'settings.conf', 'utf-8'));
|
|
22
|
+
const branding = settings.branding;
|
|
23
|
+
const calamares = yaml.load(fs.readFileSync(configRoot + 'branding/' + branding + '/branding.desc', 'utf-8'));
|
|
24
|
+
productName = calamares.string_product_name;
|
|
25
|
+
version = calamares.string_product_version;
|
|
26
|
+
/**
|
|
27
|
+
* totale width=75
|
|
28
|
+
* step width=15
|
|
29
|
+
* finestra with=59
|
|
30
|
+
*/
|
|
31
|
+
const [activeField, setActiveField] = React.useState(0);
|
|
32
|
+
const [submission, setSubmission] = React.useState();
|
|
33
|
+
return (React.createElement(React.Fragment, null,
|
|
34
|
+
React.createElement(Title, null),
|
|
35
|
+
React.createElement(Box, { width: 75, height: 11, borderStyle: "round", flexDirection: "column" },
|
|
36
|
+
React.createElement(Box, { flexDirection: "column" },
|
|
37
|
+
React.createElement(Box, { flexDirection: "row" },
|
|
38
|
+
React.createElement(Steps, { step: 9 }),
|
|
39
|
+
React.createElement(Box, { flexDirection: "column" },
|
|
40
|
+
React.createElement(Box, null,
|
|
41
|
+
React.createElement(Text, { backgroundColor: "white", color: 'black' }, "Installation is finished!")),
|
|
42
|
+
React.createElement(Newline, null),
|
|
43
|
+
React.createElement(Box, null,
|
|
44
|
+
React.createElement(Text, null, "Your system was installed on "),
|
|
45
|
+
React.createElement(Text, { color: "green" }, installationDevice)),
|
|
46
|
+
React.createElement(Box, null,
|
|
47
|
+
React.createElement(Text, null, "Host name was set as "),
|
|
48
|
+
React.createElement(Text, { color: "green" }, hostName)),
|
|
49
|
+
React.createElement(Box, null,
|
|
50
|
+
React.createElement(Text, null, "The user name is "),
|
|
51
|
+
React.createElement(Text, { color: "green" }, userName)),
|
|
52
|
+
React.createElement(Newline, null),
|
|
53
|
+
React.createElement(Box, null,
|
|
54
|
+
React.createElement(Spacer, null),
|
|
55
|
+
React.createElement(Text, { backgroundColor: "white", color: "black" }, message))))))));
|
|
56
|
+
}
|