penguins-eggs 10.0.27 → 10.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.oclif.manifest.json +39 -2
  2. package/README.md +51 -29
  3. package/addons/README.md +0 -2
  4. package/addons/eggs/adapt/applications/eggs-adapt.desktop +1 -1
  5. package/addons/eggs/theme/livecd/isolinux.main.alpine.cfg +43 -0
  6. package/addons/eggs/theme/livecd/{isolinux.main.cfg → isolinux.main.original.cfg} +1 -1
  7. package/conf/distros/alpine/README.md +1 -1
  8. package/conf/distros/alpine/calamares/calamares-modules/bootloader-config/bootloader-config.sh +40 -0
  9. package/conf/distros/alpine/calamares/calamares-modules/bootloader-config/module.yml +9 -0
  10. package/conf/distros/alpine/calamares/calamares-modules/cleanup/cleanup.sh +13 -0
  11. package/conf/distros/alpine/calamares/calamares-modules/cleanup/module.yml +9 -0
  12. package/conf/distros/alpine/calamares/modules/bootloader.yml +57 -0
  13. package/conf/distros/alpine/calamares/modules/displaymanager.yml +23 -0
  14. package/conf/distros/alpine/calamares/modules/finished.yml +5 -0
  15. package/conf/distros/alpine/calamares/modules/fstab.yml +12 -0
  16. package/conf/distros/alpine/calamares/modules/locale.yml +98 -0
  17. package/conf/distros/alpine/calamares/modules/luksopenswaphookcfg.yml +5 -0
  18. package/conf/distros/alpine/calamares/modules/machineid.yml +17 -0
  19. package/conf/distros/alpine/calamares/modules/mount.yml +56 -0
  20. package/conf/distros/alpine/calamares/modules/packages.yml +6 -0
  21. package/conf/distros/alpine/calamares/modules/partition.yml +242 -0
  22. package/conf/distros/alpine/calamares/modules/removeuser.yml +15 -0
  23. package/conf/distros/alpine/calamares/modules/unpackfs.yml +6 -0
  24. package/conf/distros/alpine/calamares/modules/users.yml +18 -0
  25. package/conf/distros/alpine/calamares/modules/welcome.yml +19 -0
  26. package/conf/distros/alpine/calamares/settings.yml +57 -0
  27. package/conf/love.yaml +8 -0
  28. package/dist/classes/daddy.js +1 -1
  29. package/dist/classes/families/alpine.d.ts +1 -1
  30. package/dist/classes/families/alpine.js +70 -15
  31. package/dist/classes/incubation/distros/alpine.d.ts +32 -0
  32. package/dist/classes/incubation/distros/alpine.js +80 -0
  33. package/dist/classes/incubation/incubator.js +2 -2
  34. package/dist/classes/keyboards.js +78 -8
  35. package/dist/classes/ovary.js +10 -17
  36. package/dist/classes/pacman.js +6 -4
  37. package/dist/classes/pxe.d.ts +4 -4
  38. package/dist/classes/pxe.js +5 -5
  39. package/dist/classes/tailor.js +57 -9
  40. package/dist/classes/utils.js +5 -0
  41. package/dist/classes/xdg.js +1 -1
  42. package/dist/commands/love.d.ts +20 -0
  43. package/dist/commands/love.js +55 -0
  44. package/dist/commands/produce.js +3 -6
  45. package/dist/commands/syncfrom.d.ts +1 -1
  46. package/dist/commands/syncfrom.js +1 -1
  47. package/dist/components/summary.js +1 -1
  48. package/dist/interfaces/i-addons.d.ts +0 -1
  49. package/dist/krill/modules/add-user.js +1 -2
  50. package/dist/krill/modules/bootloader-config-alpine.d.ts +14 -0
  51. package/dist/krill/modules/bootloader-config-alpine.js +37 -0
  52. package/dist/krill/modules/bootloader-config.js +14 -5
  53. package/dist/krill/modules/machine-id.js +1 -1
  54. package/dist/krill/modules/mount-fs.js +5 -5
  55. package/dist/krill/modules/packages.js +58 -52
  56. package/dist/krill/prepare.js +1 -1
  57. package/dist/krill/sequence.d.ts +2 -0
  58. package/dist/krill/sequence.js +22 -0
  59. package/manpages/doc/man/eggs.1.gz +0 -0
  60. package/manpages/doc/man/eggs.html +21 -5
  61. package/mkinitfs/README.md +9 -0
  62. package/package.json +5 -5
  63. package/scripts/_eggs +9 -2
  64. package/scripts/eggs.bash +2 -1
  65. package/addons/eggs/ichoice/applications/eggs-ichoice.desktop +0 -23
  66. package/addons/eggs/ichoice/bin/eggs-ichoice.sh +0 -44
  67. package/scripts/love +0 -25
  68. /package/{addons/eggs/adapt/bin/adapt → scripts/adapt.sh} +0 -0
@@ -27,10 +27,10 @@ export default class Produce extends Command {
27
27
  'sudo eggs produce --theme lastos',
28
28
  'sudo eggs produce --excludes static # you can customize it',
29
29
  'sudo eggs produce --excludes homes # exclude /home/*',
30
- 'sudo eggs produce --excludes home # exclude ~/*',
30
+ 'sudo eggs produce --excludes home # exclude ~/*'
31
31
  ];
32
32
  static flags = {
33
- addons: Flags.string({ description: 'addons to be used: adapt, ichoice, pve, rsupport', multiple: true }),
33
+ addons: Flags.string({ description: 'addons to be used: adapt, pve, rsupport', multiple: true }),
34
34
  basename: Flags.string({ description: 'basename' }),
35
35
  clone: Flags.boolean({ char: 'c', description: 'clone' }),
36
36
  cryptedclone: Flags.boolean({ char: 'C', description: 'crypted clone' }),
@@ -48,7 +48,7 @@ export default class Produce extends Command {
48
48
  theme: Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
49
49
  unsecure: Flags.boolean({ char: 'u', description: '/root contents are included on live' }),
50
50
  verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
51
- yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' }),
51
+ yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' })
52
52
  };
53
53
  async run() {
54
54
  Utils.titles(this.id + ' ' + this.argv);
@@ -174,9 +174,6 @@ export default class Produce extends Command {
174
174
  if (flags.addons.includes('adapt')) {
175
175
  myAddons.adapt = true;
176
176
  }
177
- if (flags.addons.includes('ichoice')) {
178
- myAddons.ichoice = true;
179
- }
180
177
  if (flags.addons.includes('pve')) {
181
178
  myAddons.pve = true;
182
179
  }
@@ -21,9 +21,9 @@ export default class Syncfrom extends Command {
21
21
  verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
22
  };
23
23
  echo: {};
24
- luksFile: string;
25
24
  luksName: string;
26
25
  luksDevice: string;
26
+ luksFile: string;
27
27
  luksMountpoint: string;
28
28
  remix: IRemix;
29
29
  rootDir: string;
@@ -25,9 +25,9 @@ export default class Syncfrom extends Command {
25
25
  verbose: Flags.boolean({ char: 'v', description: 'verbose' })
26
26
  };
27
27
  echo = {};
28
- luksFile = '';
29
28
  luksName = 'luks-volume';
30
29
  luksDevice = `/dev/mapper/${this.luksName}`;
30
+ luksFile = '';
31
31
  luksMountpoint = `/tmp/mnt/${this.luksName}`;
32
32
  remix = {};
33
33
  rootDir = '/';
@@ -78,5 +78,5 @@ export default function Summary({ username = '', password = '', rootPassword = '
78
78
  " formatting: ",
79
79
  filesystemType)),
80
80
  React.createElement(Box, null,
81
- React.createElement(Text, { color: "red" }, message))))))));
81
+ React.createElement(Text, { color: "white", backgroundColor: "red" }, message))))))));
82
82
  }
@@ -7,7 +7,6 @@
7
7
  */
8
8
  export interface IAddons {
9
9
  adapt: boolean;
10
- ichoice: boolean;
11
10
  pve: boolean;
12
11
  rsupport: boolean;
13
12
  }
@@ -30,8 +30,7 @@ export default async function addUser(name = 'live', password = 'evolution', ful
30
30
  await exec(cmd, this.echo);
31
31
  // sudo ot wheel
32
32
  let group = 'sudo';
33
- if (this.distro.familyId === 'archlinux' ||
34
- this.distro.familyId === 'alpine') {
33
+ if (this.distro.familyId === 'archlinux' || this.distro.familyId === 'alpine') {
35
34
  group = 'wheel';
36
35
  }
37
36
  cmd = `chroot ${this.installTarget} usermod -aG ${group} ${name} ${this.toNull}`;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ./src/krill/modules/add-user.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Sequence from '../sequence.js';
10
+ /**
11
+ *
12
+ * @param this
13
+ */
14
+ export default function bootloaderConfigAlpine(this: Sequence): Promise<void>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ./src/krill/modules/add-user.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Utils from '../../classes/utils.js';
10
+ import { exec } from '../../lib/utils.js';
11
+ /**
12
+ *
13
+ * @param this
14
+ */
15
+ export default async function bootloaderConfigAlpine() {
16
+ let cmd = '';
17
+ if (this.efi) {
18
+ try {
19
+ cmd = `chroot ${this.installTarget} apk add grub grub-efi efibootmgr} ${this.toNull}`;
20
+ await exec(cmd, this.echo);
21
+ }
22
+ catch (error) {
23
+ console.log(error);
24
+ await Utils.pressKeyToExit(cmd, true);
25
+ }
26
+ }
27
+ else {
28
+ try {
29
+ cmd = `chroot ${this.installTarget} apk add grub grub-bios ${this.toNull}`;
30
+ await exec(cmd, this.echo);
31
+ }
32
+ catch (error) {
33
+ console.log(error);
34
+ await Utils.pressKeyToExit(cmd, true);
35
+ }
36
+ }
37
+ }
@@ -7,10 +7,19 @@
7
7
  * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
8
  */
9
9
  export default async function bootloaderConfig() {
10
- if (this.distro.familyId === 'debian') {
11
- this.bootloaderConfigDebian();
12
- }
13
- else if (this.distro.familyId === 'archlinux') {
14
- this.bootloaderConfigArch();
10
+ switch (this.distro.familyId) {
11
+ case 'alpine': {
12
+ await this.bootloaderConfigAlpine();
13
+ break;
14
+ }
15
+ case 'archlinux': {
16
+ await this.bootloaderConfigArch();
17
+ break;
18
+ }
19
+ case 'debian': {
20
+ await this.bootloaderConfigDebian();
21
+ break;
22
+ }
23
+ // No default
15
24
  }
16
25
  }
@@ -20,7 +20,7 @@ export default async function machineId() {
20
20
  await exec(`rm ${file}`, this.echo);
21
21
  }
22
22
  const distro = new Distro();
23
- if (distro.familyId === "alpine") {
23
+ if (distro.familyId === 'alpine') {
24
24
  await exec(`dbus-uuidgen > ${this.installTarget}/var/lib/dbus/machine-id`);
25
25
  await exec(`cp ${this.installTarget}/var/lib/dbus/machine-id ${this.installTarget}/etc/machine-id`);
26
26
  }
@@ -15,26 +15,26 @@ export async function mountFs() {
15
15
  if (!fs.existsSync(this.installTarget)) {
16
16
  await exec(`mkdir ${this.installTarget} ${this.toNull}`, this.echo);
17
17
  }
18
- // root
19
- await exec(`mount ${this.devices.root.name} ${this.installTarget}${this.devices.root.mountPoint} ${this.toNull}`, this.echo);
18
+ // root Alpine vuole -f per il mount
19
+ await exec(`mount -t ${this.devices.root.fsType} ${this.devices.root.name} ${this.installTarget}${this.devices.root.mountPoint} ${this.toNull}`, this.echo);
20
20
  await exec(`tune2fs -c 0 -i 0 ${this.devices.root.name} ${this.toNull}`, this.echo);
21
21
  await exec(`rm -rf ${this.installTarget}/lost+found ${this.toNull}`, this.echo);
22
22
  // boot
23
23
  if (this.devices.boot.name !== 'none') {
24
24
  await exec(`mkdir ${this.installTarget}/boot -p ${this.toNull}`, this.echo);
25
- await exec(`mount ${this.devices.boot.name} ${this.installTarget}${this.devices.boot.mountPoint} ${this.toNull}`, this.echo);
25
+ await exec(`mount -t ${this.devices.boot.fsType} ${this.devices.boot.name} ${this.installTarget}${this.devices.boot.mountPoint} ${this.toNull}`, this.echo);
26
26
  await exec(`tune2fs -c 0 -i 0 ${this.devices.boot.name} ${this.toNull}`, this.echo);
27
27
  }
28
28
  // data
29
29
  if (this.devices.data.name !== 'none') {
30
30
  await exec(`mkdir ${this.installTarget}${this.devices.data.mountPoint} -p ${this.toNull}`, this.echo);
31
- await exec(`mount ${this.devices.data.name} ${this.installTarget}${this.devices.data.mountPoint} ${this.toNull}`, this.echo);
31
+ await exec(`mount -t ${this.devices.data.fsType} ${this.devices.data.name} ${this.installTarget}${this.devices.data.mountPoint} ${this.toNull}`, this.echo);
32
32
  await exec(`tune2fs -c 0 -i 0 ${this.devices.data.name} ${this.toNull}`, this.echo);
33
33
  }
34
34
  // efi
35
35
  if (this.efi && !fs.existsSync(this.installTarget + this.devices.efi.mountPoint)) {
36
36
  await exec(`mkdir ${this.installTarget}${this.devices.efi.mountPoint} -p ${this.toNull}`, this.echo);
37
- await exec(`mount ${this.devices.efi.name} ${this.installTarget}${this.devices.efi.mountPoint} ${this.toNull}`, this.echo);
37
+ await exec(`mount -t ${this.devices.efi.fsType} ${this.devices.efi.name} ${this.installTarget}${this.devices.efi.mountPoint} ${this.toNull}`, this.echo);
38
38
  }
39
39
  return true;
40
40
  }
@@ -37,69 +37,75 @@ export default async function packages() {
37
37
  }
38
38
  }
39
39
  // Alpine
40
- if (this.distro.familyId === "alpine") {
41
- packages.backend = "apk";
40
+ if (this.distro.familyId === 'alpine') {
41
+ packages.backend = 'apk';
42
42
  }
43
- if (packages.backend === 'apt') {
44
- /**
45
- * apt
46
- */
47
- if (packagesToRemove != undefined && packagesToRemove.length > 0) {
48
- let cmd = `chroot ${this.installTarget} apt-get purge -y `;
49
- for (const elem of packagesToRemove) {
50
- if (Pacman.packageIsInstalled(elem)) {
51
- cmd += elem + ' ';
43
+ switch (packages.backend) {
44
+ case 'apt': {
45
+ /**
46
+ * apt
47
+ */
48
+ if (packagesToRemove != undefined && packagesToRemove.length > 0) {
49
+ let cmd = `chroot ${this.installTarget} apt-get purge -y `;
50
+ for (const elem of packagesToRemove) {
51
+ if (Pacman.packageIsInstalled(elem)) {
52
+ cmd += elem + ' ';
53
+ }
52
54
  }
55
+ await exec(`${cmd} ${this.toNull}`, this.echo);
56
+ const autoremove = `chroot ${this.installTarget} apt-get autoremove -y ${this.toNull}`;
57
+ await exec(autoremove, this.echo);
53
58
  }
54
- await exec(`${cmd} ${this.toNull}`, this.echo);
55
- const autoremove = `chroot ${this.installTarget} apt-get autoremove -y ${this.toNull}`;
56
- await exec(autoremove, this.echo);
57
- }
58
- if (packagesToInstall != undefined && packagesToInstall.length > 0) {
59
- let cmd = `chroot ${this.installTarget} apt-get install -y `;
60
- for (const elem of packagesToInstall) {
61
- cmd += elem + ' ';
59
+ if (packagesToInstall != undefined && packagesToInstall.length > 0) {
60
+ let cmd = `chroot ${this.installTarget} apt-get install -y `;
61
+ for (const elem of packagesToInstall) {
62
+ cmd += elem + ' ';
63
+ }
64
+ const update = `chroot ${this.installTarget} apt-get update ${this.toNull}`;
65
+ await exec(update, this.echo);
66
+ await exec(`${cmd} ${this.toNull}`, this.echo);
62
67
  }
63
- const update = `chroot ${this.installTarget} apt-get update ${this.toNull}`;
64
- await exec(update, this.echo);
65
- await exec(`${cmd} ${this.toNull}`, this.echo);
68
+ break;
66
69
  }
67
- }
68
- else if (packages.backend === 'pacman') {
69
- /**
70
- * pacman
71
- */
72
- if (packagesToRemove != undefined && packagesToRemove.length > 0) {
73
- let cmd = `chroot ${this.installTarget} pacman -R\n`;
74
- for (const elem of packagesToRemove) {
75
- cmd += elem + ' ';
70
+ case 'pacman': {
71
+ /**
72
+ * pacman
73
+ */
74
+ if (packagesToRemove != undefined && packagesToRemove.length > 0) {
75
+ let cmd = `chroot ${this.installTarget} pacman -R\n`;
76
+ for (const elem of packagesToRemove) {
77
+ cmd += elem + ' ';
78
+ }
79
+ await exec(`${cmd} ${echoYes}`, this.echo);
76
80
  }
77
- await exec(`${cmd} ${echoYes}`, this.echo);
78
- }
79
- if (packagesToInstall != undefined && packagesToInstall.length > 0) {
80
- for (const elem of packagesToInstall) {
81
- await exec(`chroot ${this.installTarget} pacman -S ${elem}`, echoYes);
81
+ if (packagesToInstall != undefined && packagesToInstall.length > 0) {
82
+ for (const elem of packagesToInstall) {
83
+ await exec(`chroot ${this.installTarget} pacman -S ${elem}`, echoYes);
84
+ }
82
85
  }
86
+ break;
83
87
  }
84
- }
85
- else if (packages.backend === 'apk') {
86
- /**
87
- * apk
88
- */
89
- if (packagesToRemove != undefined && packagesToRemove.length > 0) {
90
- let cmd = `chroot ${this.installTarget} apk del `;
91
- for (const elem of packagesToRemove) {
92
- cmd += elem + ' ';
88
+ case 'apk': {
89
+ /**
90
+ * apk
91
+ */
92
+ if (packagesToRemove != undefined && packagesToRemove.length > 0) {
93
+ let cmd = `chroot ${this.installTarget} apk del `;
94
+ for (const elem of packagesToRemove) {
95
+ cmd += elem + ' ';
96
+ }
97
+ await exec(`${cmd} ${this.toNull}`, this.echo);
93
98
  }
94
- await exec(`${cmd} ${this.toNull}`, this.echo);
95
- }
96
- if (packagesToInstall != undefined && packagesToInstall.length > 0) {
97
- let cmd = `chroot ${this.installTarget} apk add `;
98
- for (const elem of packagesToInstall) {
99
- cmd += elem + ' ';
99
+ if (packagesToInstall != undefined && packagesToInstall.length > 0) {
100
+ let cmd = `chroot ${this.installTarget} apk add `;
101
+ for (const elem of packagesToInstall) {
102
+ cmd += elem + ' ';
103
+ }
104
+ await exec(`${cmd} ${this.toNull}`, this.echo);
100
105
  }
101
- await exec(`${cmd} ${this.toNull}`, this.echo);
106
+ break;
102
107
  }
108
+ // No default
103
109
  }
104
110
  }
105
111
  }
@@ -540,7 +540,7 @@ export default class Krill {
540
540
  let summaryElem;
541
541
  let message = "Double check the installation disk: " + partitions.installationDevice;
542
542
  if (this.unattended && this.nointeractive) {
543
- message = "Unattended installation will start in 5 seconds, press CTRL-C to abort!";
543
+ message = "Unattended installation will start in 5 seconds...\npress CTRL-C to abort!";
544
544
  }
545
545
  while (true) {
546
546
  summaryElem = React.createElement(Summary, { username: users.username, password: users.password, rootPassword: users.rootPassword, hostname: users.hostname, region: location.region, zone: location.zone, language: location.language, keyboardModel: keyboard.keyboardModel, keyboardLayout: keyboard.keyboardLayout, installationDevice: partitions.installationDevice, filesystemType: partitions.filesystemType, message: message });
@@ -60,6 +60,7 @@ import addUser from './modules/add-user.js';
60
60
  import changePassword from './modules/change-password.js';
61
61
  import networkCfg from './modules/network-cfg.js';
62
62
  import bootloaderConfig from './modules/bootloader-config.js';
63
+ import bootloaderConfigAlpine from './modules/bootloader-config-alpine.js';
63
64
  import bootloaderConfigArch from './modules/bootloader-config-arch.js';
64
65
  import bootloaderConfigDebian from './modules/bootloader-config-debian.js';
65
66
  import grubcfg from './modules/grubcfg.js';
@@ -90,6 +91,7 @@ export default class Sequence {
90
91
  changePassword: typeof changePassword;
91
92
  networkCfg: typeof networkCfg;
92
93
  bootloaderConfig: typeof bootloaderConfig;
94
+ bootloaderConfigAlpine: typeof bootloaderConfigAlpine;
93
95
  bootloaderConfigArch: typeof bootloaderConfigArch;
94
96
  bootloaderConfigDebian: typeof bootloaderConfigDebian;
95
97
  grubcfg: typeof grubcfg;
@@ -39,6 +39,7 @@ import networkCfg from './modules/network-cfg.js';
39
39
  // services-systemd:
40
40
  // bootloader-config
41
41
  import bootloaderConfig from './modules/bootloader-config.js';
42
+ import bootloaderConfigAlpine from './modules/bootloader-config-alpine.js';
42
43
  import bootloaderConfigArch from './modules/bootloader-config-arch.js';
43
44
  import bootloaderConfigDebian from './modules/bootloader-config-debian.js';
44
45
  import grubcfg from './modules/grubcfg.js';
@@ -81,6 +82,7 @@ export default class Sequence {
81
82
  // services-systemd:
82
83
  // bootloader-config
83
84
  bootloaderConfig = bootloaderConfig;
85
+ bootloaderConfigAlpine = bootloaderConfigAlpine;
84
86
  bootloaderConfigArch = bootloaderConfigArch;
85
87
  bootloaderConfigDebian = bootloaderConfigDebian;
86
88
  //
@@ -227,6 +229,7 @@ export default class Sequence {
227
229
  catch (error) {
228
230
  await Utils.pressKeyToExit(JSON.stringify(error));
229
231
  }
232
+ await sleep(500); // diamo il tempo di montare
230
233
  // mountVfs
231
234
  message = "Mounting on target VFS ";
232
235
  percent = 0.12;
@@ -663,3 +666,22 @@ function sleep(ms = 0) {
663
666
  setTimeout(resolve, ms);
664
667
  });
665
668
  }
669
+ /**
670
+ *
671
+ * @param message
672
+ */
673
+ async function emergencyShell(message) {
674
+ message = message + `type "exit" to exit.`;
675
+ try {
676
+ await redraw(React.createElement(React.Fragment, null,
677
+ React.createElement(Title, null),
678
+ React.createElement(Box, null,
679
+ React.createElement(Text, null, message))));
680
+ cliCursor.show();
681
+ await exec("/bin/bash");
682
+ cliCursor.hide();
683
+ }
684
+ catch (error) {
685
+ await Utils.pressKeyToExit(JSON.stringify(error));
686
+ }
687
+ }
Binary file
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1">
7
7
  </head>
8
8
  <body>
9
- <h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.27</h1>
9
+ <h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.30</h1>
10
10
  <h1>SYNOPSIS</h1>
11
11
  <p>eggs is a console utility, in active development, who let you to remaster your system and redistribuite it as live ISO image.</p>
12
12
  <h1>INSTALL</h1>
@@ -15,11 +15,11 @@
15
15
  </code></pre>
16
16
  <p>Arch</p>
17
17
  <pre><code>$ sudo pacman -S penguins-eggs
18
- $ sudo pacman -U penguins-eggs_10.0.27-1_amd64-1-x86_64.pkg.tar.zst
18
+ $ sudo pacman -U penguins-eggs_10.0.30-bionic-1_amd64-1-x86_64.pkg.tar.zst
19
19
  </code></pre>
20
20
  <p>Debian/Devuan/Ubuntu</p>
21
21
  <pre><code>$ sudo apt install penguins-eggs
22
- $ sudo dpkg -i penguins-eggs_10.0.27-1_amd64.deb
22
+ $ sudo dpkg -i penguins-eggs_10.0.30-bionic-1_amd64.deb
23
23
  </code></pre>
24
24
  <p>Manjaro</p>
25
25
  <pre><code>$ sudo pamac install penguins-eggs
@@ -27,7 +27,7 @@ $ sudo dpkg -i penguins-eggs_10.0.27-1_amd64.deb
27
27
  <h1>USAGE</h1>
28
28
  <pre><code>$ eggs (-v|--version|version)
29
29
 
30
- penguins-eggs/10.0.27
30
+ penguins-eggs/10.0.30
31
31
  $ eggs --help [COMMAND]
32
32
 
33
33
  USAGE
@@ -61,6 +61,7 @@ sudo eggs dad
61
61
  <li><a href="#eggs-install"><code>eggs install</code></a></li>
62
62
  <li><a href="#eggs-kill"><code>eggs kill</code></a></li>
63
63
  <li><a href="#eggs-krill"><code>eggs krill</code></a></li>
64
+ <li><a href="#eggs-love"><code>eggs love</code></a></li>
64
65
  <li><a href="#eggs-mom"><code>eggs mom</code></a></li>
65
66
  <li><a href="#eggs-produce"><code>eggs produce</code></a></li>
66
67
  <li><a href="#eggs-status"><code>eggs status</code></a></li>
@@ -357,6 +358,21 @@ EXAMPLES
357
358
  sudo eggs install --unattended --halt
358
359
 
359
360
  sudo eggs install --chroot
361
+ </code></pre>
362
+ <h2><code>eggs love</code></h2>
363
+ <p>the simplest way to get an egg!</p>
364
+ <pre><code>USAGE
365
+ $ eggs love [-h] [-v]
366
+
367
+ FLAGS
368
+ -h, --help Show CLI help.
369
+ -v, --verbose
370
+
371
+ DESCRIPTION
372
+ the simplest way to get an egg!
373
+
374
+ EXAMPLES
375
+ $ eggs auto
360
376
  </code></pre>
361
377
  <h2><code>eggs mom</code></h2>
362
378
  <p>ask help from mommy - TUI helper</p>
@@ -392,7 +408,7 @@ FLAGS
392
408
  -u, --unsecure /root contents are included on live
393
409
  -v, --verbose verbose
394
410
  -y, --yolk force yolk renew
395
- --addons=&#x3C;value>... addons to be used: adapt, ichoice, pve, rsupport
411
+ --addons=&#x3C;value>... addons to be used: adapt, pve, rsupport
396
412
  --basename=&#x3C;value> basename
397
413
  --excludes=&#x3C;value>... use: static, homes, home
398
414
  --links=&#x3C;value>... desktop links
@@ -44,3 +44,12 @@ Le istruzioni di `sidecar.sh` utilizzano `/sysroot` come mountpoint per il mount
44
44
  Resta da vedere se è possibile includere questo in un vero init.
45
45
 
46
46
 
47
+
48
+ # overlaytmpfs=yes
49
+ When booting from a read-only filesystem, you can specify this flag to have
50
+ your changes written to an in-memory temporary overlayfs. The underlying
51
+ filesystem will always be mounted read-only, the overlay always writable.
52
+
53
+ # overlaytmpfsflags=lowerdir=/media/root-ro,upperdir=/media/root-rw/root,workdir=/media/root-rw/work
54
+ Optional comma-separated list of tmpfs(5) mount options when Boverlaytmpfs
55
+ is used. The default is mode=0755,rw, you cannot override.
package/package.json CHANGED
@@ -2,18 +2,18 @@
2
2
  "name": "penguins-eggs",
3
3
  "shortName": "eggs",
4
4
  "description": "A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others",
5
- "version": "10.0.27",
5
+ "version": "10.0.30",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"
9
9
  },
10
10
  "bugs": "https://github.com/pieroproietti/penguins-eggs/issues",
11
11
  "dependencies": {
12
- "@oclif/core": "^4.0.17",
12
+ "@oclif/core": "^4.0.18",
13
13
  "@oclif/plugin-autocomplete": "^3.1.11",
14
14
  "@oclif/plugin-help": "^6.2.8",
15
15
  "@oclif/plugin-version": "^2.2.10",
16
- "axios": "^1.7.3",
16
+ "axios": "^1.7.4",
17
17
  "chalk": "^5.3.0",
18
18
  "cli-cursor": "^4.0.0",
19
19
  "ink": "^5.0.1",
@@ -39,7 +39,7 @@
39
39
  "@types/netmask": "^2.0.5",
40
40
  "@types/node": "^20.14.12",
41
41
  "@types/node-static": "^0.7.11",
42
- "@types/react": "^18.3.3",
42
+ "@types/react": "^18.3.4",
43
43
  "@types/shelljs": "^0.8.15",
44
44
  "chai": "^5.1.1",
45
45
  "eslint": "^8.57.0",
@@ -47,7 +47,7 @@
47
47
  "eslint-config-oclif-typescript": "^3.1.9",
48
48
  "eslint-config-prettier": "^9.1.0",
49
49
  "mocha": "^10.6.0",
50
- "oclif": "^4.14.15",
50
+ "oclif": "^4.14.22",
51
51
  "perrisbrewery": "^10.0.1",
52
52
  "prettier": "^3.3.3",
53
53
  "shx": "^0.3.4",
package/scripts/_eggs CHANGED
@@ -184,6 +184,7 @@ _eggs() {
184
184
  "install[krill: the CLI system installer - the egg became a penguin!]" \
185
185
  "krill[krill: the CLI system installer - the egg became a penguin!]" \
186
186
  "kill[kill the eggs/free the nest]" \
187
+ "love[the simplest way to get an egg!]" \
187
188
  "mom[ask help from mommy - TUI helper]" \
188
189
  "produce[produce a live image from your system whithout your data]" \
189
190
  "status[informations about eggs status]" \
@@ -247,8 +248,8 @@ dad)
247
248
  _arguments -S \
248
249
  "(-c --clean)"{-c,--clean}"[remove old configuration before to create]" \
249
250
  "(-d --default)"{-d,--default}"[reset to default values]" \
250
- "(-h --help)"{-h,--help}"[Show CLI help.]" \
251
251
  "(-f --file)"{-f,--file}"[use a file configuration custom]:file:_files" \
252
+ "(-h --help)"{-h,--help}"[Show CLI help.]" \
252
253
  "(-v --verbose)"{-v,--verbose}"[]" \
253
254
  --help"[Show help for command]" \
254
255
  "*: :_files" ;;
@@ -298,6 +299,12 @@ _arguments -S \
298
299
  "(-v --verbose)"{-v,--verbose}"[verbose]" \
299
300
  --help"[Show help for command]" \
300
301
  "*: :_files" ;;
302
+ love)
303
+ _arguments -S \
304
+ "(-h --help)"{-h,--help}"[Show CLI help.]" \
305
+ "(-v --verbose)"{-v,--verbose}"[]" \
306
+ --help"[Show help for command]" \
307
+ "*: :_files" ;;
301
308
  mom)
302
309
  _arguments -S \
303
310
  "(-h --help)"{-h,--help}"[Show CLI help.]" \
@@ -305,7 +312,7 @@ _arguments -S \
305
312
  "*: :_files" ;;
306
313
  produce)
307
314
  _arguments -S \
308
- "*"--addons"[addons to be used: adapt, ichoice, pve, rsupport]:file:_files" \
315
+ "*"--addons"[addons to be used: adapt, pve, rsupport]:file:_files" \
309
316
  --basename"[basename]:file:_files" \
310
317
  "(-c --clone)"{-c,--clone}"[clone]" \
311
318
  "(-C --cryptedclone)"{-C,--cryptedclone}"[crypted clone]" \
package/scripts/eggs.bash CHANGED
@@ -16,12 +16,13 @@ analyze --help --verbose
16
16
  calamares --help --install --nointeractive --policies --release --remove --theme --verbose
17
17
  config --clean --help --nointeractive --verbose
18
18
  cuckoo --help
19
- dad --clean --default --help --file --verbose
19
+ dad --clean --default --file --help --verbose
20
20
  export:deb --all --clean --help --verbose
21
21
  export:iso --checksum --clean --help --verbose
22
22
  install --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --unattended --verbose
23
23
  krill --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --unattended --verbose
24
24
  kill --help --isos --nointeractive --verbose
25
+ love --help --verbose
25
26
  mom --help
26
27
  produce --addons --basename --clone --cryptedclone --excludes --help --links --max --noicon --nointeractive --pendrive --prefix --release --script --standard --theme --unsecure --verbose --yolk
27
28
  status --help --verbose
@@ -1,23 +0,0 @@
1
- [Desktop Entry]
2
- Name=Installazione Linux
3
- GenericName=Installazione Linux
4
- Exec=eggs-ichoice.sh
5
- Terminal=true
6
- Type=Application
7
- Icon=system-software-install
8
- Categories=system
9
- Name[it]=Installazione cli/gui
10
- GenericName[it]=Installazione cli/gui
11
- Comment[it]=Installazione cli/gui
12
- Name[en]=Installation cli/gui
13
- GenericName[en]=Installation cli/gui
14
- Comment[en]=Installation cli/gui
15
- Name[es]=Instalación cli/gui
16
- GenericName[es]=Instalación cli/gui
17
- Comment[es]=Instalación cli/gui
18
- Name[pt]=Instalação cli/gui
19
- GenericName[pt]=Instalação cli/gui
20
- Comment[pt]=Instalação cli/gui
21
- Name[fr]=Installation cli/gui
22
- GenericName[fr]=Installation cli/gui
23
- Comment[fr]=Installation cli/gui