penguins-eggs 25.10.24 → 25.10.26

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 (78) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/README.md +28 -28
  3. package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
  4. package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
  5. package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
  6. package/addons/eggs/theme/applications/install-system.desktop +0 -0
  7. package/assets/calamares/install-system.sh +0 -0
  8. package/assets/penguins-eggs.desktop +0 -0
  9. package/assets/penguins-krill.desktop +0 -0
  10. package/assets/penguins-links-add.desktop +0 -0
  11. package/assets/penguins-live-installer.desktop +0 -0
  12. package/bin/dev.js +0 -0
  13. package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
  14. package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  15. package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  16. package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  17. package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  18. package/conf/distros/focal/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  19. package/conf/distros/focal/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  20. package/conf/distros/noble/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  21. package/conf/distros/noble/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  22. package/conf/distros/noble/calamares/libexec/calamares-aptsources.sh +0 -0
  23. package/conf/distros/noble/calamares/libexec/calamares-l10n-helper.sh +0 -0
  24. package/conf/distros/noble/calamares/libexec/calamares-logs-helper.sh +0 -0
  25. package/conf/distros/noble/calamares/libexec/calamares-nomodeset.sh +0 -0
  26. package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  27. package/conf/distros/opensuse/calamares/settings.yml +0 -0
  28. package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
  29. package/conf/distros/trixie/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  30. package/conf/distros/trixie/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  31. package/conf/distros/trixie/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  32. package/conf/init/unattended.sh +0 -0
  33. package/dist/classes/ovary.d/luks-home.js +11 -4
  34. package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
  35. package/dist/classes/ovary.d/luks-interactive-crypto-config.js +135 -0
  36. package/dist/classes/ovary.d/luks-root-initrd.d.ts +1 -1
  37. package/dist/classes/ovary.d/luks-root-initrd.js +1 -1
  38. package/dist/classes/ovary.d/luks-root.js +35 -1
  39. package/dist/classes/ovary.d/produce.js +6 -0
  40. package/dist/classes/ovary.d.ts +3 -0
  41. package/dist/classes/ovary.js +3 -0
  42. package/dracut/create-symlink +0 -0
  43. package/dracut/export +0 -0
  44. package/dracut/export-dracut-analysis +0 -0
  45. package/dracut/export-dracut-log +0 -0
  46. package/dracut/mkisofs +0 -0
  47. package/dracut/modules.d/00debug-shell/debug-hook.sh +0 -0
  48. package/dracut/modules.d/00debug-shell/module-setup.sh +0 -0
  49. package/dracut/modules.d/90block/block-cmdline.sh +0 -0
  50. package/dracut/modules.d/90block/module-setup.sh +0 -0
  51. package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +0 -0
  52. package/dracut/modules.d/95iso-scan/iso-scan.sh +0 -0
  53. package/dracut/modules.d/95iso-scan/module-setup.sh +0 -0
  54. package/dracut/modules.d/95luks-loop/luks-loop.sh +0 -0
  55. package/dracut/modules.d/95luks-loop/module-setup.sh +0 -0
  56. package/dracut/renew-initramfs +0 -0
  57. package/dracut/sbin2bin +0 -0
  58. package/dracut/update-dracut-conf-d +0 -0
  59. package/dracut/update-dracut-modules +0 -0
  60. package/eui/eui-autostart-cinnamon.desktop +0 -0
  61. package/eui/eui-autostart-xfce.desktop +0 -0
  62. package/eui/eui-create-image.sh +0 -0
  63. package/eui/eui-start.sh +0 -0
  64. package/package.json +124 -130
  65. package/perrisbrewery/scripts/postinst +0 -0
  66. package/perrisbrewery/scripts/postrm +0 -0
  67. package/perrisbrewery/scripts/preinst +0 -0
  68. package/perrisbrewery/scripts/prerm +0 -0
  69. package/scripts/99clean +0 -0
  70. package/scripts/adapt.sh +0 -0
  71. package/scripts/boot-encrypted-root.sh +138 -95
  72. package/scripts/bros/waydroid-helper.sh +0 -0
  73. package/scripts/lsb_release +0 -0
  74. package/scripts/mom.sh +0 -0
  75. package/scripts/mount-encrypted-home.sh +130 -65
  76. package/scripts/pve-live.service +0 -0
  77. package/scripts/pve-live.sh +0 -0
  78. package/scripts/resy +0 -0
@@ -1549,5 +1549,5 @@
1549
1549
  ]
1550
1550
  }
1551
1551
  },
1552
- "version": "25.10.24"
1552
+ "version": "25.10.26"
1553
1553
  }
package/README.md CHANGED
@@ -536,7 +536,7 @@ EXAMPLES
536
536
  $ eggs adapt
537
537
  ```
538
538
 
539
- _See code: [src/commands/adapt.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/adapt.ts)_
539
+ _See code: [src/commands/adapt.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/adapt.ts)_
540
540
 
541
541
  ## `eggs analyze`
542
542
 
@@ -557,7 +557,7 @@ EXAMPLES
557
557
  sudo eggs analyze
558
558
  ```
559
559
 
560
- _See code: [src/commands/analyze.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/analyze.ts)_
560
+ _See code: [src/commands/analyze.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/analyze.ts)_
561
561
 
562
562
  ## `eggs autocomplete [SHELL]`
563
563
 
@@ -621,7 +621,7 @@ EXAMPLES
621
621
  sudo eggs calamares --remove
622
622
  ```
623
623
 
624
- _See code: [src/commands/calamares.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/calamares.ts)_
624
+ _See code: [src/commands/calamares.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/calamares.ts)_
625
625
 
626
626
  ## `eggs config`
627
627
 
@@ -648,7 +648,7 @@ EXAMPLES
648
648
  sudo eggs config --clean --nointeractive
649
649
  ```
650
650
 
651
- _See code: [src/commands/config.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/config.ts)_
651
+ _See code: [src/commands/config.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/config.ts)_
652
652
 
653
653
  ## `eggs cuckoo`
654
654
 
@@ -669,7 +669,7 @@ EXAMPLES
669
669
  sudo eggs cuckoo
670
670
  ```
671
671
 
672
- _See code: [src/commands/cuckoo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/cuckoo.ts)_
672
+ _See code: [src/commands/cuckoo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/cuckoo.ts)_
673
673
 
674
674
  ## `eggs dad`
675
675
 
@@ -698,7 +698,7 @@ EXAMPLES
698
698
  sudo dad --default
699
699
  ```
700
700
 
701
- _See code: [src/commands/dad.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/dad.ts)_
701
+ _See code: [src/commands/dad.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/dad.ts)_
702
702
 
703
703
  ## `eggs export iso`
704
704
 
@@ -723,7 +723,7 @@ EXAMPLES
723
723
  $ eggs export iso --clean
724
724
  ```
725
725
 
726
- _See code: [src/commands/export/iso.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/export/iso.ts)_
726
+ _See code: [src/commands/export/iso.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/export/iso.ts)_
727
727
 
728
728
  ## `eggs export pkg`
729
729
 
@@ -750,7 +750,7 @@ EXAMPLES
750
750
  $ eggs export pkg --all
751
751
  ```
752
752
 
753
- _See code: [src/commands/export/pkg.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/export/pkg.ts)_
753
+ _See code: [src/commands/export/pkg.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/export/pkg.ts)_
754
754
 
755
755
  ## `eggs export tarballs`
756
756
 
@@ -774,7 +774,7 @@ EXAMPLES
774
774
  $ eggs export tarballs --clean
775
775
  ```
776
776
 
777
- _See code: [src/commands/export/tarballs.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/export/tarballs.ts)_
777
+ _See code: [src/commands/export/tarballs.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/export/tarballs.ts)_
778
778
 
779
779
  ## `eggs help [COMMAND]`
780
780
 
@@ -794,7 +794,7 @@ DESCRIPTION
794
794
  Display help for eggs.
795
795
  ```
796
796
 
797
- _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.33/src/commands/help.ts)_
797
+ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.34/src/commands/help.ts)_
798
798
 
799
799
  ## `eggs install`
800
800
 
@@ -838,7 +838,7 @@ EXAMPLES
838
838
  sudo eggs install --chroot
839
839
  ```
840
840
 
841
- _See code: [src/commands/install.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/install.ts)_
841
+ _See code: [src/commands/install.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/install.ts)_
842
842
 
843
843
  ## `eggs kill`
844
844
 
@@ -861,7 +861,7 @@ EXAMPLES
861
861
  sudo eggs kill
862
862
  ```
863
863
 
864
- _See code: [src/commands/kill.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/kill.ts)_
864
+ _See code: [src/commands/kill.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/kill.ts)_
865
865
 
866
866
  ## `eggs krill`
867
867
 
@@ -929,7 +929,7 @@ EXAMPLES
929
929
  $ eggs auto
930
930
  ```
931
931
 
932
- _See code: [src/commands/love.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/love.ts)_
932
+ _See code: [src/commands/love.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/love.ts)_
933
933
 
934
934
  ## `eggs mom`
935
935
 
@@ -949,7 +949,7 @@ EXAMPLES
949
949
  $ eggs mom
950
950
  ```
951
951
 
952
- _See code: [src/commands/mom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/mom.ts)_
952
+ _See code: [src/commands/mom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/mom.ts)_
953
953
 
954
954
  ## `eggs pods [DISTRO]`
955
955
 
@@ -976,7 +976,7 @@ EXAMPLES
976
976
  $ eggs pods ubuntu
977
977
  ```
978
978
 
979
- _See code: [src/commands/pods.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/pods.ts)_
979
+ _See code: [src/commands/pods.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/pods.ts)_
980
980
 
981
981
  ## `eggs produce`
982
982
 
@@ -1029,7 +1029,7 @@ EXAMPLES
1029
1029
  sudo eggs produce --basename=colibri
1030
1030
  ```
1031
1031
 
1032
- _See code: [src/commands/produce.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/produce.ts)_
1032
+ _See code: [src/commands/produce.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/produce.ts)_
1033
1033
 
1034
1034
  ## `eggs status`
1035
1035
 
@@ -1050,7 +1050,7 @@ EXAMPLES
1050
1050
  $ eggs status
1051
1051
  ```
1052
1052
 
1053
- _See code: [src/commands/status.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/status.ts)_
1053
+ _See code: [src/commands/status.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/status.ts)_
1054
1054
 
1055
1055
  ## `eggs tools clean`
1056
1056
 
@@ -1072,7 +1072,7 @@ EXAMPLES
1072
1072
  sudo eggs tools clean
1073
1073
  ```
1074
1074
 
1075
- _See code: [src/commands/tools/clean.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/tools/clean.ts)_
1075
+ _See code: [src/commands/tools/clean.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/tools/clean.ts)_
1076
1076
 
1077
1077
  ## `eggs tools repo`
1078
1078
 
@@ -1098,7 +1098,7 @@ EXAMPLES
1098
1098
  sudo eggs tools repo --remove
1099
1099
  ```
1100
1100
 
1101
- _See code: [src/commands/tools/repo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/tools/repo.ts)_
1101
+ _See code: [src/commands/tools/repo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/tools/repo.ts)_
1102
1102
 
1103
1103
  ## `eggs tools skel`
1104
1104
 
@@ -1122,7 +1122,7 @@ EXAMPLES
1122
1122
  sudo eggs tools skel --user user-to-be-copied
1123
1123
  ```
1124
1124
 
1125
- _See code: [src/commands/tools/skel.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/tools/skel.ts)_
1125
+ _See code: [src/commands/tools/skel.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/tools/skel.ts)_
1126
1126
 
1127
1127
  ## `eggs tools stat`
1128
1128
 
@@ -1148,7 +1148,7 @@ EXAMPLES
1148
1148
  $ eggs tools stat --year
1149
1149
  ```
1150
1150
 
1151
- _See code: [src/commands/tools/stat.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/tools/stat.ts)_
1151
+ _See code: [src/commands/tools/stat.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/tools/stat.ts)_
1152
1152
 
1153
1153
  ## `eggs tools yolk`
1154
1154
 
@@ -1169,7 +1169,7 @@ EXAMPLES
1169
1169
  sudo eggs tools yolk
1170
1170
  ```
1171
1171
 
1172
- _See code: [src/commands/tools/yolk.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/tools/yolk.ts)_
1172
+ _See code: [src/commands/tools/yolk.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/tools/yolk.ts)_
1173
1173
 
1174
1174
  ## `eggs update`
1175
1175
 
@@ -1190,7 +1190,7 @@ EXAMPLES
1190
1190
  $ eggs update
1191
1191
  ```
1192
1192
 
1193
- _See code: [src/commands/update.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/update.ts)_
1193
+ _See code: [src/commands/update.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/update.ts)_
1194
1194
 
1195
1195
  ## `eggs version`
1196
1196
 
@@ -1210,7 +1210,7 @@ FLAG DESCRIPTIONS
1210
1210
  Additionally shows the architecture, node version, operating system, and versions of plugins that the CLI is using.
1211
1211
  ```
1212
1212
 
1213
- _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v2.2.34/src/commands/version.ts)_
1213
+ _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v2.2.35/src/commands/version.ts)_
1214
1214
 
1215
1215
  ## `eggs wardrobe get [REPO]`
1216
1216
 
@@ -1236,7 +1236,7 @@ EXAMPLES
1236
1236
  $ eggs wardrobe get your-wardrobe
1237
1237
  ```
1238
1238
 
1239
- _See code: [src/commands/wardrobe/get.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/wardrobe/get.ts)_
1239
+ _See code: [src/commands/wardrobe/get.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/wardrobe/get.ts)_
1240
1240
 
1241
1241
  ## `eggs wardrobe list [REPO]`
1242
1242
 
@@ -1265,7 +1265,7 @@ EXAMPLES
1265
1265
  $ eggs wardrobe list --distro arch
1266
1266
  ```
1267
1267
 
1268
- _See code: [src/commands/wardrobe/list.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/wardrobe/list.ts)_
1268
+ _See code: [src/commands/wardrobe/list.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/wardrobe/list.ts)_
1269
1269
 
1270
1270
  ## `eggs wardrobe show [REPO]`
1271
1271
 
@@ -1295,7 +1295,7 @@ EXAMPLES
1295
1295
  $ eggs wardrobe show accessories/
1296
1296
  ```
1297
1297
 
1298
- _See code: [src/commands/wardrobe/show.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/wardrobe/show.ts)_
1298
+ _See code: [src/commands/wardrobe/show.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/wardrobe/show.ts)_
1299
1299
 
1300
1300
  ## `eggs wardrobe wear [REPO]`
1301
1301
 
@@ -1326,7 +1326,7 @@ EXAMPLES
1326
1326
  sudo eggs wardrobe wear wagtail/waydroid
1327
1327
  ```
1328
1328
 
1329
- _See code: [src/commands/wardrobe/wear.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.24/src/commands/wardrobe/wear.ts)_
1329
+ _See code: [src/commands/wardrobe/wear.ts](https://github.com/pieroproietti/penguins-eggs/blob/v25.10.26/src/commands/wardrobe/wear.ts)_
1330
1330
  <!-- commandsstop -->
1331
1331
 
1332
1332
  # GUI
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/bin/dev.js CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -83,6 +83,17 @@ export async function luksHome(clone = false, homecrypt = false) {
83
83
  // Gli utenti possono appartenere a gruppi di sistema (sudo, audio, video, etc.)
84
84
  await exec(`cp /etc/group ${this.luksMountpoint}/.system-backup/group`, this.echo);
85
85
  await exec(`cp /etc/gshadow ${this.luksMountpoint}/.system-backup/gshadow`, this.echo);
86
+ // saving display manager (autologin) configs...
87
+ warning(`saving display manager configuration...`);
88
+ // GDM (gdm3 è comune su Debian/Ubuntu)
89
+ await exec(`[ -e /etc/gdm3 ] && cp -a /etc/gdm3 ${this.luksMountpoint}/.system-backup/`, this.echo);
90
+ // GDM (altre distro)
91
+ await exec(`[ -e /etc/gdm ] && cp -a /etc/gdm ${this.luksMountpoint}/.system-backup/`, this.echo);
92
+ // LightDM
93
+ await exec(`[ -e /etc/lightdm ] && cp -a /etc/lightdm ${this.luksMountpoint}/.system-backup/`, this.echo);
94
+ // SDDM (sia file .conf che directory .conf.d)
95
+ await exec(`[ -e /etc/sddm.conf ] && cp -a /etc/sddm.conf ${this.luksMountpoint}/.system-backup/`, this.echo);
96
+ await exec(`[ -e /etc/sddm.conf.d ] && cp -a /etc/sddm.conf.d ${this.luksMountpoint}/.system-backup/`, this.echo);
86
97
  warning(`unmount ${this.luksDevice}`);
87
98
  await exec(`umount ${this.luksMountpoint}`, this.echo);
88
99
  warning(`closing LUKS volume ${this.luksMappedName}.`);
@@ -90,10 +101,6 @@ export async function luksHome(clone = false, homecrypt = false) {
90
101
  warning(`moving ${this.luksMappedName} to (ISO)/live/.`);
91
102
  await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
92
103
  warning('encryption process successfully completed!');
93
- /**
94
- * YOU MUST! unlink the key on production
95
- */
96
- // fs.unlinkSync(`${this.settings.iso_work}/live/home.key`)
97
104
  }
98
105
  catch (error) {
99
106
  if (error instanceof Error) {
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ./src/classe/ovary.d/luks-interactive-crypto-config.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Ovary from '../ovary.js';
9
+ declare const CIPHER_OPTIONS: readonly ["aes-xts-plain64", "serpent-xts-plain64", "twofish-xts-plain64"];
10
+ declare const KEY_SIZE_OPTIONS: readonly [512, 256];
11
+ declare const HASH_OPTIONS: readonly ["sha512", "sha256"];
12
+ declare const SECTOR_SIZE_OPTIONS: readonly [4096, 512];
13
+ declare const ARGON_MEMORY_OPTIONS: readonly [524288, 1048576, 2097152];
14
+ declare const ARGON_PARALLEL_OPTIONS: readonly [1, 2, 4, 8];
15
+ declare const PBKDF2_ITER_TIME_OPTIONS: readonly [2000, 5000, 10000];
16
+ type Cipher = typeof CIPHER_OPTIONS[number];
17
+ type KeySize = typeof KEY_SIZE_OPTIONS[number];
18
+ type Hash = typeof HASH_OPTIONS[number];
19
+ type SectorSize = typeof SECTOR_SIZE_OPTIONS[number];
20
+ type ArgonPbkdf = "argon2id" | "argon2i";
21
+ type Pbkdf2Pbkdf = "pbkdf2";
22
+ type ArgonMemory = typeof ARGON_MEMORY_OPTIONS[number];
23
+ type ArgonParallel = typeof ARGON_PARALLEL_OPTIONS[number];
24
+ type Pbkdf2IterTime = typeof PBKDF2_ITER_TIME_OPTIONS[number];
25
+ export interface BaseCryptoConfig {
26
+ cipher: Cipher;
27
+ 'key-size': KeySize;
28
+ hash: Hash;
29
+ 'sector-size': SectorSize;
30
+ pbkdf: ArgonPbkdf | Pbkdf2Pbkdf;
31
+ }
32
+ export interface ArgonCryptoConfig extends BaseCryptoConfig {
33
+ pbkdf: ArgonPbkdf;
34
+ 'pbkdf-memory (KiB)': ArgonMemory;
35
+ 'pbkdf-parallel (threads)': ArgonParallel;
36
+ }
37
+ export interface Pbkdf2CryptoConfig extends BaseCryptoConfig {
38
+ pbkdf: Pbkdf2Pbkdf;
39
+ 'iter-time (ms)': Pbkdf2IterTime;
40
+ }
41
+ export type CryptoConfig = ArgonCryptoConfig | Pbkdf2CryptoConfig;
42
+ /**
43
+ * Runs the interactive prompt to configure LUKS encryption settings.
44
+ * @returns A Promise that resolves to the CryptoConfig object.
45
+ */
46
+ export declare function interactiveCryptoConfig(this: Ovary): Promise<CryptoConfig>;
47
+ export {};
@@ -0,0 +1,135 @@
1
+ /**
2
+ * ./src/classe/ovary.d/luks-interactive-crypto-config.ts
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Utils from '../utils.js';
9
+ // --- 1. CONSTANT VALUES ---
10
+ const CIPHER_OPTIONS = [
11
+ "aes-xts-plain64",
12
+ "serpent-xts-plain64",
13
+ "twofish-xts-plain64",
14
+ ];
15
+ const KEY_SIZE_OPTIONS = [512, 256];
16
+ const HASH_OPTIONS = ["sha512", "sha256"];
17
+ const SECTOR_SIZE_OPTIONS = [4096, 512];
18
+ const ARGON_MEMORY_OPTIONS = [524288, 1048576, 2097152];
19
+ const ARGON_PARALLEL_OPTIONS = [1, 2, 4, 8];
20
+ const PBKDF2_ITER_TIME_OPTIONS = [2000, 5000, 10000];
21
+ // --- 4. INTERACTIVE QUESTIONS (Internal) ---
22
+ // This array is not exported.
23
+ const questions = [
24
+ {
25
+ type: 'list',
26
+ name: 'cipher',
27
+ message: 'Choose the cipher algorithm:',
28
+ choices: CIPHER_OPTIONS,
29
+ default: 'aes-xts-plain64',
30
+ },
31
+ {
32
+ type: 'list',
33
+ name: 'key-size',
34
+ message: 'Choose the key size:',
35
+ choices: KEY_SIZE_OPTIONS.map(size => ({
36
+ name: `${size} bits ${size === 512 ? '(Standard for AES-256/XTS)' : '(Standard for AES-128/XTS)'}`,
37
+ value: size,
38
+ })),
39
+ default: 512,
40
+ },
41
+ {
42
+ type: 'list',
43
+ name: 'hash',
44
+ message: 'Choose the hash algorithm:',
45
+ choices: HASH_OPTIONS,
46
+ default: 'sha256',
47
+ },
48
+ {
49
+ type: 'list',
50
+ name: 'sector-size',
51
+ message: 'Choose the sector size:',
52
+ choices: SECTOR_SIZE_OPTIONS.map(size => ({
53
+ name: `${size} bytes ${size === 4096 ? '(Modern SSDs/NVMe)' : '(Legacy default)'}`,
54
+ value: size,
55
+ })),
56
+ default: 512,
57
+ },
58
+ {
59
+ type: 'list',
60
+ name: 'pbkdf',
61
+ message: 'Choose the key derivation function (PBKDF):',
62
+ choices: [
63
+ { name: 'argon2id (Recommended, LUKS2 default)', value: 'argon2id' },
64
+ { name: 'argon2i', value: 'argon2i' },
65
+ { name: 'pbkdf2 (LUKS1 standard)', value: 'pbkdf2' },
66
+ ],
67
+ default: 'argon2id',
68
+ },
69
+ {
70
+ type: 'list',
71
+ name: 'pbkdf-memory (KiB)',
72
+ message: 'Choose the memory cost for Argon2 (KiB):',
73
+ choices: ARGON_MEMORY_OPTIONS.map(mem => ({
74
+ name: `${mem / 1024 / 1024} GiB (${mem} KiB)`,
75
+ value: mem,
76
+ })),
77
+ default: 524288,
78
+ when: (answers) => answers.pbkdf === 'argon2id' || answers.pbkdf === 'argon2i',
79
+ },
80
+ {
81
+ type: 'list',
82
+ name: 'pbkdf-parallel (threads)',
83
+ message: 'Choose parallel threads for Argon2:',
84
+ choices: ARGON_PARALLEL_OPTIONS.map(threads => ({
85
+ name: `${threads} threads`,
86
+ value: threads,
87
+ })),
88
+ default: 4,
89
+ when: (answers) => answers.pbkdf === 'argon2id' || answers.pbkdf === 'argon2i',
90
+ },
91
+ {
92
+ type: 'list',
93
+ name: 'iter-time (ms)',
94
+ message: 'Choose the iteration time for PBKDF2 (ms):',
95
+ choices: PBKDF2_ITER_TIME_OPTIONS.map(time => ({
96
+ name: `${time / 1000} seconds (${time} ms)`,
97
+ value: time,
98
+ })),
99
+ default: 2000,
100
+ when: (answers) => answers.pbkdf === 'pbkdf2',
101
+ },
102
+ ];
103
+ // --- 5. EXPORTED MAIN FUNCTION ---
104
+ /**
105
+ * Runs the interactive prompt to configure LUKS encryption settings.
106
+ * @returns A Promise that resolves to the CryptoConfig object.
107
+ */
108
+ export async function interactiveCryptoConfig() {
109
+ // Default luksConfig
110
+ const defaultLuksConfig = {
111
+ 'cipher': 'aes-xts-plain64',
112
+ 'key-size': 512,
113
+ 'hash': 'sha256',
114
+ 'sector-size': 512,
115
+ 'pbkdf': 'argon2id',
116
+ 'pbkdf-memory (KiB)': 524288,
117
+ 'pbkdf-parallel (threads)': 4
118
+ };
119
+ const inquirer = (await import('inquirer')).default;
120
+ // Chiedi se usare la configurazione LUKS di default
121
+ const useDefault = await inquirer.prompt([{
122
+ type: 'confirm',
123
+ name: 'useDefault',
124
+ message: `Use default LUKS configuration`,
125
+ default: true
126
+ }]);
127
+ if (useDefault.useDefault) {
128
+ Utils.warning(`Using default LUKS configuration`);
129
+ return defaultLuksConfig;
130
+ }
131
+ const answers = await inquirer.prompt(questions);
132
+ // Use the double-cast fix to satisfy TypeScript
133
+ const finalConfig = answers;
134
+ return finalConfig;
135
+ }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * ./src/classes/ovary.d/initrd-luks.ts
3
- * penguins-eggs v.25.7.x / ecmascript 2020
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
4
  * author: Piero Proietti
5
5
  * email: piero.proietti@gmail.com
6
6
  * license: MIT
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * ./src/classes/ovary.d/initrd-luks.ts
3
- * penguins-eggs v.25.7.x / ecmascript 2020
3
+ * penguins-eggs v.25.10.x / ecmascript 2020
4
4
  * author: Piero Proietti
5
5
  * email: piero.proietti@gmail.com
6
6
  * license: MIT
@@ -54,7 +54,9 @@ export async function luksRoot() {
54
54
  warning(`creating partition LUKS: ${this.luksFile}`);
55
55
  await executeCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
56
56
  warning(`formatting ${this.luksFile} as a LUKS volume...`);
57
- await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
57
+ // await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
58
+ const luksFormatArgs = buildLuksFormatArgs(this.luksConfig, this.luksFile);
59
+ await executeCommand('cryptsetup', luksFormatArgs, `${this.luksPassword}\n`);
58
60
  warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
59
61
  await executeCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
60
62
  warning(`formatting ext4 (without journal)...`);
@@ -149,3 +151,35 @@ function bytesToGB(bytes) {
149
151
  const gigabytes = bytes / (1024 * 1024 * 1024);
150
152
  return gigabytes.toFixed(2) + ' GB';
151
153
  }
154
+ /**
155
+ * buildLuksFormatArgs
156
+ */
157
+ function buildLuksFormatArgs(config, luksFile) {
158
+ const args = [
159
+ '--batch-mode', // Per saltare la conferma "YES"
160
+ 'luksFormat',
161
+ '--type', 'luks2',
162
+ // Parametri base
163
+ '--cipher', config.cipher,
164
+ '--key-size', config['key-size'].toString(),
165
+ '--hash', config.hash,
166
+ '--sector-size', config['sector-size'].toString(),
167
+ '--pbkdf', config.pbkdf,
168
+ ];
169
+ // Aggiungi i parametri condizionali del PBKDF
170
+ switch (config.pbkdf) {
171
+ case 'argon2id':
172
+ case 'argon2i':
173
+ const argonConfig = config;
174
+ args.push('--pbkdf-memory', argonConfig['pbkdf-memory (KiB)'].toString());
175
+ args.push('--pbkdf-parallel', argonConfig['pbkdf-parallel (threads)'].toString());
176
+ break;
177
+ case 'pbkdf2':
178
+ const pbkdf2Config = config;
179
+ args.push('--iter-time', pbkdf2Config['iter-time (ms)'].toString());
180
+ break;
181
+ }
182
+ // Aggiungi il file di destinazione
183
+ args.push(luksFile);
184
+ return args;
185
+ }
@@ -63,6 +63,12 @@ export async function produce(kernel = '', clone = false, homecrypt = false, ful
63
63
  this.luksMountpoint = `/tmp/mnt/${this.luksMappedName}`;
64
64
  this.luksDevice = `/dev/mapper/${this.luksMappedName}`;
65
65
  this.luksPassword = '0'; // USARE UNA PASSWORD SICURA IN PRODUZIONE!
66
+ /**
67
+ * Al momento homecrypt resta con default
68
+ */
69
+ if (fullcrypt) {
70
+ this.luksConfig = await this.interactiveCryptoConfig();
71
+ }
66
72
  Utils.warning("You choose an encrypted eggs");
67
73
  await this.luksGetPassword();
68
74
  }
@@ -29,6 +29,7 @@ import { kernelCopy } from './ovary.d/kernel-copy.js';
29
29
  import { liveCreateStructure } from './ovary.d/live-create-structure.js';
30
30
  import { finished } from './ovary.d/finished.js';
31
31
  import { luksGetPassword } from './ovary.d/luks-get-password.js';
32
+ import { interactiveCryptoConfig, CryptoConfig } from './ovary.d/luks-interactive-crypto-config.js';
32
33
  import { luksHome } from './ovary.d/luks-home.js';
33
34
  import { installHomecryptSupport } from './ovary.d/luks-home-support.js';
34
35
  import { luksRootInitrd } from './ovary.d/luks-root-initrd.js';
@@ -70,6 +71,7 @@ export default class Ovary {
70
71
  luksFile: string;
71
72
  luksDevice: string;
72
73
  luksPassword: string;
74
+ luksConfig: CryptoConfig;
73
75
  fertilization: typeof fertilization;
74
76
  produce: typeof produce;
75
77
  addExclusion: typeof addExclusion;
@@ -79,6 +81,7 @@ export default class Ovary {
79
81
  createXdgAutostart: typeof createXdgAutostart;
80
82
  editLiveFs: typeof editLiveFs;
81
83
  luksGetPassword: typeof luksGetPassword;
84
+ interactiveCryptoConfig: typeof interactiveCryptoConfig;
82
85
  luksHome: typeof luksHome;
83
86
  installHomecryptSupport: typeof installHomecryptSupport;
84
87
  luksRoot: typeof luksRoot;