penguins-eggs 10.0.26 → 10.0.28
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 +2 -1463
- package/README.md +3 -741
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +4 -4
- package/package.json +3 -3
- package/scripts/love +13 -18
- package/dist/classes/bleach.d.ts +0 -32
- package/dist/classes/bleach.js +0 -136
- package/dist/classes/cfs.d.ts +0 -17
- package/dist/classes/cfs.js +0 -39
- package/dist/classes/cli-autologin.d.ts +0 -52
- package/dist/classes/cli-autologin.js +0 -230
- package/dist/classes/compressors.d.ts +0 -54
- package/dist/classes/compressors.js +0 -109
- package/dist/classes/daddy.d.ts +0 -26
- package/dist/classes/daddy.js +0 -161
- package/dist/classes/distro.d.ts +0 -36
- package/dist/classes/distro.js +0 -346
- package/dist/classes/families/alpine.d.ts +0 -55
- package/dist/classes/families/alpine.js +0 -108
- package/dist/classes/families/archlinux.d.ts +0 -61
- package/dist/classes/families/archlinux.js +0 -140
- package/dist/classes/families/debian.d.ts +0 -65
- package/dist/classes/families/debian.js +0 -138
- package/dist/classes/families/fedora.d.ts +0 -52
- package/dist/classes/families/fedora.js +0 -100
- package/dist/classes/families/mockup.d.ts +0 -60
- package/dist/classes/families/mockup.js +0 -79
- package/dist/classes/families/opensuse.d.ts +0 -52
- package/dist/classes/families/opensuse.js +0 -104
- package/dist/classes/incubation/branding.d.ts +0 -17
- package/dist/classes/incubation/branding.js +0 -89
- package/dist/classes/incubation/distros/bionic.d.ts +0 -32
- package/dist/classes/incubation/distros/bionic.js +0 -83
- package/dist/classes/incubation/distros/buster.d.ts +0 -32
- package/dist/classes/incubation/distros/buster.js +0 -85
- package/dist/classes/incubation/distros/jessie.d.ts +0 -31
- package/dist/classes/incubation/distros/jessie.js +0 -44
- package/dist/classes/incubation/distros/noble.d.ts +0 -32
- package/dist/classes/incubation/distros/noble.js +0 -85
- package/dist/classes/incubation/distros/rolling.d.ts +0 -32
- package/dist/classes/incubation/distros/rolling.js +0 -82
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -11
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +0 -39
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
- package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
- package/dist/classes/incubation/fisherman-helper/settings.js +0 -83
- package/dist/classes/incubation/fisherman.d.ts +0 -77
- package/dist/classes/incubation/fisherman.js +0 -251
- package/dist/classes/incubation/incubator.d.ts +0 -40
- package/dist/classes/incubation/incubator.js +0 -328
- package/dist/classes/incubation/installer.d.ts +0 -13
- package/dist/classes/incubation/installer.js +0 -64
- package/dist/classes/keyboards.d.ts +0 -50
- package/dist/classes/keyboards.js +0 -217
- package/dist/classes/locales.d.ts +0 -21
- package/dist/classes/locales.js +0 -80
- package/dist/classes/n8.d.ts +0 -18
- package/dist/classes/n8.js +0 -36
- package/dist/classes/network.d.ts +0 -37
- package/dist/classes/network.js +0 -98
- package/dist/classes/ovary.d.ts +0 -214
- package/dist/classes/ovary.js +0 -1879
- package/dist/classes/pacman.d.ts +0 -149
- package/dist/classes/pacman.js +0 -699
- package/dist/classes/pve-live.d.ts +0 -17
- package/dist/classes/pve-live.js +0 -52
- package/dist/classes/pxe.d.ts +0 -74
- package/dist/classes/pxe.js +0 -410
- package/dist/classes/settings.d.ts +0 -53
- package/dist/classes/settings.js +0 -185
- package/dist/classes/sources_list.d.ts +0 -28
- package/dist/classes/sources_list.js +0 -89
- package/dist/classes/systemctl.d.ts +0 -47
- package/dist/classes/systemctl.js +0 -86
- package/dist/classes/tailor.d.ts +0 -46
- package/dist/classes/tailor.js +0 -539
- package/dist/classes/tools.d.ts +0 -30
- package/dist/classes/tools.js +0 -54
- package/dist/classes/users.d.ts +0 -28
- package/dist/classes/users.js +0 -143
- package/dist/classes/utils.d.ts +0 -323
- package/dist/classes/utils.js +0 -946
- package/dist/classes/xdg.d.ts +0 -45
- package/dist/classes/xdg.js +0 -329
- package/dist/classes/yolk.d.ts +0 -33
- package/dist/classes/yolk.js +0 -114
- package/dist/commands/adapt.d.ts +0 -17
- package/dist/commands/adapt.js +0 -33
- package/dist/commands/analyze.d.ts +0 -26
- package/dist/commands/analyze.js +0 -95
- package/dist/commands/calamares.d.ts +0 -29
- package/dist/commands/calamares.js +0 -110
- package/dist/commands/config.d.ts +0 -35
- package/dist/commands/config.js +0 -192
- package/dist/commands/cuckoo.d.ts +0 -16
- package/dist/commands/cuckoo.js +0 -62
- package/dist/commands/dad.d.ts +0 -20
- package/dist/commands/dad.js +0 -46
- package/dist/commands/export/deb.d.ts +0 -19
- package/dist/commands/export/deb.js +0 -51
- package/dist/commands/export/iso.d.ts +0 -19
- package/dist/commands/export/iso.js +0 -55
- package/dist/commands/install.d.ts +0 -37
- package/dist/commands/install.js +0 -92
- package/dist/commands/kill.d.ts +0 -24
- package/dist/commands/kill.js +0 -50
- package/dist/commands/mom.d.ts +0 -16
- package/dist/commands/mom.js +0 -30
- package/dist/commands/produce.d.ts +0 -34
- package/dist/commands/produce.js +0 -199
- package/dist/commands/status.d.ts +0 -23
- package/dist/commands/status.js +0 -31
- package/dist/commands/syncfrom.d.ts +0 -45
- package/dist/commands/syncfrom.js +0 -152
- package/dist/commands/syncto.d.ts +0 -40
- package/dist/commands/syncto.js +0 -175
- package/dist/commands/tools/clean.d.ts +0 -18
- package/dist/commands/tools/clean.js +0 -37
- package/dist/commands/tools/ppa.d.ts +0 -26
- package/dist/commands/tools/ppa.js +0 -138
- package/dist/commands/tools/skel.d.ts +0 -18
- package/dist/commands/tools/skel.js +0 -44
- package/dist/commands/tools/stat.d.ts +0 -31
- package/dist/commands/tools/stat.js +0 -70
- package/dist/commands/tools/yolk.d.ts +0 -24
- package/dist/commands/tools/yolk.js +0 -45
- package/dist/commands/update.d.ts +0 -47
- package/dist/commands/update.js +0 -140
- package/dist/commands/wardrobe/get.d.ts +0 -23
- package/dist/commands/wardrobe/get.js +0 -52
- package/dist/commands/wardrobe/list.d.ts +0 -24
- package/dist/commands/wardrobe/list.js +0 -125
- package/dist/commands/wardrobe/show.d.ts +0 -25
- package/dist/commands/wardrobe/show.js +0 -97
- package/dist/commands/wardrobe/wear.d.ts +0 -26
- package/dist/commands/wardrobe/wear.js +0 -81
- package/dist/components/finished.d.ts +0 -15
- package/dist/components/finished.js +0 -55
- package/dist/components/information.d.ts +0 -8
- package/dist/components/information.js +0 -153
- package/dist/components/install.d.ts +0 -15
- package/dist/components/install.js +0 -56
- package/dist/components/keyboard.d.ts +0 -16
- package/dist/components/keyboard.js +0 -54
- package/dist/components/location.d.ts +0 -16
- package/dist/components/location.js +0 -59
- package/dist/components/network.d.ts +0 -19
- package/dist/components/network.js +0 -65
- package/dist/components/partitions.d.ts +0 -16
- package/dist/components/partitions.js +0 -73
- package/dist/components/steps.d.ts +0 -13
- package/dist/components/steps.js +0 -148
- package/dist/components/summary.d.ts +0 -24
- package/dist/components/summary.js +0 -82
- package/dist/components/title.d.ts +0 -11
- package/dist/components/title.js +0 -35
- package/dist/components/users.d.ts +0 -24
- package/dist/components/users.js +0 -80
- package/dist/components/welcome.d.ts +0 -13
- package/dist/components/welcome.js +0 -63
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -8
- package/dist/interfaces/i-addons.d.ts +0 -13
- package/dist/interfaces/i-addons.js +0 -8
- package/dist/interfaces/i-analyze.d.ts +0 -17
- package/dist/interfaces/i-analyze.js +0 -17
- package/dist/interfaces/i-app.d.ts +0 -14
- package/dist/interfaces/i-app.js +0 -8
- package/dist/interfaces/i-branding.d.ts +0 -36
- package/dist/interfaces/i-branding.js +0 -8
- package/dist/interfaces/i-calamares-partition.d.ts +0 -18
- package/dist/interfaces/i-calamares-partition.js +0 -8
- package/dist/interfaces/i-config-tools.d.ts +0 -18
- package/dist/interfaces/i-config-tools.js +0 -8
- package/dist/interfaces/i-devices.d.ts +0 -20
- package/dist/interfaces/i-devices.js +0 -8
- package/dist/interfaces/i-distro.d.ts +0 -27
- package/dist/interfaces/i-distro.js +0 -8
- package/dist/interfaces/i-drive-list.d.ts +0 -33
- package/dist/interfaces/i-drive-list.js +0 -8
- package/dist/interfaces/i-eggs-config.d.ts +0 -32
- package/dist/interfaces/i-eggs-config.js +0 -8
- package/dist/interfaces/i-excludes.d.ts +0 -14
- package/dist/interfaces/i-excludes.js +0 -8
- package/dist/interfaces/i-exec.d.ts +0 -11
- package/dist/interfaces/i-exec.js +0 -8
- package/dist/interfaces/i-initrd.d.ts +0 -13
- package/dist/interfaces/i-initrd.js +0 -8
- package/dist/interfaces/i-install.d.ts +0 -16
- package/dist/interfaces/i-install.js +0 -8
- package/dist/interfaces/i-installer.d.ts +0 -17
- package/dist/interfaces/i-installer.js +0 -8
- package/dist/interfaces/i-krill-config.d.ts +0 -33
- package/dist/interfaces/i-krill-config.js +0 -8
- package/dist/interfaces/i-krill.d.ts +0 -42
- package/dist/interfaces/i-krill.js +0 -8
- package/dist/interfaces/i-materia.d.ts +0 -41
- package/dist/interfaces/i-materia.js +0 -8
- package/dist/interfaces/i-net.d.ts +0 -16
- package/dist/interfaces/i-net.js +0 -8
- package/dist/interfaces/i-packages.d.ts +0 -16
- package/dist/interfaces/i-packages.js +0 -8
- package/dist/interfaces/i-partitions.d.ts +0 -16
- package/dist/interfaces/i-partitions.js +0 -8
- package/dist/interfaces/i-pxe.d.ts +0 -45
- package/dist/interfaces/i-pxe.js +0 -1
- package/dist/interfaces/i-remix.d.ts +0 -21
- package/dist/interfaces/i-remix.js +0 -8
- package/dist/interfaces/i-settings.d.ts +0 -33
- package/dist/interfaces/i-settings.js +0 -8
- package/dist/interfaces/i-user.d.ts +0 -14
- package/dist/interfaces/i-user.js +0 -8
- package/dist/interfaces/i-workdir.d.ts +0 -14
- package/dist/interfaces/i-workdir.js +0 -8
- package/dist/interfaces/i-xkb-model.d.ts +0 -24
- package/dist/interfaces/i-xkb-model.js +0 -8
- package/dist/interfaces/index.d.ts +0 -25
- package/dist/interfaces/index.js +0 -8
- package/dist/krill/modules/add-user.d.ts +0 -20
- package/dist/krill/modules/add-user.js +0 -50
- package/dist/krill/modules/bootloader-config-arch.d.ts +0 -14
- package/dist/krill/modules/bootloader-config-arch.js +0 -37
- package/dist/krill/modules/bootloader-config-debian.d.ts +0 -10
- package/dist/krill/modules/bootloader-config-debian.js +0 -50
- package/dist/krill/modules/bootloader-config.d.ts +0 -10
- package/dist/krill/modules/bootloader-config.js +0 -16
- package/dist/krill/modules/bootloader.d.ts +0 -14
- package/dist/krill/modules/bootloader.js +0 -30
- package/dist/krill/modules/change-password.d.ts +0 -15
- package/dist/krill/modules/change-password.js +0 -18
- package/dist/krill/modules/del-live-user.d.ts +0 -14
- package/dist/krill/modules/del-live-user.js +0 -38
- package/dist/krill/modules/fstab.d.ts +0 -14
- package/dist/krill/modules/fstab.js +0 -121
- package/dist/krill/modules/grubcfg.d.ts +0 -17
- package/dist/krill/modules/grubcfg.js +0 -29
- package/dist/krill/modules/hostname.d.ts +0 -13
- package/dist/krill/modules/hostname.js +0 -50
- package/dist/krill/modules/initramfs-cfg.d.ts +0 -14
- package/dist/krill/modules/initramfs-cfg.js +0 -25
- package/dist/krill/modules/initramfs.d.ts +0 -13
- package/dist/krill/modules/initramfs.js +0 -48
- package/dist/krill/modules/locale-cfg.d.ts +0 -10
- package/dist/krill/modules/locale-cfg.js +0 -61
- package/dist/krill/modules/locale.d.ts +0 -13
- package/dist/krill/modules/locale.js +0 -48
- package/dist/krill/modules/m-keyboard.d.ts +0 -14
- package/dist/krill/modules/m-keyboard.js +0 -79
- package/dist/krill/modules/m-timezone.d.ts +0 -14
- package/dist/krill/modules/m-timezone.js +0 -22
- package/dist/krill/modules/machine-id.d.ts +0 -15
- package/dist/krill/modules/machine-id.js +0 -30
- package/dist/krill/modules/mkfs.d.ts +0 -13
- package/dist/krill/modules/mkfs.js +0 -48
- package/dist/krill/modules/mount-fs.d.ts +0 -17
- package/dist/krill/modules/mount-fs.js +0 -60
- package/dist/krill/modules/mount-vfs.d.ts +0 -17
- package/dist/krill/modules/mount-vfs.js +0 -40
- package/dist/krill/modules/network-cfg.d.ts +0 -19
- package/dist/krill/modules/network-cfg.js +0 -64
- package/dist/krill/modules/packages.d.ts +0 -14
- package/dist/krill/modules/packages.js +0 -98
- package/dist/krill/modules/partition.d.ts +0 -20
- package/dist/krill/modules/partition.js +0 -324
- package/dist/krill/modules/remove-installer-link.d.ts +0 -13
- package/dist/krill/modules/remove-installer-link.js +0 -35
- package/dist/krill/modules/umount.d.ts +0 -14
- package/dist/krill/modules/umount.js +0 -27
- package/dist/krill/modules/unpackfs.d.ts +0 -13
- package/dist/krill/modules/unpackfs.js +0 -19
- package/dist/krill/prepare.d.ts +0 -78
- package/dist/krill/prepare.js +0 -626
- package/dist/krill/sequence.d.ts +0 -157
- package/dist/krill/sequence.js +0 -665
- package/dist/lib/get_address.d.ts +0 -8
- package/dist/lib/get_address.js +0 -23
- package/dist/lib/get_dns.d.ts +0 -8
- package/dist/lib/get_dns.js +0 -23
- package/dist/lib/get_domain.d.ts +0 -8
- package/dist/lib/get_domain.js +0 -23
- package/dist/lib/get_gateway.d.ts +0 -8
- package/dist/lib/get_gateway.js +0 -23
- package/dist/lib/get_hostname.d.ts +0 -8
- package/dist/lib/get_hostname.js +0 -23
- package/dist/lib/get_netmask.d.ts +0 -8
- package/dist/lib/get_netmask.js +0 -23
- package/dist/lib/get_password.d.ts +0 -8
- package/dist/lib/get_password.js +0 -36
- package/dist/lib/get_userfullname.d.ts +0 -8
- package/dist/lib/get_userfullname.js +0 -23
- package/dist/lib/get_username.d.ts +0 -8
- package/dist/lib/get_username.js +0 -23
- package/dist/lib/kill_me_softly.d.ts +0 -11
- package/dist/lib/kill_me_softly.js +0 -61
- package/dist/lib/select_address_type.d.ts +0 -8
- package/dist/lib/select_address_type.js +0 -24
- package/dist/lib/select_filesystem_type.d.ts +0 -8
- package/dist/lib/select_filesystem_type.js +0 -45
- package/dist/lib/select_installation_device.d.ts +0 -8
- package/dist/lib/select_installation_device.js +0 -30
- package/dist/lib/select_installation_mode.d.ts +0 -8
- package/dist/lib/select_installation_mode.js +0 -24
- package/dist/lib/select_interface.d.ts +0 -8
- package/dist/lib/select_interface.js +0 -24
- package/dist/lib/select_keyboard_layout.d.ts +0 -11
- package/dist/lib/select_keyboard_layout.js +0 -36
- package/dist/lib/select_keyboard_model.d.ts +0 -11
- package/dist/lib/select_keyboard_model.js +0 -34
- package/dist/lib/select_keyboard_option.d.ts +0 -11
- package/dist/lib/select_keyboard_option.js +0 -34
- package/dist/lib/select_keyboard_variant.d.ts +0 -11
- package/dist/lib/select_keyboard_variant.js +0 -35
- package/dist/lib/select_languages.d.ts +0 -8
- package/dist/lib/select_languages.js +0 -28
- package/dist/lib/select_regions.d.ts +0 -8
- package/dist/lib/select_regions.js +0 -24
- package/dist/lib/select_user_swap_choice.d.ts +0 -8
- package/dist/lib/select_user_swap_choice.js +0 -34
- package/dist/lib/select_zones.d.ts +0 -8
- package/dist/lib/select_zones.js +0 -518
- package/dist/lib/utils.d.ts +0 -34
- package/dist/lib/utils.js +0 -79
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/change-password.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 { exec } from '../../lib/utils.js';
|
|
10
|
-
/**
|
|
11
|
-
* changePassword
|
|
12
|
-
* @param name
|
|
13
|
-
* @param newPassword
|
|
14
|
-
*/
|
|
15
|
-
export default async function changePassword(name = 'live', newPassword = 'evolution') {
|
|
16
|
-
const cmd = `echo ${name}:${newPassword} | chroot ${this.installTarget} chpasswd ${this.toNull}`;
|
|
17
|
-
await exec(cmd, this.echo);
|
|
18
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/del-live-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
|
-
* delUser
|
|
12
|
-
* va corretto con users.conf di calamares
|
|
13
|
-
*/
|
|
14
|
-
export default function delLiveUser(this: Sequence): Promise<void>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/del-live-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
|
-
* delUser
|
|
13
|
-
* va corretto con users.conf di calamares
|
|
14
|
-
*/
|
|
15
|
-
export default async function delLiveUser() {
|
|
16
|
-
if (Utils.isLive()) {
|
|
17
|
-
const user = this.settings.config.user_opt;
|
|
18
|
-
let userExists = false;
|
|
19
|
-
try {
|
|
20
|
-
const cmd = `#!/bin/sh\ngetent passwd "${user}" > /dev/null`;
|
|
21
|
-
await exec(cmd, Utils.setEcho(this.verbose));
|
|
22
|
-
userExists = true;
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
console.log(error);
|
|
26
|
-
}
|
|
27
|
-
finally {
|
|
28
|
-
if (userExists) {
|
|
29
|
-
// debian family
|
|
30
|
-
let cmd = `chroot ${this.installTarget} deluser --remove-home ${user} ${this.toNull}`;
|
|
31
|
-
if (this.distro.familyId === 'archlinux') {
|
|
32
|
-
cmd = `chroot ${this.installTarget} sudo userdel -r ${user} ${this.toNull}`;
|
|
33
|
-
}
|
|
34
|
-
await exec(cmd, this.echo);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/fstab.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
|
-
* fstab()
|
|
12
|
-
* @param devices
|
|
13
|
-
*/
|
|
14
|
-
export default function fstab(this: Sequence, installDevice: string, crypted?: boolean): Promise<void>;
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/fstab.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 shx from 'shelljs';
|
|
10
|
-
import Pacman from '../../classes/pacman.js';
|
|
11
|
-
import Utils from '../../classes/utils.js';
|
|
12
|
-
/**
|
|
13
|
-
* fstab()
|
|
14
|
-
* @param devices
|
|
15
|
-
*/
|
|
16
|
-
export default async function fstab(installDevice, crypted = false) {
|
|
17
|
-
let text = '';
|
|
18
|
-
/**
|
|
19
|
-
* crypttab
|
|
20
|
-
*/
|
|
21
|
-
if (this.partitions.installationMode === 'full-encrypted') {
|
|
22
|
-
const crypttab = this.installTarget + '/etc/crypttab';
|
|
23
|
-
text += '# /etc/crypttab: mappings for encrypted partitions.\n';
|
|
24
|
-
text += '#\n';
|
|
25
|
-
text += '# Each mapped device will be created in /dev/mapper, so your /etc/fstab\n';
|
|
26
|
-
text += '# should use the /dev/mapper/<name> paths for encrypted devices.\n';
|
|
27
|
-
text += '#\n';
|
|
28
|
-
text += '# See crypttab(5) for the supported syntax.\n';
|
|
29
|
-
text += '#\n';
|
|
30
|
-
text += '# NOTE: You need not list your root (/) partition here, but it must be set up\n';
|
|
31
|
-
text += '# beforehand by the initramfs (/etc/mkinitcpio.conf). The same applies\n';
|
|
32
|
-
text += '# to encrypted swap, which should be set up with mkinitcpio-openswap\n';
|
|
33
|
-
text += '# for resume support.\n';
|
|
34
|
-
text += '#\n';
|
|
35
|
-
text += '# <name> <device> <password> <options>\n';
|
|
36
|
-
text += `#swap_crypted was ${this.devices.swap.cryptedFrom}\n`;
|
|
37
|
-
text += `swap_crypted UUID=${Utils.uuid(this.devices.swap.cryptedFrom)} none luks,discard\n`;
|
|
38
|
-
text += `#root_crypted was ${this.devices.root.cryptedFrom}\n`;
|
|
39
|
-
text += `root_crypted UUID=${Utils.uuid(this.devices.root.cryptedFrom)} none luks,swap\n`;
|
|
40
|
-
Utils.write(crypttab, text);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* fstab
|
|
44
|
-
*/
|
|
45
|
-
if (!Pacman.packageIsInstalled('btrfs-progs')) {
|
|
46
|
-
this.partitions.filesystemType === 'ext4';
|
|
47
|
-
}
|
|
48
|
-
const fstab = this.installTarget + '/etc/fstab';
|
|
49
|
-
let mountOptsRoot = '';
|
|
50
|
-
let mountOptsBoot = '';
|
|
51
|
-
let mountOptsData = '';
|
|
52
|
-
let mountOptsEfi = '';
|
|
53
|
-
let mountOptsSwap = '';
|
|
54
|
-
if (this.partitions.filesystemType === 'ext4') {
|
|
55
|
-
if (await isRotational(installDevice)) {
|
|
56
|
-
mountOptsRoot = 'defaults,relatime 0 1';
|
|
57
|
-
mountOptsBoot = 'defaults,relatime 0 1';
|
|
58
|
-
mountOptsData = 'defaults,relatime 0 1';
|
|
59
|
-
mountOptsEfi = 'defaults,relatime 0 2';
|
|
60
|
-
mountOptsSwap = 'defaults,relatime 0 2';
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
mountOptsRoot = 'defaults,noatime 0 1';
|
|
64
|
-
mountOptsBoot = 'defaults,noatime 0 1';
|
|
65
|
-
mountOptsData = 'defaults,noatime 0 1';
|
|
66
|
-
mountOptsEfi = 'defaults,noatime 0 2';
|
|
67
|
-
mountOptsSwap = 'defaults,noatime 0 2';
|
|
68
|
-
}
|
|
69
|
-
text = '';
|
|
70
|
-
text += `# ${this.devices.root.name} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
|
|
71
|
-
text += `UUID=${Utils.uuid(this.devices.root.name)} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
|
|
72
|
-
if (this.devices.boot.name !== 'none') {
|
|
73
|
-
text += `# ${this.devices.boot.name} ${this.devices.boot.mountPoint} ${this.devices.boot.fsType} ${mountOptsBoot}\n`;
|
|
74
|
-
text += `UUID=${Utils.uuid(this.devices.boot.name)} ${this.devices.boot.mountPoint} ${this.devices.root.fsType} ${mountOptsBoot}\n`;
|
|
75
|
-
}
|
|
76
|
-
if (this.devices.data.name !== 'none') {
|
|
77
|
-
text += `# ${this.devices.data.name} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
|
|
78
|
-
text += `UUID=${Utils.uuid(this.devices.data.name)} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
|
|
79
|
-
}
|
|
80
|
-
if (this.efi) {
|
|
81
|
-
text += `# ${this.devices.efi.name} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
|
|
82
|
-
text += `UUID=${Utils.uuid(this.devices.efi.name)} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
|
|
83
|
-
}
|
|
84
|
-
text += `# ${this.devices.swap.name} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
|
|
85
|
-
text += `UUID=${Utils.uuid(this.devices.swap.name)} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
|
|
86
|
-
}
|
|
87
|
-
else if (this.partitions.filesystemType === 'btrfs') {
|
|
88
|
-
const base = '/ btrfs subvol=/@,defaults 0 0';
|
|
89
|
-
const snapshots = '/.snapshots btrfs subvol=/@snapshots,defaults 0 0';
|
|
90
|
-
const home = '/home btrfs subvol=/@home,defaults 0 0';
|
|
91
|
-
const root = '/root btrfs subvol=/@root,defaults 0 0';
|
|
92
|
-
const var_log = '/var/log btrfs subvol=/@var@log,defaults 0 0';
|
|
93
|
-
const var_lib_AccountsService = '/var/lib/AccountsService btrfs subvol=/@var@lib@AccountsService,defaults 0 0';
|
|
94
|
-
const var_lib_blueman = '/var/lib/blueman btrfs subvol=/@var@lib@blueman,defaults 0 0';
|
|
95
|
-
const tmp = '/tmp btrfs subvol=/@tmp,defaults 0 0';
|
|
96
|
-
text += `# ${this.devices.root.name} btrfs ${this.devices.root.mountPoint} subvol\n`;
|
|
97
|
-
text += `UUID=${Utils.uuid(this.devices.root.name)} ${base}\n`;
|
|
98
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${snapshots}\n`;
|
|
99
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${home}\n`;
|
|
100
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${root}\n`;
|
|
101
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_log}\n`;
|
|
102
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_lib_AccountsService}\n`;
|
|
103
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_lib_blueman}\n`;
|
|
104
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${tmp}\n`;
|
|
105
|
-
}
|
|
106
|
-
Utils.write(fstab, text);
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* isRotational
|
|
110
|
-
* @param device
|
|
111
|
-
*/
|
|
112
|
-
async function isRotational(device) {
|
|
113
|
-
device = device.slice(4);
|
|
114
|
-
let response;
|
|
115
|
-
let retVal = false;
|
|
116
|
-
response = shx.exec(`cat /sys/block/${device}/queue/rotational`, { silent: true }).stdout.trim();
|
|
117
|
-
if (response === '1') {
|
|
118
|
-
retVal = true;
|
|
119
|
-
}
|
|
120
|
-
return retVal;
|
|
121
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/grubcfg.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
|
-
* grubcfg
|
|
12
|
-
* - open /etc/default/grub
|
|
13
|
-
* - find GRUB_CMDLINE_LINUX_DEFAULT=
|
|
14
|
-
* - replace with GRUB_CMDLINE_LINUX_DEFAULT=
|
|
15
|
-
* 's/GRUB_CMDLINE_LINUX_DEFAULT=.*$/GRUB_CMDLINE_LINUX_DEFAULT=/g'
|
|
16
|
-
*/
|
|
17
|
-
export default function grubcfg(this: Sequence): Promise<void>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/grubcfg.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 fs from 'node:fs';
|
|
10
|
-
import Utils from '../../classes/utils.js';
|
|
11
|
-
/**
|
|
12
|
-
* grubcfg
|
|
13
|
-
* - open /etc/default/grub
|
|
14
|
-
* - find GRUB_CMDLINE_LINUX_DEFAULT=
|
|
15
|
-
* - replace with GRUB_CMDLINE_LINUX_DEFAULT=
|
|
16
|
-
* 's/GRUB_CMDLINE_LINUX_DEFAULT=.*$/GRUB_CMDLINE_LINUX_DEFAULT=/g'
|
|
17
|
-
*/
|
|
18
|
-
export default async function grubcfg() {
|
|
19
|
-
const file = `${this.installTarget}/etc/default/grub`;
|
|
20
|
-
let content = '';
|
|
21
|
-
const grubs = fs.readFileSync(file, 'utf8').split('\n');
|
|
22
|
-
for (let i = 0; i < grubs.length; i++) {
|
|
23
|
-
if (grubs[i].includes('GRUB_CMDLINE_LINUX_DEFAULT=')) {
|
|
24
|
-
grubs[i] = this.partitions.installationMode === 'full-encrypted' ? `GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=${Utils.uuid(this.devices.swap.name)}"` : `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=${Utils.uuid(this.devices.swap.name)}"`;
|
|
25
|
-
}
|
|
26
|
-
content += grubs[i] + '\n';
|
|
27
|
-
}
|
|
28
|
-
fs.writeFileSync(file, content, 'utf-8');
|
|
29
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/hostnames.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
|
-
* hostname
|
|
12
|
-
*/
|
|
13
|
-
export default function hostname(this: Sequence, domain?: string): Promise<void>;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/hostnames.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 fs from 'node:fs';
|
|
10
|
-
/**
|
|
11
|
-
* hostname
|
|
12
|
-
*/
|
|
13
|
-
export default async function hostname(domain = '') {
|
|
14
|
-
const { hostname } = this.users;
|
|
15
|
-
/**
|
|
16
|
-
* hostname
|
|
17
|
-
*/
|
|
18
|
-
{
|
|
19
|
-
const file = this.installTarget + '/etc/hostname';
|
|
20
|
-
const text = hostname;
|
|
21
|
-
fs.writeFileSync(file, text);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* hosts
|
|
25
|
-
*/
|
|
26
|
-
{
|
|
27
|
-
const file = this.installTarget + '/etc/hosts';
|
|
28
|
-
if (domain === '(none)') {
|
|
29
|
-
domain = '';
|
|
30
|
-
}
|
|
31
|
-
let text = '127.0.0.1 localhost localhost.localdomain\n';
|
|
32
|
-
if (this.network.addressType === 'static') {
|
|
33
|
-
text += `${this.network.address} ${hostname} ${hostname}${domain} pvelocalhost pvelocalhost.pvelocaldomain\n`;
|
|
34
|
-
}
|
|
35
|
-
else if (domain === '') {
|
|
36
|
-
text += `127.0.1.1 ${hostname}\n`;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
text += `127.0.1.1 ${hostname} ${hostname}${domain}\n`;
|
|
40
|
-
}
|
|
41
|
-
text += '# The following lines are desirable for IPv6 capable hosts\n';
|
|
42
|
-
text += ':: 1 ip6 - localhost ip6 - loopback\n';
|
|
43
|
-
text += 'fe00:: 0 ip6 - localnet\n';
|
|
44
|
-
text += 'ff00:: 0 ip6 - mcastprefix\n';
|
|
45
|
-
text += 'ff02:: 1 ip6 - allnodes\n';
|
|
46
|
-
text += 'ff02:: 2 ip6 - allrouters\n';
|
|
47
|
-
text += 'ff02:: 3 ip6 - allhosts\n';
|
|
48
|
-
fs.writeFileSync(file, text);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/initramfs-cfg.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 initramfsCfg(this: Sequence, installDevice: string): Promise<void>;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/initramfs-cfg.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
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @param this
|
|
13
|
-
*/
|
|
14
|
-
export default async function initramfsCfg(installDevice) {
|
|
15
|
-
if (this.distro.familyId === 'debian') {
|
|
16
|
-
// userSwapChoices = ['none', 'small', 'suspend', 'file']
|
|
17
|
-
const file = this.installTarget + '/etc/initramfs-tools/conf.d/resume';
|
|
18
|
-
let text = '';
|
|
19
|
-
text += this.partitions.userSwapChoice === 'none' || this.partitions.userSwapChoice === 'file' ? '#RESUME=none\n' : 'RESUME=UUID=' + Utils.uuid(this.devices.swap.name);
|
|
20
|
-
Utils.write(file, text);
|
|
21
|
-
}
|
|
22
|
-
else if (this.distro.familyId === 'archlinux') {
|
|
23
|
-
console.log('initramfsCfg skipped');
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/initramfs.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
|
-
* initramfs()
|
|
12
|
-
*/
|
|
13
|
-
export default function initramfs(this: Sequence): Promise<void>;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/initramfs.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 path from 'node:path';
|
|
10
|
-
import Utils from '../../classes/utils.js';
|
|
11
|
-
import { exec } from '../../lib/utils.js';
|
|
12
|
-
// _dirname
|
|
13
|
-
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
14
|
-
/**
|
|
15
|
-
* initramfs()
|
|
16
|
-
*/
|
|
17
|
-
export default async function initramfs() {
|
|
18
|
-
if (this.distro.familyId === 'debian') {
|
|
19
|
-
let cmd = `chroot ${this.installTarget} mkinitramfs -o ~/initrd.img-$(uname -r) ${this.toNull}`;
|
|
20
|
-
try {
|
|
21
|
-
await exec(cmd, this.echo);
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
await Utils.pressKeyToExit(cmd);
|
|
25
|
-
}
|
|
26
|
-
cmd = `chroot ${this.installTarget} mv ~/initrd.img-$(uname -r) /boot ${this.toNull}`;
|
|
27
|
-
try {
|
|
28
|
-
await exec(cmd, this.echo);
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
await Utils.pressKeyToExit(cmd);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else if (this.distro.familyId === 'archlinux') {
|
|
35
|
-
let initrdImg = Utils.initrdImg();
|
|
36
|
-
initrdImg = initrdImg.slice(Math.max(0, initrdImg.lastIndexOf('/') + 1));
|
|
37
|
-
let cmd = `mkinitcpio -c ${path.resolve(__dirname, '../../../mkinitcpio/arch/mkinitcpio-install.conf')} -g ${this.installTarget}/boot/${initrdImg}`;
|
|
38
|
-
if (this.distro.distroId === 'Manjaro') {
|
|
39
|
-
cmd = `mkinitcpio -c ${path.resolve(__dirname, '../../../mkinitcpio/manjaro/mkinitcpio-install.conf')} -g ${this.installTarget}/boot/${initrdImg}`; // ${this.toNull}
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
await exec(cmd, Utils.setEcho(true));
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
await Utils.pressKeyToExit(cmd);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/locale-cfg.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
|
-
export default function localeCfg(this: Sequence): Promise<void>;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/locale-cfg.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 fs from 'node:fs';
|
|
10
|
-
/* localeCfg
|
|
11
|
-
* Enable the configured locales (those set by the user on the
|
|
12
|
-
* user page) in /etc/locale.gen, if they are available in the
|
|
13
|
-
* target system.
|
|
14
|
-
*/
|
|
15
|
-
export default async function localeCfg() {
|
|
16
|
-
/**
|
|
17
|
-
* influence: - locale-gen
|
|
18
|
-
*/
|
|
19
|
-
let supporteds = [];
|
|
20
|
-
if (this.distro.familyId === 'debian') {
|
|
21
|
-
// Format: en_US.UTF-8 UTF-8
|
|
22
|
-
supporteds = fs.readFileSync('/usr/share/i18n/SUPPORTED', 'utf8').split('\n');
|
|
23
|
-
}
|
|
24
|
-
else if (this.distro.familyId === 'archlinux') {
|
|
25
|
-
// shx.exec('localectl list-locales > /tmp/SUPPORTED') // with await exec don't work!
|
|
26
|
-
const supportedsSource = fs.readFileSync('/etc/locale.gen', 'utf8').split('\n');
|
|
27
|
-
// Original Format: #en_US.UTF-8 UTF-8
|
|
28
|
-
for (let line of supportedsSource) {
|
|
29
|
-
if (line.slice(0, 2) !== '# ') {
|
|
30
|
-
// se non è un commento
|
|
31
|
-
line = line.slice(1); // Rimuove #
|
|
32
|
-
}
|
|
33
|
-
supporteds.push(line);
|
|
34
|
-
}
|
|
35
|
-
// Format: en_US.UTF-8 UTF-8
|
|
36
|
-
}
|
|
37
|
-
const localeGenSource = fs.readFileSync(`${this.installTarget}/etc/locale.gen`, 'utf8').split('\n');
|
|
38
|
-
let localeGenDest = '';
|
|
39
|
-
const krillBookmark = '# Locales enabled by krill\n';
|
|
40
|
-
for (const line of localeGenSource) {
|
|
41
|
-
if (line.includes(krillBookmark)) {
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
localeGenDest += line + '\n';
|
|
45
|
-
}
|
|
46
|
-
localeGenDest += '\n';
|
|
47
|
-
localeGenDest += krillBookmark;
|
|
48
|
-
const locales = [];
|
|
49
|
-
if (this.language !== 'en_US.UTF-8') {
|
|
50
|
-
locales.push('en_US.UTF-8');
|
|
51
|
-
}
|
|
52
|
-
locales.push(this.language);
|
|
53
|
-
for (const supported of supporteds) {
|
|
54
|
-
for (const locale of locales) {
|
|
55
|
-
if (supported.includes(locale)) {
|
|
56
|
-
localeGenDest += `${supported}\n`;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
fs.writeFileSync(`${this.installTarget}/etc/locale.gen`, localeGenDest);
|
|
61
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/locale.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
|
-
* locale
|
|
12
|
-
*/
|
|
13
|
-
export default function locale(this: Sequence): Promise<void>;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/locale.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
|
-
/**
|
|
11
|
-
* locale
|
|
12
|
-
*/
|
|
13
|
-
export default async function locale() {
|
|
14
|
-
/**
|
|
15
|
-
* influcence: - /etc/default/locale
|
|
16
|
-
* - /etc/locale.conf
|
|
17
|
-
* - /etc/timezone
|
|
18
|
-
*/
|
|
19
|
-
const defaultLocale = this.language;
|
|
20
|
-
// /etc/default/locale
|
|
21
|
-
let file = this.installTarget + '/etc/default/locale';
|
|
22
|
-
let content = '';
|
|
23
|
-
content += `LANG=${defaultLocale}\n`;
|
|
24
|
-
content += `LC_CTYPE=${defaultLocale}\n`;
|
|
25
|
-
content += `LC_NUMERIC=${defaultLocale}\n`;
|
|
26
|
-
content += `LC_TIME=${defaultLocale}\n`;
|
|
27
|
-
content += `LC_COLLATE=${defaultLocale}\n`;
|
|
28
|
-
content += `LC_MONETARY=${defaultLocale}\n`;
|
|
29
|
-
content += `LC_MESSAGES=${defaultLocale}\n`;
|
|
30
|
-
content += `LC_PAPER=${defaultLocale}\n`;
|
|
31
|
-
content += `LC_NAME=${defaultLocale}\n`;
|
|
32
|
-
content += `LC_ADDRESS=${defaultLocale}\n`;
|
|
33
|
-
content += `LC_TELEPHONE=${defaultLocale}\n`;
|
|
34
|
-
content += `LC_MEASUREMENT=${defaultLocale}\n`;
|
|
35
|
-
content += `LC_IDENTIFICATION=${defaultLocale}\n`;
|
|
36
|
-
content += `LC_ALL=${defaultLocale}\n`;
|
|
37
|
-
Utils.write(file, content);
|
|
38
|
-
// /etc/locale.conf
|
|
39
|
-
file = this.installTarget + '/etc/locale.conf';
|
|
40
|
-
Utils.write(file, content);
|
|
41
|
-
// timezone
|
|
42
|
-
try {
|
|
43
|
-
await this.timezone();
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
await Utils.pressKeyToExit(JSON.stringify(error));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/m-keyboard.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 mKeyboard(this: Sequence): Promise<void>;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/m-keyboard.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 fs from 'node:fs';
|
|
10
|
-
import Utils from '../../classes/utils.js';
|
|
11
|
-
import { exec } from '../../lib/utils.js';
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @param this
|
|
15
|
-
*/
|
|
16
|
-
export default async function mKeyboard() {
|
|
17
|
-
/**
|
|
18
|
-
* influence: - /etc/default/keyboard (x11)
|
|
19
|
-
* - /etc/vconsole.conf (console)
|
|
20
|
-
* - /etc/X11/xorg.conf.d/00-keyboard.conf
|
|
21
|
-
*
|
|
22
|
-
* Problem: Actually don't update /etc/default/keyboard (x11)
|
|
23
|
-
* /etc/vconsole.conf is update in installed systems
|
|
24
|
-
*/
|
|
25
|
-
// systemd as default
|
|
26
|
-
let cmd = `chroot ${this.installTarget} localectl set-keymap ${this.keyboardLayout}`;
|
|
27
|
-
if (!Utils.isSystemd()) {
|
|
28
|
-
cmd = `chroot ${this.installTarget} setupcon ${this.toNull}`;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
await exec(cmd, this.echo);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
console.log(error);
|
|
35
|
-
Utils.pressKeyToExit(cmd, true);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* this must to be not necessary but...
|
|
39
|
-
*
|
|
40
|
-
* force change /etc/default/keyboard (x11)
|
|
41
|
-
* force change /etc/vconsole.conf
|
|
42
|
-
* force change /etc/X11/xorg.conf.d/00-keyboard.conf
|
|
43
|
-
*/
|
|
44
|
-
let content = '# KEYBOARD CONFIGURATION FILE\n\n';
|
|
45
|
-
content += '# Consult the keyboard(5) manual page.\n\n';
|
|
46
|
-
content += '# See penguins-eggs/src/krill/modules/m-keyboard.ts\n\n';
|
|
47
|
-
content += 'XKBMODEL="' + this.keyboardModel + '"\n';
|
|
48
|
-
content += 'XKBLAYOUT="' + this.keyboardLayout + '"\n';
|
|
49
|
-
content += 'XKBVARIANT="' + this.keyboardVariant + '"\n';
|
|
50
|
-
content += 'XKBOPTIONS=""\n';
|
|
51
|
-
content += '\n';
|
|
52
|
-
content += 'BACKSPACE="guess"\n';
|
|
53
|
-
Utils.write(this.installTarget + '/etc/default/keyboard', content);
|
|
54
|
-
/**
|
|
55
|
-
* vconsole.conf: dovrebbe dipendere da systemd
|
|
56
|
-
*/
|
|
57
|
-
if (Utils.isSystemd()) {
|
|
58
|
-
content = '# See penguins-eggs/src/krill/modules/set-keyboard.ts\n\n';
|
|
59
|
-
content += 'KEYMAP="' + this.keyboardLayout + '"\n';
|
|
60
|
-
content += 'FONT=\n';
|
|
61
|
-
content += 'FONT_MAP=\n';
|
|
62
|
-
Utils.write(this.installTarget + '/etc/vconsole.conf', content);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* 00-keyboard.conf: dovrebbe dipendere da X
|
|
66
|
-
*/
|
|
67
|
-
content = '# See penguins-eggs/src/krill/modules/set-keyboard.ts\n\n';
|
|
68
|
-
content += "# Read and parsed by systemd-localed. It's probably wise not to edit this file\n";
|
|
69
|
-
content += '# manually too freely.\n';
|
|
70
|
-
content += 'Section "InputClass"\n';
|
|
71
|
-
content += ' Identifier "system-keyboard"\n';
|
|
72
|
-
content += ' MatchIsKeyboard "on"\n';
|
|
73
|
-
content += ' Option "XkbLayout" "' + this.keyboardLayout + '"\n';
|
|
74
|
-
content += 'EndSection\n';
|
|
75
|
-
// Not always exist /etc/X11/xorg.conf.d
|
|
76
|
-
if (fs.existsSync(this.installTarget + '/etc/X11/xorg.conf.d')) {
|
|
77
|
-
Utils.write(this.installTarget + '/etc/X11/xorg.conf.d/00-keyboard.conf', content);
|
|
78
|
-
}
|
|
79
|
-
}
|