penguins-eggs 9.6.23 → 9.8.1

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 (128) hide show
  1. package/.oclif.manifest.json +1458 -1
  2. package/README.md +1527 -201
  3. package/addons/eggs/theme/livecd/grub.main.cfg +4 -4
  4. package/addons/eggs/theme/livecd/isolinux.main.cfg +5 -5
  5. package/bin/dev.js +6 -0
  6. package/bin/run +0 -0
  7. package/bin/run.js +7 -0
  8. package/conf/derivatives.yaml +23 -3
  9. package/conf/distros/README.md +25 -0
  10. package/conf/distros/bionic/calamares/calamares-modules/sources-yolk/module.yml +8 -0
  11. package/conf/distros/bionic/calamares/calamares-modules/sources-yolk/sources-yolk.sh +82 -0
  12. package/conf/distros/bionic/calamares/modules/packages.yml +6 -0
  13. package/conf/distros/{rolling/calamares-32 → bionic/calamares}/modules/removeuser.yml +2 -3
  14. package/conf/distros/bionic/calamares/modules/unpackfs.yml +6 -0
  15. package/conf/distros/buster/calamares/calamares-modules/bootloader-config/bootloader-config.sh +3 -3
  16. package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +1 -1
  17. package/conf/distros/buster/calamares/modules/bootloader.yml +2 -1
  18. package/conf/distros/buster/calamares/modules/fstab.yml +1 -1
  19. package/conf/distros/buster/calamares/modules/mount.yml +2 -2
  20. package/conf/distros/focal/calamares/modules/after_bootloader_context.yml +10 -1
  21. package/conf/distros/focal/calamares/modules/before_bootloader_mkdirs_context.yml +4 -4
  22. package/conf/distros/focal/calamares/modules/fstab.yml +1 -1
  23. package/conf/distros/focal/calamares/modules/mount.yml +2 -2
  24. package/conf/distros/focal/calamares/modules/shellprocess_bug-LP#1829805.yml +1 -1
  25. package/conf/distros/focal/calamares/modules/shellprocess_logs.yml +1 -1
  26. package/conf/distros/stretch/krill/krill-modules/bootloader-config/bootloader-config.sh +28 -0
  27. package/conf/distros/stretch/krill/krill-modules/bootloader-config/module.yml +8 -0
  28. package/conf/distros/stretch/krill/krill-modules/remove-link/module.yml +9 -0
  29. package/conf/distros/stretch/krill/krill-modules/remove-link/remove-link.sh +5 -0
  30. package/conf/distros/stretch/krill/krill-modules/sources-yolk/module.yml +8 -0
  31. package/conf/distros/stretch/krill/krill-modules/sources-yolk/sources-yolk.sh +75 -0
  32. package/conf/distros/stretch/krill/krill-modules/sources-yolk-unmount/module.yml +8 -0
  33. package/conf/distros/stretch/krill/modules/partitions.yml +8 -0
  34. package/conf/distros/stretch/krill/modules/removeuser.yml +15 -0
  35. package/conf/distros/{rolling/calamares-32 → stretch/krill}/settings.yml +50 -11
  36. package/conf/eggs.yaml +2 -9
  37. package/conf/{exclude.list.homes → exclude.list.d/home.list} +6 -1
  38. package/conf/{exclude.list.template → exclude.list.d/master.list} +16 -26
  39. package/conf/{exclude.list.usr → exclude.list.d/usr.list} +2 -2
  40. package/conf/exclude.list.d/var.list +21 -0
  41. package/conf/tools.yaml +1 -3
  42. package/dist/classes/compressors.js +11 -13
  43. package/dist/classes/daddy.js +1 -3
  44. package/dist/classes/distro.js +23 -4
  45. package/dist/classes/families/archlinux.js +7 -9
  46. package/dist/classes/families/debian.js +1 -1
  47. package/dist/classes/families/fedora.js +1 -1
  48. package/dist/classes/families/suse.js +1 -1
  49. package/dist/classes/incubation/branding.js +9 -3
  50. package/dist/classes/incubation/distros/bionic.js +8 -3
  51. package/dist/classes/incubation/distros/buster.js +8 -3
  52. package/dist/classes/incubation/distros/focal.js +8 -3
  53. package/dist/classes/incubation/distros/jessie.js +6 -3
  54. package/dist/classes/incubation/distros/rolling.js +8 -4
  55. package/dist/classes/incubation/fisherman-helper/packages.js +5 -2
  56. package/dist/classes/incubation/fisherman.js +18 -3
  57. package/dist/classes/incubation/incubator.js +7 -2
  58. package/dist/classes/incubation/installer.js +3 -1
  59. package/dist/classes/initrd.js +5 -5
  60. package/dist/classes/keyboards.js +4 -4
  61. package/dist/classes/network.js +7 -7
  62. package/dist/classes/ovary.js +136 -176
  63. package/dist/classes/pacman.js +12 -14
  64. package/dist/classes/pve-live.js +1 -1
  65. package/dist/classes/pxe.js +10 -12
  66. package/dist/classes/settings.js +19 -18
  67. package/dist/classes/systemctl.js +1 -1
  68. package/dist/classes/tailor.js +6 -6
  69. package/dist/classes/tools.js +4 -6
  70. package/dist/classes/users.js +10 -0
  71. package/dist/classes/utils.js +30 -0
  72. package/dist/classes/xdg.js +21 -8
  73. package/dist/classes/yolk.js +3 -5
  74. package/dist/commands/adapt.js +8 -8
  75. package/dist/commands/analyze.js +9 -12
  76. package/dist/commands/calamares.js +20 -23
  77. package/dist/commands/config.js +13 -13
  78. package/dist/commands/cuckoo.js +7 -7
  79. package/dist/commands/dad.js +12 -12
  80. package/dist/commands/export/deb.js +20 -25
  81. package/dist/commands/export/iso.js +11 -11
  82. package/dist/commands/install.js +41 -37
  83. package/dist/commands/kill.js +12 -15
  84. package/dist/commands/mom.js +7 -7
  85. package/dist/commands/produce.js +71 -47
  86. package/dist/commands/status.js +8 -8
  87. package/dist/commands/syncfrom.js +34 -40
  88. package/dist/commands/syncto.js +142 -202
  89. package/dist/commands/tools/clean.js +9 -9
  90. package/dist/commands/tools/ppa.js +12 -12
  91. package/dist/commands/tools/skel.js +10 -10
  92. package/dist/commands/tools/stat.js +11 -11
  93. package/dist/commands/tools/yolk.js +9 -9
  94. package/dist/commands/update.js +8 -8
  95. package/dist/commands/wardrobe/get.js +13 -10
  96. package/dist/commands/wardrobe/list.js +15 -13
  97. package/dist/commands/wardrobe/show.js +16 -13
  98. package/dist/commands/wardrobe/wear.js +16 -14
  99. package/dist/components/summary.js +5 -2
  100. package/dist/interfaces/i-analyze.js +8 -10
  101. package/dist/interfaces/{i-filters.js → i-excludes.js} +0 -1
  102. package/dist/krill/krill-prepare.js +23 -11
  103. package/dist/krill/krill-sequence.js +72 -73
  104. package/dist/krill/modules/fstab.js +59 -32
  105. package/dist/krill/modules/mkfs.js +29 -16
  106. package/dist/krill/modules/network-cfg.js +22 -21
  107. package/dist/krill/modules/partition.js +3 -3
  108. package/dist/lib/dependencies.js +1 -0
  109. package/dist/lib/select_filesystem_type.js +6 -1
  110. package/manpages/doc/man/eggs.1.gz +0 -0
  111. package/manpages/doc/man/eggs.html +128 -74
  112. package/mkinitcpio/biglinux/live.conf +74 -0
  113. package/mkinitcpio/biglinux/mkinitcpio.conf +73 -0
  114. package/package.json +43 -41
  115. package/scripts/_eggs +17 -14
  116. package/scripts/eggs.bash +6 -6
  117. package/conf/distros/rolling/calamares-32/modules/displaymanager.yml +0 -23
  118. package/conf/distros/rolling/calamares-32/modules/finished.yml +0 -6
  119. package/conf/distros/rolling/calamares-32/modules/fstab.yml +0 -14
  120. package/conf/distros/rolling/calamares-32/modules/locale.yml +0 -11
  121. package/conf/distros/rolling/calamares-32/modules/mount.yml +0 -39
  122. package/conf/distros/rolling/calamares-32/modules/packages.yml +0 -11
  123. package/conf/distros/rolling/calamares-32/modules/partition.yml +0 -283
  124. package/conf/distros/rolling/calamares-32/modules/shellprocess_removelink.yml +0 -8
  125. package/conf/distros/rolling/calamares-32/modules/unpackfs.yml +0 -7
  126. package/conf/distros/rolling/calamares-32/modules/users.yml +0 -20
  127. package/conf/exclude.list.custom +0 -3
  128. package/manpages/doc/man/README.md +0 -0
@@ -20,6 +20,22 @@ const utils_1 = tslib_1.__importDefault(require("../../classes/utils"));
20
20
  *
21
21
  */
22
22
  class Show extends core_1.Command {
23
+ static flags = {
24
+ help: core_1.Flags.help({ char: 'h' }),
25
+ json: core_1.Flags.boolean({ char: 'j', description: 'output JSON' }),
26
+ verbose: core_1.Flags.boolean({ char: 'v' }),
27
+ wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
28
+ };
29
+ static description = 'show costumes/accessories in wardrobe';
30
+ static args = {
31
+ repo: core_1.Args.string({ name: 'costume', description: 'costume to show', required: false }),
32
+ };
33
+ //static args = [{ name: 'costume', description: 'costume', required: false }]
34
+ static example = [
35
+ 'eggs wardrobe show colibri',
36
+ 'eggs wardrobe show accessories/firmwares',
37
+ 'eggs wardrobe show accessories/',
38
+ ];
23
39
  async run() {
24
40
  const { args, flags } = await this.parse(Show);
25
41
  const verbose = flags.verbose;
@@ -79,17 +95,4 @@ class Show extends core_1.Command {
79
95
  }
80
96
  }
81
97
  }
82
- Show.flags = {
83
- help: core_1.Flags.help({ char: 'h' }),
84
- json: core_1.Flags.boolean({ char: 'j', description: 'output JSON' }),
85
- verbose: core_1.Flags.boolean({ char: 'v' }),
86
- wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
87
- };
88
- Show.description = 'show costumes/accessories in wardrobe';
89
- Show.args = [{ name: 'costume', description: 'costume', required: false }];
90
- Show.example = [
91
- 'eggs wardrobe show colibri',
92
- 'eggs wardrobe show accessories/firmwares',
93
- 'eggs wardrobe show accessories/',
94
- ];
95
98
  exports.default = Show;
@@ -18,6 +18,22 @@ const tailor_1 = tslib_1.__importDefault(require("../../classes/tailor"));
18
18
  *
19
19
  */
20
20
  class Wear extends core_1.Command {
21
+ static flags = {
22
+ help: core_1.Flags.help({ char: 'h' }),
23
+ no_accessories: core_1.Flags.boolean({ char: 'a', description: 'not install accessories' }),
24
+ no_firmwares: core_1.Flags.boolean({ char: 'f', description: 'not install firmwares' }),
25
+ verbose: core_1.Flags.boolean({ char: 'v' }),
26
+ wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
27
+ };
28
+ static description = 'wear costume/accessories from wardrobe';
29
+ static args = {
30
+ repo: core_1.Args.string({ name: 'costume', description: 'costume to wear', required: false }),
31
+ };
32
+ static examples = [
33
+ 'sudo eggs wardrobe wear duck',
34
+ 'sudo eggs wardrobe wear accessories/firmwares',
35
+ 'sudo eggs wardrobe wear wagtail/waydroid',
36
+ ];
21
37
  async run() {
22
38
  const { argv, flags } = await this.parse(Wear);
23
39
  const verbose = flags.verbose;
@@ -70,18 +86,4 @@ class Wear extends core_1.Command {
70
86
  }
71
87
  }
72
88
  }
73
- Wear.flags = {
74
- help: core_1.Flags.help({ char: 'h' }),
75
- no_accessories: core_1.Flags.boolean({ char: 'a', description: 'not install accessories' }),
76
- no_firmwares: core_1.Flags.boolean({ char: 'f', description: 'not install firmwares' }),
77
- verbose: core_1.Flags.boolean({ char: 'v' }),
78
- wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
79
- };
80
- Wear.description = 'wear costume/accessories from wardrobe';
81
- Wear.args = [{ name: 'costume', description: 'costume', required: false }];
82
- Wear.examples = [
83
- 'sudo eggs wardrobe wear duck',
84
- 'sudo eggs wardrobe wear accessories/firmwares',
85
- 'sudo eggs wardrobe wear wagtail/waydroid',
86
- ];
87
89
  exports.default = Wear;
@@ -14,7 +14,7 @@ const title_1 = tslib_1.__importDefault(require("./elements/title"));
14
14
  const steps_1 = tslib_1.__importDefault(require("./elements/steps"));
15
15
  const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
16
16
  const fs_1 = tslib_1.__importDefault(require("fs"));
17
- function Summary({ name, password, rootPassword, hostname, region, zone, language, keyboardModel, keyboardLayout, installationDevice, message }) {
17
+ function Summary({ name, password, rootPassword, hostname, region, zone, language, keyboardModel, keyboardLayout, installationDevice, filesystemType, message }) {
18
18
  let productName = 'unknown';
19
19
  let version = 'x.x.x';
20
20
  let configRoot = '/etc/penguins-eggs.d/krill/';
@@ -75,7 +75,10 @@ function Summary({ name, password, rootPassword, hostname, region, zone, languag
75
75
  react_1.default.createElement(ink_1.Text, { color: "green" }, keyboardLayout)),
76
76
  react_1.default.createElement(ink_1.Box, null,
77
77
  react_1.default.createElement(ink_1.Text, { bold: true }, "Erase disk "),
78
- react_1.default.createElement(ink_1.Text, { color: "green" }, installationDevice)),
78
+ react_1.default.createElement(ink_1.Text, null,
79
+ installationDevice,
80
+ " formatting: ",
81
+ filesystemType)),
79
82
  react_1.default.createElement(ink_1.Box, null,
80
83
  react_1.default.createElement(ink_1.Text, { color: "red" }, message))))))));
81
84
  }
@@ -8,15 +8,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  * license: MIT
9
9
  */
10
10
  class IAnalyze {
11
- constructor() {
12
- this.login = '';
13
- this.password = '';
14
- this.uid = '';
15
- this.gid = '';
16
- this.gecos = '';
17
- this.home = '';
18
- this.shell = '';
19
- this.size = 0;
20
- }
11
+ login = '';
12
+ password = '';
13
+ uid = '';
14
+ gid = '';
15
+ gecos = '';
16
+ home = '';
17
+ shell = '';
18
+ size = 0;
21
19
  }
22
20
  exports.default = IAnalyze;
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //export interface IFilters { }
@@ -67,6 +67,7 @@ const fs_1 = tslib_1.__importDefault(require("fs"));
67
67
  const systemctl_1 = tslib_1.__importDefault(require("../classes/systemctl"));
68
68
  const locales_1 = tslib_1.__importDefault(require("../classes/locales"));
69
69
  const keyboards_1 = tslib_1.__importDefault(require("../classes/keyboards"));
70
+ const pacman_1 = tslib_1.__importDefault(require("../classes/pacman"));
70
71
  // libraries
71
72
  const exec = require('../lib/utils').exec;
72
73
  const welcome_1 = tslib_1.__importDefault(require("../components/welcome"));
@@ -104,6 +105,12 @@ const config_file = '/etc/penguins-eggs.d/krill.yaml';
104
105
  *
105
106
  */
106
107
  class Krill {
108
+ krillConfig = {};
109
+ locales = new locales_1.default();
110
+ keyboards = new keyboards_1.default();
111
+ unattended = false;
112
+ nointeractive = false;
113
+ halt = false;
107
114
  /**
108
115
  * constructor
109
116
  * @param unattended
@@ -111,12 +118,6 @@ class Krill {
111
118
  * @param halt
112
119
  */
113
120
  constructor(unattended = false, nointeractive = false, halt = false) {
114
- this.krillConfig = {};
115
- this.locales = new locales_1.default();
116
- this.keyboards = new keyboards_1.default();
117
- this.unattended = false;
118
- this.nointeractive = false;
119
- this.halt = false;
120
121
  this.unattended = unattended;
121
122
  this.nointeractive = nointeractive;
122
123
  this.halt = halt;
@@ -134,7 +135,7 @@ class Krill {
134
135
  * @param pve
135
136
  * @param verbose
136
137
  */
137
- async prepare(krillConfig = {}, ip = false, random = false, domain = '', suspend = false, small = false, none = false, cryped = false, pve = false, verbose = false) {
138
+ async prepare(krillConfig = {}, ip = false, random = false, domain = '', suspend = false, small = false, none = false, cryped = false, pve = false, btrfs = false, verbose = false) {
138
139
  /**
139
140
  * Check for disk presence
140
141
  */
@@ -210,6 +211,9 @@ class Krill {
210
211
  filesystemType: this.krillConfig.filesystemType,
211
212
  userSwapChoice: this.krillConfig.userSwapChoice
212
213
  };
214
+ if (btrfs) {
215
+ oPartitions.filesystemType = 'btrfs';
216
+ }
213
217
  if (suspend) {
214
218
  oPartitions.userSwapChoice = 'suspend';
215
219
  }
@@ -258,7 +262,7 @@ class Krill {
258
262
  oLocation = await this.location(oWelcome.language);
259
263
  //let kl = oWelcome.language.substring(oWelcome.language.indexOf('_'),2).toLowerCase()
260
264
  oKeyboard = await this.keyboard();
261
- oPartitions = await this.partitions(cryped, pve);
265
+ oPartitions = await this.partitions(cryped, pve, btrfs);
262
266
  oUsers = await this.users();
263
267
  oNetwork = await this.network();
264
268
  }
@@ -378,7 +382,7 @@ class Krill {
378
382
  /**
379
383
  * PARTITIONS
380
384
  */
381
- async partitions(crypted = false, pve = false) {
385
+ async partitions(crypted = false, pve = false, btrfs = false) {
382
386
  // Calamares won't use any devices with iso9660 filesystem on it.
383
387
  const drives = shelljs_1.default.exec('lsblk |grep disk|cut -f 1 "-d "', { silent: true }).stdout.trim().split('\n');
384
388
  const driveList = [];
@@ -397,6 +401,9 @@ class Krill {
397
401
  installationMode = 'lvm2';
398
402
  }
399
403
  let filesystemType = 'ext4';
404
+ if (pacman_1.default.packageIsInstalled("btrfs-progs")) {
405
+ filesystemType = 'btrfs';
406
+ }
400
407
  let userSwapChoice = 'small';
401
408
  let partitionsElem;
402
409
  while (true) {
@@ -413,7 +420,12 @@ class Krill {
413
420
  else if (pve) {
414
421
  installationMode = 'lvm2';
415
422
  }
416
- filesystemType = '';
423
+ if (btrfs) {
424
+ filesystemType = 'btrfs';
425
+ }
426
+ else {
427
+ filesystemType = 'ext4';
428
+ }
417
429
  userSwapChoice = '';
418
430
  }
419
431
  installationDevice = await (0, select_installation_device_1.default)();
@@ -533,7 +545,7 @@ class Krill {
533
545
  message = "Unattended installation will start in 5 seconds, press CTRL-C to abort!";
534
546
  }
535
547
  while (true) {
536
- summaryElem = react_1.default.createElement(summary_1.default, { name: users.name, 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, message: message });
548
+ summaryElem = react_1.default.createElement(summary_1.default, { name: users.name, 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 });
537
549
  if (this.unattended && this.nointeractive) {
538
550
  redraw(summaryElem);
539
551
  await sleep(5000);
@@ -48,8 +48,6 @@ const grubcfg_1 = tslib_1.__importDefault(require("./modules/grubcfg"));
48
48
  const bootloader_1 = tslib_1.__importDefault(require("./modules/bootloader"));
49
49
  const packages_1 = tslib_1.__importDefault(require("./modules/packages"));
50
50
  const remove_installer_link_1 = tslib_1.__importDefault(require("./modules/remove-installer-link"));
51
- // luksbootkeyfile:
52
- // plymouthcfg;
53
51
  const initramfs_cfg_1 = tslib_1.__importDefault(require("./modules/initramfs-cfg"));
54
52
  const initramfs_1 = tslib_1.__importDefault(require("./modules/initramfs"));
55
53
  const del_live_user_1 = tslib_1.__importDefault(require("./modules/del-live-user"));
@@ -64,80 +62,80 @@ const cfs_1 = tslib_1.__importDefault(require("../classes/cfs"));
64
62
  * hatching: installazione o cova!!!
65
63
  */
66
64
  class Sequence {
65
+ partition = partition_1.default;
66
+ // mount
67
+ mountFs = mount_fs_1.mountFs;
68
+ mountVfs = mount_vfs_1.mountVfs;
69
+ //
70
+ unpackfs = unpackfs_1.default;
71
+ machineId = machine_id_1.default;
72
+ fstab = fstab_1.default;
73
+ locale = locale_1.default;
74
+ keyboard = m_keyboard_1.default;
75
+ localeCfg = locale_cfg_1.default;
76
+ // users
77
+ addUser = add_user_1.default;
78
+ changePassword = change_password_1.default;
79
+ // displaumanager: autologin
80
+ networkCfg = network_cfg_1.default;
81
+ // hwclock:
82
+ // services-systemd:
83
+ // bootloader-config
84
+ bootloaderConfig = bootloader_config_1.default;
85
+ bootloaderConfigArch = bootloader_config_arch_1.default;
86
+ bootloaderConfigDebian = bootloader_config_debian_1.default;
87
+ //
88
+ grubcfg = grubcfg_1.default;
89
+ bootloader = bootloader_1.default;
90
+ packages = packages_1.default;
91
+ removeInstallerLink = remove_installer_link_1.default;
92
+ // luksbootkeyfile:
93
+ // plymouthcfg;
94
+ initramfsCfg = initramfs_cfg_1.default;
95
+ initramfs = initramfs_1.default;
96
+ delLiveUser = del_live_user_1.default;
97
+ umountFs = mount_fs_1.umountFs;
98
+ umountVfs = mount_vfs_1.umountVfs;
99
+ // to order in same way
100
+ timezone = m_timezone_1.default;
101
+ umount = umount_1.default;
102
+ mkfs = mkfs_1.default;
103
+ hostname = hostname_1.default;
104
+ installer = {};
105
+ installTarget = '/tmp/calamares-krill-root';
106
+ verbose = false;
107
+ echo = {};
108
+ efi = false;
109
+ devices = {};
110
+ users = {};
111
+ network = {};
112
+ partitions = {};
113
+ language = '';
114
+ region = '';
115
+ zone = '';
116
+ keyboardModel = '';
117
+ keyboardLayout = '';
118
+ keyboardVariant = '';
119
+ toNull = ' > /dev/null 2>&1';
120
+ settings = {};
121
+ remix = {};
122
+ distro = {};
123
+ // Crypted Clone
124
+ luksName = 'luks-volume';
125
+ luksFile = ``;
126
+ luksDevice = `/dev/mapper/${this.luksName}`;
127
+ luksMountpoint = `/mnt`;
128
+ // Clone (Uncrypted)
129
+ is_clone = fs_1.default.existsSync('penguins-eggs.d/is_clone');
130
+ is_crypted_clone = fs_1.default.existsSync('/etc/penguins-eggs.d/is_crypted_clone');
131
+ unattended = false;
132
+ nointeractive = false;
133
+ halt = false;
134
+ cliAutologin = new cli_autologin_1.default();
67
135
  /**
68
136
  * constructor
69
137
  */
70
138
  constructor(location, keyboard, partitions, users, network) {
71
- this.partition = partition_1.default;
72
- // mount
73
- this.mountFs = mount_fs_1.mountFs;
74
- this.mountVfs = mount_vfs_1.mountVfs;
75
- //
76
- this.unpackfs = unpackfs_1.default;
77
- this.machineId = machine_id_1.default;
78
- this.fstab = fstab_1.default;
79
- this.locale = locale_1.default;
80
- this.keyboard = m_keyboard_1.default;
81
- this.localeCfg = locale_cfg_1.default;
82
- // users
83
- this.addUser = add_user_1.default;
84
- this.changePassword = change_password_1.default;
85
- // displaumanager: autologin
86
- this.networkCfg = network_cfg_1.default;
87
- // hwclock:
88
- // services-systemd:
89
- // bootloader-config
90
- this.bootloaderConfig = bootloader_config_1.default;
91
- this.bootloaderConfigArch = bootloader_config_arch_1.default;
92
- this.bootloaderConfigDebian = bootloader_config_debian_1.default;
93
- //
94
- this.grubcfg = grubcfg_1.default;
95
- this.bootloader = bootloader_1.default;
96
- this.packages = packages_1.default;
97
- this.removeInstallerLink = remove_installer_link_1.default;
98
- // luksbootkeyfile:
99
- // plymouthcfg;
100
- this.initramfsCfg = initramfs_cfg_1.default;
101
- this.initramfs = initramfs_1.default;
102
- this.delLiveUser = del_live_user_1.default;
103
- this.umountFs = mount_fs_1.umountFs;
104
- this.umountVfs = mount_vfs_1.umountVfs;
105
- // to order in same way
106
- this.timezone = m_timezone_1.default;
107
- this.umount = umount_1.default;
108
- this.mkfs = mkfs_1.default;
109
- this.hostname = hostname_1.default;
110
- this.installer = {};
111
- this.installTarget = '/tmp/calamares-krill-root';
112
- this.verbose = false;
113
- this.echo = {};
114
- this.efi = false;
115
- this.devices = {};
116
- this.users = {};
117
- this.network = {};
118
- this.partitions = {};
119
- this.language = '';
120
- this.region = '';
121
- this.zone = '';
122
- this.keyboardModel = '';
123
- this.keyboardLayout = '';
124
- this.keyboardVariant = '';
125
- this.toNull = ' > /dev/null 2>&1';
126
- this.settings = {};
127
- this.remix = {};
128
- this.distro = {};
129
- // Crypted Clone
130
- this.luksName = 'luks-eggs-data';
131
- this.luksFile = `/run/live/medium/live/${this.luksName}`;
132
- this.luksDevice = `/dev/mapper/${this.luksName}`;
133
- this.luksMountpoint = `/mnt`;
134
- // Clone (Uncrypted)
135
- this.is_clone = fs_1.default.existsSync('/etc/penguins-eggs.d/is_clone');
136
- this.is_crypted_clone = fs_1.default.existsSync('/etc/penguins-eggs.d/is_crypted_clone');
137
- this.unattended = false;
138
- this.nointeractive = false;
139
- this.halt = false;
140
- this.cliAutologin = new cli_autologin_1.default();
141
139
  this.installer = (0, installer_1.installer)();
142
140
  this.settings = new settings_1.default();
143
141
  this.language = location.language;
@@ -156,6 +154,7 @@ class Sequence {
156
154
  this.devices.swap = {};
157
155
  this.distro = new distro_1.default(this.remix);
158
156
  this.efi = fs_1.default.existsSync('/sys/firmware/efi/efivars');
157
+ this.luksFile = `${this.distro.liveMediumPath}live/${this.luksName}`;
159
158
  }
160
159
  /**
161
160
  * install
@@ -308,7 +307,7 @@ class Sequence {
308
307
  }
309
308
  }
310
309
  else {
311
- await utils_1.default.pressKeyToExit(`Cannot find LUKS file ${this.luksFile}`);
310
+ await utils_1.default.pressKeyToExit(`Cannot find luks-volume file ${this.luksFile}`);
312
311
  }
313
312
  }
314
313
  // networkcfg
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  const tslib_1 = require("tslib");
12
12
  const utils_1 = tslib_1.__importDefault(require("../../classes/utils"));
13
13
  const shelljs_1 = tslib_1.__importDefault(require("shelljs"));
14
+ const pacman_1 = tslib_1.__importDefault(require("../../classes/pacman"));
14
15
  /**
15
16
  * fstab()
16
17
  * @param devices
@@ -18,11 +19,10 @@ const shelljs_1 = tslib_1.__importDefault(require("shelljs"));
18
19
  async function fstab(installDevice, crypted = false) {
19
20
  let text = '';
20
21
  /**
21
- * crypttab
22
- */
22
+ * crypttab
23
+ */
23
24
  if (this.partitions.installationMode === 'full-encrypted') {
24
25
  const crypttab = this.installTarget + '/etc/crypttab';
25
- text = '';
26
26
  text += '# /etc/crypttab: mappings for encrypted partitions.\n';
27
27
  text += '#\n';
28
28
  text += '# Each mapped device will be created in /dev/mapper, so your /etc/fstab\n';
@@ -42,43 +42,70 @@ async function fstab(installDevice, crypted = false) {
42
42
  text += `root_crypted UUID=${utils_1.default.uuid(this.devices.root.cryptedFrom)} none luks,swap\n`;
43
43
  utils_1.default.write(crypttab, text);
44
44
  }
45
+ /**
46
+ * fstab
47
+ */
48
+ if (!pacman_1.default.packageIsInstalled('btrfs-progs')) {
49
+ this.partitions.filesystemType === 'ext4';
50
+ }
45
51
  const fstab = this.installTarget + '/etc/fstab';
46
52
  let mountOptsRoot = '';
47
53
  let mountOptsBoot = '';
48
54
  let mountOptsData = '';
49
55
  let mountOptsEfi = '';
50
56
  let mountOptsSwap = '';
51
- if (await isRotational(installDevice)) {
52
- mountOptsRoot = 'defaults,relatime 0 1';
53
- mountOptsBoot = 'defaults,relatime 0 1';
54
- mountOptsData = 'defaults,relatime 0 1';
55
- mountOptsEfi = 'defaults,relatime 0 2';
56
- mountOptsSwap = 'defaults,relatime 0 2';
57
- }
58
- else {
59
- mountOptsRoot = 'defaults,noatime 0 1';
60
- mountOptsBoot = 'defaults,noatime 0 1';
61
- mountOptsData = 'defaults,noatime 0 1';
62
- mountOptsEfi = 'defaults,noatime 0 2';
63
- mountOptsSwap = 'defaults,noatime 0 2';
64
- }
65
- text = '';
66
- text += `# ${this.devices.root.name} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
67
- text += `UUID=${utils_1.default.uuid(this.devices.root.name)} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
68
- if (this.devices.boot.name !== 'none') {
69
- text += `# ${this.devices.boot.name} ${this.devices.boot.mountPoint} ${this.devices.boot.fsType} ${mountOptsBoot}\n`;
70
- text += `UUID=${utils_1.default.uuid(this.devices.boot.name)} ${this.devices.boot.mountPoint} ${this.devices.root.fsType} ${mountOptsBoot}\n`;
71
- }
72
- if (this.devices.data.name !== 'none') {
73
- text += `# ${this.devices.data.name} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
74
- text += `UUID=${utils_1.default.uuid(this.devices.data.name)} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
57
+ if (this.partitions.filesystemType === 'ext4') {
58
+ if (await isRotational(installDevice)) {
59
+ mountOptsRoot = 'defaults,relatime 0 1';
60
+ mountOptsBoot = 'defaults,relatime 0 1';
61
+ mountOptsData = 'defaults,relatime 0 1';
62
+ mountOptsEfi = 'defaults,relatime 0 2';
63
+ mountOptsSwap = 'defaults,relatime 0 2';
64
+ }
65
+ else {
66
+ mountOptsRoot = 'defaults,noatime 0 1';
67
+ mountOptsBoot = 'defaults,noatime 0 1';
68
+ mountOptsData = 'defaults,noatime 0 1';
69
+ mountOptsEfi = 'defaults,noatime 0 2';
70
+ mountOptsSwap = 'defaults,noatime 0 2';
71
+ }
72
+ text = '';
73
+ text += `# ${this.devices.root.name} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
74
+ text += `UUID=${utils_1.default.uuid(this.devices.root.name)} ${this.devices.root.mountPoint} ${this.devices.root.fsType} ${mountOptsRoot}\n`;
75
+ if (this.devices.boot.name !== 'none') {
76
+ text += `# ${this.devices.boot.name} ${this.devices.boot.mountPoint} ${this.devices.boot.fsType} ${mountOptsBoot}\n`;
77
+ text += `UUID=${utils_1.default.uuid(this.devices.boot.name)} ${this.devices.boot.mountPoint} ${this.devices.root.fsType} ${mountOptsBoot}\n`;
78
+ }
79
+ if (this.devices.data.name !== 'none') {
80
+ text += `# ${this.devices.data.name} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
81
+ text += `UUID=${utils_1.default.uuid(this.devices.data.name)} ${this.devices.data.mountPoint} ${this.devices.data.fsType} ${mountOptsData}\n`;
82
+ }
83
+ if (this.efi) {
84
+ text += `# ${this.devices.efi.name} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
85
+ text += `UUID=${utils_1.default.uuid(this.devices.efi.name)} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
86
+ }
87
+ text += `# ${this.devices.swap.name} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
88
+ text += `UUID=${utils_1.default.uuid(this.devices.swap.name)} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
75
89
  }
76
- if (this.efi) {
77
- text += `# ${this.devices.efi.name} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
78
- text += `UUID=${utils_1.default.uuid(this.devices.efi.name)} ${this.devices.efi.mountPoint} vfat ${mountOptsEfi}\n`;
90
+ else if (this.partitions.filesystemType === 'btrfs') {
91
+ let base = '/ btrfs subvol=/@,defaults 0 0';
92
+ let snapshots = '/.snapshots btrfs subvol=/@snapshots,defaults 0 0';
93
+ let home = '/home btrfs subvol=/@home,defaults 0 0';
94
+ let root = '/root btrfs subvol=/@root,defaults 0 0';
95
+ let var_log = '/var/log btrfs subvol=/@var@log,defaults 0 0';
96
+ let var_lib_AccountsService = '/var/lib/AccountsService btrfs subvol=/@var@lib@AccountsService,defaults 0 0';
97
+ let var_lib_blueman = '/var/lib/blueman btrfs subvol=/@var@lib@blueman,defaults 0 0';
98
+ let tmp = '/tmp btrfs subvol=/@tmp,defaults 0 0';
99
+ text += `# ${this.devices.root.name} btrfs ${this.devices.root.mountPoint} subvol\n`;
100
+ text += `UUID=${utils_1.default.uuid(this.devices.root.name)} ${base}\n`;
101
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${snapshots}\n`;
102
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${home}\n`;
103
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${root}\n`;
104
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${var_log}\n`;
105
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${var_lib_AccountsService}\n`;
106
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${var_lib_blueman}\n`;
107
+ text += `# UUID=${utils_1.default.uuid(this.devices.root.name)} ${tmp}\n`;
79
108
  }
80
- text += `# ${this.devices.swap.name} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
81
- text += `UUID=${utils_1.default.uuid(this.devices.swap.name)} ${this.devices.swap.mountPoint} ${this.devices.swap.fsType} ${mountOptsSwap}\n`;
82
109
  utils_1.default.write(fstab, text);
83
110
  }
84
111
  exports.default = fstab;
@@ -14,24 +14,37 @@ const utils_1 = require("../../lib/utils");
14
14
  */
15
15
  async function mkfs() {
16
16
  const result = true;
17
- if (this.efi) {
18
- await (0, utils_1.exec)(`mkdosfs -F 32 -I ${this.devices.efi.name} ${this.toNull}`, this.echo);
19
- }
20
- if (this.devices.boot.name !== 'none') {
21
- if (this.devices.boot.fsType === undefined) {
22
- this.devices.boot.fsType = 'ext2';
23
- this.devices.boot.mountPoint = '/boot';
17
+ if (this.partitions.filesystemType === 'ext4') {
18
+ if (this.efi) {
19
+ await (0, utils_1.exec)(`mkdosfs -F 32 -I ${this.devices.efi.name} ${this.toNull}`, this.echo);
20
+ }
21
+ if (this.devices.boot.name !== 'none') {
22
+ if (this.devices.boot.fsType === undefined) {
23
+ this.devices.boot.fsType = 'ext2';
24
+ this.devices.boot.mountPoint = '/boot';
25
+ }
26
+ await (0, utils_1.exec)(`mke2fs -Ft ${this.devices.boot.fsType} ${this.devices.boot.name} ${this.toNull}`, this.echo);
27
+ }
28
+ if (this.devices.root.name !== 'none') {
29
+ await (0, utils_1.exec)(`mke2fs -Ft ${this.devices.root.fsType} ${this.devices.root.name} ${this.toNull}`, this.echo);
30
+ }
31
+ if (this.devices.data.name !== 'none') {
32
+ await (0, utils_1.exec)(`mke2fs -Ft ${this.devices.data.fsType} ${this.devices.data.name} ${this.toNull}`, this.echo);
33
+ }
34
+ if (this.devices.swap.name !== 'none') {
35
+ await (0, utils_1.exec)(`mkswap ${this.devices.swap.name} ${this.toNull}`, this.echo);
24
36
  }
25
- await (0, utils_1.exec)(`mke2fs -Ft ${this.devices.boot.fsType} ${this.devices.boot.name} ${this.toNull}`, this.echo);
26
- }
27
- if (this.devices.root.name !== 'none') {
28
- await (0, utils_1.exec)(`mke2fs -Ft ${this.devices.root.fsType} ${this.devices.root.name} ${this.toNull}`, this.echo);
29
- }
30
- if (this.devices.data.name !== 'none') {
31
- await (0, utils_1.exec)(`mke2fs -Ft ${this.devices.data.fsType} ${this.devices.data.name} ${this.toNull}`, this.echo);
32
37
  }
33
- if (this.devices.swap.name !== 'none') {
34
- await (0, utils_1.exec)(`mkswap ${this.devices.swap.name} ${this.toNull}`, this.echo);
38
+ else if (this.partitions.filesystemType === 'btrfs') {
39
+ await (0, utils_1.exec)(`mkfs.btrfs -f ${this.devices.root.name} ${this.toNull}`, this.echo);
40
+ // create subvolumes
41
+ // await exec(`btrfs subvolume create /.snapshots ${this.toNull}`, this.echo)
42
+ // await exec(`btrfs subvolume create /home ${this.toNull}`, this.echo)
43
+ // await exec(`btrfs subvolume create /root ${this.toNull}`, this.echo)
44
+ // await exec(`btrfs subvolume create /var/log ${this.toNull}`, this.echo)
45
+ // await exec(`btrfs subvolume create /var/lib/AccountsService ${this.toNull}`, this.echo)
46
+ // await exec(`btrfs subvolume create /var/lib/blueman ${this.toNull}`, this.echo)
47
+ // await exec(`btrfs subvolume create /tmp ${this.toNull}`, this.echo)
35
48
  }
36
49
  return result;
37
50
  }