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.
- package/.oclif.manifest.json +39 -2
- package/README.md +51 -29
- package/addons/README.md +0 -2
- package/addons/eggs/adapt/applications/eggs-adapt.desktop +1 -1
- package/addons/eggs/theme/livecd/isolinux.main.alpine.cfg +43 -0
- package/addons/eggs/theme/livecd/{isolinux.main.cfg → isolinux.main.original.cfg} +1 -1
- package/conf/distros/alpine/README.md +1 -1
- package/conf/distros/alpine/calamares/calamares-modules/bootloader-config/bootloader-config.sh +40 -0
- package/conf/distros/alpine/calamares/calamares-modules/bootloader-config/module.yml +9 -0
- package/conf/distros/alpine/calamares/calamares-modules/cleanup/cleanup.sh +13 -0
- package/conf/distros/alpine/calamares/calamares-modules/cleanup/module.yml +9 -0
- package/conf/distros/alpine/calamares/modules/bootloader.yml +57 -0
- package/conf/distros/alpine/calamares/modules/displaymanager.yml +23 -0
- package/conf/distros/alpine/calamares/modules/finished.yml +5 -0
- package/conf/distros/alpine/calamares/modules/fstab.yml +12 -0
- package/conf/distros/alpine/calamares/modules/locale.yml +98 -0
- package/conf/distros/alpine/calamares/modules/luksopenswaphookcfg.yml +5 -0
- package/conf/distros/alpine/calamares/modules/machineid.yml +17 -0
- package/conf/distros/alpine/calamares/modules/mount.yml +56 -0
- package/conf/distros/alpine/calamares/modules/packages.yml +6 -0
- package/conf/distros/alpine/calamares/modules/partition.yml +242 -0
- package/conf/distros/alpine/calamares/modules/removeuser.yml +15 -0
- package/conf/distros/alpine/calamares/modules/unpackfs.yml +6 -0
- package/conf/distros/alpine/calamares/modules/users.yml +18 -0
- package/conf/distros/alpine/calamares/modules/welcome.yml +19 -0
- package/conf/distros/alpine/calamares/settings.yml +57 -0
- package/conf/love.yaml +8 -0
- package/dist/classes/daddy.js +1 -1
- package/dist/classes/families/alpine.d.ts +1 -1
- package/dist/classes/families/alpine.js +70 -15
- package/dist/classes/incubation/distros/alpine.d.ts +32 -0
- package/dist/classes/incubation/distros/alpine.js +80 -0
- package/dist/classes/incubation/incubator.js +2 -2
- package/dist/classes/keyboards.js +78 -8
- package/dist/classes/ovary.js +10 -17
- package/dist/classes/pacman.js +6 -4
- package/dist/classes/pxe.d.ts +4 -4
- package/dist/classes/pxe.js +5 -5
- package/dist/classes/tailor.js +57 -9
- package/dist/classes/utils.js +5 -0
- package/dist/classes/xdg.js +1 -1
- package/dist/commands/love.d.ts +20 -0
- package/dist/commands/love.js +55 -0
- package/dist/commands/produce.js +3 -6
- package/dist/commands/syncfrom.d.ts +1 -1
- package/dist/commands/syncfrom.js +1 -1
- package/dist/components/summary.js +1 -1
- package/dist/interfaces/i-addons.d.ts +0 -1
- package/dist/krill/modules/add-user.js +1 -2
- package/dist/krill/modules/bootloader-config-alpine.d.ts +14 -0
- package/dist/krill/modules/bootloader-config-alpine.js +37 -0
- package/dist/krill/modules/bootloader-config.js +14 -5
- package/dist/krill/modules/machine-id.js +1 -1
- package/dist/krill/modules/mount-fs.js +5 -5
- package/dist/krill/modules/packages.js +58 -52
- package/dist/krill/prepare.js +1 -1
- package/dist/krill/sequence.d.ts +2 -0
- package/dist/krill/sequence.js +22 -0
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +21 -5
- package/mkinitfs/README.md +9 -0
- package/package.json +5 -5
- package/scripts/_eggs +9 -2
- package/scripts/eggs.bash +2 -1
- package/addons/eggs/ichoice/applications/eggs-ichoice.desktop +0 -23
- package/addons/eggs/ichoice/bin/eggs-ichoice.sh +0 -44
- package/scripts/love +0 -25
- /package/{addons/eggs/adapt/bin/adapt → scripts/adapt.sh} +0 -0
package/dist/commands/produce.js
CHANGED
|
@@ -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,
|
|
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
|
}
|
|
@@ -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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 ===
|
|
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 ===
|
|
41
|
-
packages.backend =
|
|
40
|
+
if (this.distro.familyId === 'alpine') {
|
|
41
|
+
packages.backend = 'apk';
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
cmd
|
|
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
|
-
|
|
64
|
-
await exec(update, this.echo);
|
|
65
|
-
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
68
|
+
break;
|
|
66
69
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
cmd
|
|
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
|
-
|
|
106
|
+
break;
|
|
102
107
|
}
|
|
108
|
+
// No default
|
|
103
109
|
}
|
|
104
110
|
}
|
|
105
111
|
}
|
package/dist/krill/prepare.js
CHANGED
|
@@ -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
|
|
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 });
|
package/dist/krill/sequence.d.ts
CHANGED
|
@@ -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;
|
package/dist/krill/sequence.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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=<value>... addons to be used: adapt,
|
|
411
|
+
--addons=<value>... addons to be used: adapt, pve, rsupport
|
|
396
412
|
--basename=<value> basename
|
|
397
413
|
--excludes=<value>... use: static, homes, home
|
|
398
414
|
--links=<value>... desktop links
|
package/mkinitfs/README.md
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
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 --
|
|
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
|