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.
- package/.oclif.manifest.json +1 -1
- package/README.md +28 -28
- package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
- package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
- package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
- package/addons/eggs/theme/applications/install-system.desktop +0 -0
- package/assets/calamares/install-system.sh +0 -0
- package/assets/penguins-eggs.desktop +0 -0
- package/assets/penguins-krill.desktop +0 -0
- package/assets/penguins-links-add.desktop +0 -0
- package/assets/penguins-live-installer.desktop +0 -0
- package/bin/dev.js +0 -0
- package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/focal/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/focal/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/noble/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/noble/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-aptsources.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-l10n-helper.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-logs-helper.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-nomodeset.sh +0 -0
- package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/opensuse/calamares/settings.yml +0 -0
- package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/init/unattended.sh +0 -0
- package/dist/classes/ovary.d/luks-home.js +11 -4
- package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
- package/dist/classes/ovary.d/luks-interactive-crypto-config.js +135 -0
- package/dist/classes/ovary.d/luks-root-initrd.d.ts +1 -1
- package/dist/classes/ovary.d/luks-root-initrd.js +1 -1
- package/dist/classes/ovary.d/luks-root.js +35 -1
- package/dist/classes/ovary.d/produce.js +6 -0
- package/dist/classes/ovary.d.ts +3 -0
- package/dist/classes/ovary.js +3 -0
- package/dracut/create-symlink +0 -0
- package/dracut/export +0 -0
- package/dracut/export-dracut-analysis +0 -0
- package/dracut/export-dracut-log +0 -0
- package/dracut/mkisofs +0 -0
- package/dracut/modules.d/00debug-shell/debug-hook.sh +0 -0
- package/dracut/modules.d/00debug-shell/module-setup.sh +0 -0
- package/dracut/modules.d/90block/block-cmdline.sh +0 -0
- package/dracut/modules.d/90block/module-setup.sh +0 -0
- package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +0 -0
- package/dracut/modules.d/95iso-scan/iso-scan.sh +0 -0
- package/dracut/modules.d/95iso-scan/module-setup.sh +0 -0
- package/dracut/modules.d/95luks-loop/luks-loop.sh +0 -0
- package/dracut/modules.d/95luks-loop/module-setup.sh +0 -0
- package/dracut/renew-initramfs +0 -0
- package/dracut/sbin2bin +0 -0
- package/dracut/update-dracut-conf-d +0 -0
- package/dracut/update-dracut-modules +0 -0
- package/eui/eui-autostart-cinnamon.desktop +0 -0
- package/eui/eui-autostart-xfce.desktop +0 -0
- package/eui/eui-create-image.sh +0 -0
- package/eui/eui-start.sh +0 -0
- package/package.json +124 -130
- package/perrisbrewery/scripts/postinst +0 -0
- package/perrisbrewery/scripts/postrm +0 -0
- package/perrisbrewery/scripts/preinst +0 -0
- package/perrisbrewery/scripts/prerm +0 -0
- package/scripts/99clean +0 -0
- package/scripts/adapt.sh +0 -0
- package/scripts/boot-encrypted-root.sh +138 -95
- package/scripts/bros/waydroid-helper.sh +0 -0
- package/scripts/lsb_release +0 -0
- package/scripts/mom.sh +0 -0
- package/scripts/mount-encrypted-home.sh +130 -65
- package/scripts/pve-live.service +0 -0
- package/scripts/pve-live.sh +0 -0
- package/scripts/resy +0 -0
package/.oclif.manifest.json
CHANGED
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
package/bin/dev.js
CHANGED
|
File without changes
|
package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/conf/init/unattended.sh
CHANGED
|
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
|
+
}
|
|
@@ -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
|
}
|
package/dist/classes/ovary.d.ts
CHANGED
|
@@ -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;
|