penguins-eggs 10.0.22 → 10.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/.oclif.manifest.json +8 -8
  2. package/README.md +27 -27
  3. package/addons/eggs/theme/livecd/grub.main.cfg +11 -5
  4. package/addons/eggs/theme/livecd/isolinux.main.cfg +10 -12
  5. package/conf/distros/devel/README.md +3 -0
  6. package/conf/distros/focal/README.md +3 -0
  7. package/conf/distros/jammy/README.md +1 -1
  8. package/conf/distros/noble/calamares/calamares-modules/.keepit +0 -0
  9. package/conf/distros/{focal/calamares/modules → noble/calamares/modules/focal-jammy}/fstab.yml +2 -2
  10. package/conf/distros/{focal/calamares/modules → noble/calamares/modules/focal-jammy}/mount.yml +2 -2
  11. package/conf/distros/{focal/calamares/modules → noble/calamares/modules/focal-jammy}/users.yml +2 -2
  12. package/conf/distros/noble/calamares/modules/mount.yml +1 -0
  13. package/conf/distros/noble/calamares/modules/partition.yml +2 -2
  14. package/conf/distros/noble/calamares/modules/users.yml +1 -0
  15. package/conf/distros/noble/calamares/modules/welcome.yml +1 -1
  16. package/conf/distros/noble/calamares/settings.yml +8 -8
  17. package/conf/distros/rolling/calamares/modules/finished.yml +1 -1
  18. package/dist/classes/bleach.js +22 -15
  19. package/dist/{lib → classes}/cli-autologin.d.ts +15 -6
  20. package/dist/{lib → classes}/cli-autologin.js +82 -36
  21. package/dist/classes/compressors.d.ts +1 -1
  22. package/dist/classes/compressors.js +10 -10
  23. package/dist/classes/daddy.d.ts +6 -6
  24. package/dist/classes/daddy.js +67 -67
  25. package/dist/classes/distro.js +206 -202
  26. package/dist/classes/families/alpine.js +2 -2
  27. package/dist/classes/incubation/distros/{focal.d.ts → noble.d.ts} +1 -1
  28. package/dist/classes/incubation/distros/{focal.js → noble.js} +1 -1
  29. package/dist/classes/incubation/incubator.js +5 -5
  30. package/dist/classes/keyboards.js +15 -0
  31. package/dist/classes/locales.js +25 -7
  32. package/dist/classes/ovary.d.ts +11 -11
  33. package/dist/classes/ovary.js +109 -93
  34. package/dist/classes/pacman.js +21 -19
  35. package/dist/classes/pxe.d.ts +6 -6
  36. package/dist/classes/pxe.js +42 -42
  37. package/dist/classes/utils.d.ts +5 -1
  38. package/dist/classes/utils.js +20 -17
  39. package/dist/classes/xdg.js +15 -14
  40. package/dist/classes/yolk.js +1 -1
  41. package/dist/commands/cuckoo.js +1 -1
  42. package/dist/commands/dad.d.ts +1 -1
  43. package/dist/commands/dad.js +5 -7
  44. package/dist/commands/produce.js +1 -1
  45. package/dist/commands/syncfrom.d.ts +1 -1
  46. package/dist/commands/syncfrom.js +1 -1
  47. package/dist/components/information.js +5 -10
  48. package/dist/components/summary.js +2 -1
  49. package/dist/interfaces/i-excludes.d.ts +2 -2
  50. package/dist/interfaces/i-pxe.d.ts +15 -15
  51. package/dist/krill/modules/add-user.js +10 -6
  52. package/dist/krill/modules/machine-id.js +1 -1
  53. package/dist/krill/modules/network-cfg.js +1 -1
  54. package/dist/krill/modules/packages.js +22 -0
  55. package/dist/krill/sequence.d.ts +1 -1
  56. package/dist/krill/sequence.js +3 -3
  57. package/dracut/README.md +84 -0
  58. package/dracut/dracut.conf +3 -0
  59. package/dracut/dracut.conf.d/90overlayfs.conf +5 -0
  60. package/dracut/dracut.conf.d/99custom.conf +4 -0
  61. package/dracut/install-dracut-99custom +1 -0
  62. package/dracut/usr/lib/dracut/modules.d/99custom/init-live.sh +4 -0
  63. package/dracut/usr/lib/dracut/modules.d/99custom/module-setup.sh +15 -0
  64. package/dracut/usr/lib/dracut/modules.d/99custom/mount-live.sh +25 -0
  65. package/manpages/doc/man/eggs.1.gz +0 -0
  66. package/manpages/doc/man/eggs.html +22 -28
  67. package/mkinitfs/README.md +46 -0
  68. package/mkinitfs/live.conf +2 -0
  69. package/mkinitfs/machine-id-gen.sh +3 -0
  70. package/mkinitfs/sidecar.sh +40 -0
  71. package/package.json +7 -5
  72. package/conf/distros/devel/calamares/calamares-modules/automirror/automirror.yml +0 -17
  73. package/conf/distros/devel/calamares/calamares-modules/automirror/main.py +0 -168
  74. package/conf/distros/devel/calamares/calamares-modules/automirror/module.yml +0 -7
  75. package/conf/distros/devel/calamares/modules/_packages.yml +0 -16
  76. package/conf/distros/devel/calamares/modules/after_bootloader_context.yml +0 -18
  77. package/conf/distros/devel/calamares/modules/automirror.yml +0 -16
  78. package/conf/distros/devel/calamares/modules/before_bootloader_context.yml +0 -24
  79. package/conf/distros/devel/calamares/modules/bootloader.yml +0 -33
  80. package/conf/distros/devel/calamares/modules/finished.yml +0 -3
  81. package/conf/distros/devel/calamares/modules/fstab.yml +0 -2
  82. package/conf/distros/devel/calamares/modules/grubcfg.yml +0 -3
  83. package/conf/distros/devel/calamares/modules/locale.yml +0 -8
  84. package/conf/distros/devel/calamares/modules/machineid.yml +0 -8
  85. package/conf/distros/devel/calamares/modules/mount.yml +0 -38
  86. package/conf/distros/devel/calamares/modules/partition.yml +0 -8
  87. package/conf/distros/devel/calamares/modules/shellprocess_add386arch.yml +0 -5
  88. package/conf/distros/devel/calamares/modules/shellprocess_bug-LP#1829805.yml +0 -5
  89. package/conf/distros/devel/calamares/modules/unpackfs.yml +0 -5
  90. package/conf/distros/devel/calamares/modules/users.yml +0 -23
  91. package/conf/distros/devel/calamares/modules/welcome.yml +0 -26
  92. package/conf/distros/devel/calamares/settings.yml +0 -72
  93. package/conf/distros/focal/calamares/calamares-modules/automirror/automirror.yml +0 -17
  94. package/conf/distros/focal/calamares/calamares-modules/automirror/main.py +0 -168
  95. package/conf/distros/focal/calamares/calamares-modules/automirror/module.yml +0 -7
  96. package/conf/distros/focal/calamares/modules/after_bootloader_context.yml +0 -19
  97. package/conf/distros/focal/calamares/modules/automirror.yml +0 -6
  98. package/conf/distros/focal/calamares/modules/before_bootloader_context.yml +0 -19
  99. package/conf/distros/focal/calamares/modules/before_bootloader_mkdirs_context.yml +0 -11
  100. package/conf/distros/focal/calamares/modules/bootloader.yml +0 -34
  101. package/conf/distros/focal/calamares/modules/finished.yml +0 -4
  102. package/conf/distros/focal/calamares/modules/grubcfg.yml +0 -5
  103. package/conf/distros/focal/calamares/modules/locale.yml +0 -9
  104. package/conf/distros/focal/calamares/modules/machineid.yml +0 -9
  105. package/conf/distros/focal/calamares/modules/partition.yml +0 -10
  106. package/conf/distros/focal/calamares/modules/shellprocess_add386arch.yml +0 -6
  107. package/conf/distros/focal/calamares/modules/shellprocess_bug-LP#1829805.yml +0 -5
  108. package/conf/distros/focal/calamares/modules/shellprocess_logs.yml +0 -6
  109. package/conf/distros/focal/calamares/modules/unpackfs.yml +0 -7
  110. package/conf/distros/focal/calamares/modules/welcome.yml +0 -26
  111. package/conf/distros/focal/calamares/settings.yml +0 -72
  112. package/conf/distros/noble/calamares/modules/before_bootloader_mkdirs_context.yml +0 -10
  113. package/conf/distros/noble/calamares/modules/displaymanager.yml +0 -9
  114. package/conf/distros/noble/calamares/modules/shellprocess_logs.yml +0 -5
  115. /package/conf/distros/noble/calamares/modules/{automirror.yml → _automirror.yml} +0 -0
  116. /package/conf/distros/noble/calamares/modules/{before_bootloader_context.yml → _before_bootloader_context.yml} +0 -0
  117. /package/conf/distros/{devel/calamares/modules/before_bootloader_mkdirs_context.yml → noble/calamares/modules/_before_bootloader_mkdirs_context.yml} +0 -0
  118. /package/conf/distros/{devel → noble}/calamares/modules/_displaymanager.yml +0 -0
  119. /package/conf/distros/noble/calamares/modules/{oemid.yml → _oemid.yml} +0 -0
  120. /package/conf/distros/noble/calamares/modules/{pkgselect_context.yml → _pkgselect_context.yml} +0 -0
  121. /package/conf/distros/noble/calamares/modules/{pkgselect_snap_context.yml → _pkgselect_snap_context.yml} +0 -0
  122. /package/conf/distros/{devel/calamares/modules/shellprocess_logs.yml → noble/calamares/modules/_shellprocess_logs.yml} +0 -0
  123. /package/conf/distros/noble/calamares/modules/{users.conf.oem → _users.conf.oem} +0 -0
@@ -104,219 +104,223 @@ class Distro {
104
104
  /**
105
105
  * Analize distroId
106
106
  */
107
- if (this.distroId === 'Alpine') {
108
- this.familyId = 'alpine';
109
- this.distroLike = 'Alpine';
110
- this.codenameId = 'rolling'; // questo viene rimosso dal nome
111
- this.codenameLikeId = 'alpine'; // prende alpine come codebaneLikeId
112
- this.liveMediumPath = '/mnt/'; // Qua è deciso da noi
113
- //this.liveMediumPath = '/run/live/medium/'
114
- this.squashfs = `live/filesystem.squashfs`;
115
- this.syslinuxPath = '/usr/share/syslinux/'; //correct
116
- this.pxelinuxPath = this.syslinuxPath;
117
- this.usrLibPath = '/usr/lib/';
118
- this.memdiskPath = this.syslinuxPath;
119
- this.isolinuxPath = this.syslinuxPath;
120
- // At the moment
121
- this.isCalamaresAvailable = true;
122
- }
123
- else if (this.distroId === 'Fedora') {
124
- this.familyId = 'fedora';
125
- this.distroLike = 'Fedora';
126
- this.codenameId = 'rolling';
127
- this.codenameLikeId = '40';
128
- this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
129
- this.squashfs = `live/filesystem.squashfs`;
130
- this.syslinuxPath = '/usr/share/syslinux/';
131
- this.pxelinuxPath = this.syslinuxPath;
132
- this.usrLibPath = '/usr/lib/';
133
- this.memdiskPath = this.syslinuxPath;
134
- this.isolinuxPath = this.syslinuxPath;
135
- // At the moment
136
- this.isCalamaresAvailable = false;
137
- }
138
- else if (this.distroId === 'openSUSE') {
139
- this.familyId = 'suse';
140
- this.distroLike = 'openSUSE';
141
- this.codenameId = 'rolling';
142
- this.codenameLikeId = 'Tumbleweed';
143
- this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
144
- this.squashfs = `live/filesystem.squashfs`;
145
- this.syslinuxPath = '/usr/share/syslinux/';
146
- this.pxelinuxPath = this.syslinuxPath;
147
- this.usrLibPath = '/usr/lib/';
148
- this.memdiskPath = this.syslinuxPath;
149
- this.isolinuxPath = this.syslinuxPath;
150
- // At the moment
151
- this.isCalamaresAvailable = false;
152
- }
153
- else {
154
- /**
155
- * Arch/Debian/Devuan/Manjaro and Ubuntu
156
- */
157
- switch (this.codenameId) {
158
- case 'jessie': {
159
- // Debian 8 jessie
160
- this.distroLike = 'Debian';
161
- this.codenameLikeId = 'jessie';
162
- this.liveMediumPath = '/lib/live/mount/medium/';
163
- this.isCalamaresAvailable = false;
164
- break;
165
- }
166
- case 'stretch': {
167
- // Debian 9 stretch
168
- this.distroLike = 'Debian';
169
- this.codenameLikeId = 'stretch';
170
- this.liveMediumPath = '/lib/live/mount/medium/';
171
- this.isCalamaresAvailable = false;
172
- break;
173
- }
174
- case 'buster': {
175
- // Debian 10 buster
176
- this.distroLike = 'Debian';
177
- this.codenameLikeId = 'buster';
178
- break;
179
- }
180
- case 'bullseye': {
181
- // Debian 11 bullseye
182
- this.distroLike = 'Debian';
183
- this.codenameLikeId = 'bullseye';
184
- break;
185
- }
186
- case 'bookworm': {
187
- // Debian 12 bookworm
188
- this.distroLike = 'Debian';
189
- this.codenameLikeId = 'bookworm';
190
- break;
191
- }
192
- case 'trixie': {
193
- // Debian 13 trixie
194
- this.distroLike = 'Debian';
195
- this.codenameLikeId = 'trixie';
196
- break;
197
- }
198
- case 'beowulf': {
199
- // Devuab 3 beowulf
200
- this.distroLike = 'Devuan';
201
- this.codenameLikeId = 'beowulf';
202
- break;
203
- }
204
- case 'chimaera': {
205
- // Devuab 4 chimaera
206
- this.distroLike = 'Devuan';
207
- this.codenameLikeId = 'chimaera';
208
- break;
209
- }
210
- case 'daedalus': {
211
- // Devuan 5 daedalus
212
- this.distroLike = 'Devuan';
213
- this.codenameLikeId = 'daedalus';
214
- break;
215
- }
216
- /**
217
- * Ubuntu LTS + actual
218
- */
219
- case 'bionic': {
220
- // Ubuntu 18.04 bionic LTS eol aprile 2023
221
- this.distroLike = 'Ubuntu';
222
- this.codenameLikeId = 'bionic';
223
- this.liveMediumPath = '/lib/live/mount/medium/';
224
- break;
225
- }
226
- case 'focal': {
227
- // Ubuntu 20.04 focal LTS
228
- this.distroLike = 'Ubuntu';
229
- this.codenameLikeId = 'focal';
230
- break;
231
- }
232
- case 'jammy': {
233
- // Ubuntu 22.04 jammy LTS
234
- this.distroLike = 'Ubuntu';
235
- this.codenameLikeId = 'jammy';
236
- break;
237
- }
238
- case 'noble': {
239
- // Ubuntu 24.04 noble LTS
240
- this.distroLike = 'Ubuntu';
241
- this.codenameLikeId = 'noble';
242
- break;
243
- }
244
- case 'devel': {
245
- // Ubuntu rhino
246
- this.distroLike = 'Ubuntu';
247
- this.codenameLikeId = 'devel';
248
- break;
249
- }
107
+ switch (this.distroId) {
108
+ case 'Alpine': {
109
+ this.familyId = 'alpine';
110
+ this.distroLike = 'Alpine';
111
+ this.codenameId = 'rolling'; // questo viene rimosso dal nome
112
+ this.codenameLikeId = 'alpine'; // prende alpine come codenaneLikeId
113
+ this.liveMediumPath = '/mnt/'; // Qua è deciso da noi
114
+ this.squashfs = `live/filesystem.squashfs`;
115
+ this.syslinuxPath = '/usr/share/syslinux/'; // correct
116
+ this.pxelinuxPath = this.syslinuxPath;
117
+ this.usrLibPath = '/usr/lib/';
118
+ this.memdiskPath = this.syslinuxPath;
119
+ this.isolinuxPath = this.syslinuxPath;
120
+ // At the moment
121
+ this.isCalamaresAvailable = false;
122
+ break;
123
+ }
124
+ case 'Fedora': {
125
+ this.familyId = 'fedora';
126
+ this.distroLike = 'Fedora';
127
+ this.codenameId = 'rolling';
128
+ this.codenameLikeId = '40';
129
+ this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
130
+ this.squashfs = `live/filesystem.squashfs`;
131
+ this.syslinuxPath = '/usr/share/syslinux/';
132
+ this.pxelinuxPath = this.syslinuxPath;
133
+ this.usrLibPath = '/usr/lib/';
134
+ this.memdiskPath = this.syslinuxPath;
135
+ this.isolinuxPath = this.syslinuxPath;
136
+ // At the moment
137
+ this.isCalamaresAvailable = false;
138
+ break;
139
+ }
140
+ case 'openSUSE': {
141
+ this.familyId = 'suse';
142
+ this.distroLike = 'openSUSE';
143
+ this.codenameId = 'rolling';
144
+ this.codenameLikeId = 'Tumbleweed';
145
+ this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
146
+ this.squashfs = `live/filesystem.squashfs`;
147
+ this.syslinuxPath = '/usr/share/syslinux/';
148
+ this.pxelinuxPath = this.syslinuxPath;
149
+ this.usrLibPath = '/usr/lib/';
150
+ this.memdiskPath = this.syslinuxPath;
151
+ this.isolinuxPath = this.syslinuxPath;
152
+ // At the moment
153
+ this.isCalamaresAvailable = false;
154
+ break;
155
+ }
156
+ default: {
250
157
  /**
251
- * Arch Linux/Garuda
158
+ * Arch/Debian/Devuan/Manjaro and Ubuntu
252
159
  */
253
- case 'Spizaetus':
254
- case 'n/a':
255
- case 'rolling': {
256
- this.familyId = 'archlinux';
257
- this.distroLike = 'Arch';
258
- this.codenameId = 'rolling';
259
- this.codenameLikeId = 'rolling';
260
- this.liveMediumPath = '/run/archiso/bootmnt/';
261
- this.squashfs = `arch/x86_64/airootfs.sfs`;
262
- break;
263
- }
264
- default: {
160
+ switch (this.codenameId) {
161
+ case 'jessie': {
162
+ // Debian 8 jessie
163
+ this.distroLike = 'Debian';
164
+ this.codenameLikeId = 'jessie';
165
+ this.liveMediumPath = '/lib/live/mount/medium/';
166
+ this.isCalamaresAvailable = false;
167
+ break;
168
+ }
169
+ case 'stretch': {
170
+ // Debian 9 stretch
171
+ this.distroLike = 'Debian';
172
+ this.codenameLikeId = 'stretch';
173
+ this.liveMediumPath = '/lib/live/mount/medium/';
174
+ this.isCalamaresAvailable = false;
175
+ break;
176
+ }
177
+ case 'buster': {
178
+ // Debian 10 buster
179
+ this.distroLike = 'Debian';
180
+ this.codenameLikeId = 'buster';
181
+ break;
182
+ }
183
+ case 'bullseye': {
184
+ // Debian 11 bullseye
185
+ this.distroLike = 'Debian';
186
+ this.codenameLikeId = 'bullseye';
187
+ break;
188
+ }
189
+ case 'bookworm': {
190
+ // Debian 12 bookworm
191
+ this.distroLike = 'Debian';
192
+ this.codenameLikeId = 'bookworm';
193
+ break;
194
+ }
195
+ case 'trixie': {
196
+ // Debian 13 trixie
197
+ this.distroLike = 'Debian';
198
+ this.codenameLikeId = 'trixie';
199
+ break;
200
+ }
201
+ case 'beowulf': {
202
+ // Devuab 3 beowulf
203
+ this.distroLike = 'Devuan';
204
+ this.codenameLikeId = 'beowulf';
205
+ break;
206
+ }
207
+ case 'chimaera': {
208
+ // Devuab 4 chimaera
209
+ this.distroLike = 'Devuan';
210
+ this.codenameLikeId = 'chimaera';
211
+ break;
212
+ }
213
+ case 'daedalus': {
214
+ // Devuan 5 daedalus
215
+ this.distroLike = 'Devuan';
216
+ this.codenameLikeId = 'daedalus';
217
+ break;
218
+ }
219
+ /**
220
+ * Ubuntu LTS + actual
221
+ */
222
+ case 'bionic': {
223
+ // Ubuntu 18.04 bionic LTS eol aprile 2023
224
+ this.distroLike = 'Ubuntu';
225
+ this.codenameLikeId = 'bionic';
226
+ this.liveMediumPath = '/lib/live/mount/medium/';
227
+ break;
228
+ }
229
+ case 'focal': {
230
+ // Ubuntu 20.04 focal LTS
231
+ this.distroLike = 'Ubuntu';
232
+ this.codenameLikeId = 'focal';
233
+ break;
234
+ }
235
+ case 'jammy': {
236
+ // Ubuntu 22.04 jammy LTS
237
+ this.distroLike = 'Ubuntu';
238
+ this.codenameLikeId = 'jammy';
239
+ break;
240
+ }
241
+ case 'noble': {
242
+ // Ubuntu 24.04 noble LTS
243
+ this.distroLike = 'Ubuntu';
244
+ this.codenameLikeId = 'noble';
245
+ break;
246
+ }
247
+ case 'devel': {
248
+ // Ubuntu rhino
249
+ this.distroLike = 'Ubuntu';
250
+ this.codenameLikeId = 'devel';
251
+ break;
252
+ }
265
253
  /**
266
- * patch per Roy VERIFICARE
254
+ * Arch Linux/Garuda
267
255
  */
268
- let found = false;
269
- let file = path.resolve(__dirname, '../../conf/derivatives.yaml');
270
- if (fs.existsSync('/etc/penguins-eggs.d/derivatives.yaml')) {
271
- file = '/etc/penguins-eggs.d/derivatives.yaml';
256
+ case 'Spizaetus':
257
+ case 'n/a':
258
+ case 'rolling': {
259
+ this.familyId = 'archlinux';
260
+ this.distroLike = 'Arch';
261
+ this.codenameId = 'rolling';
262
+ this.codenameLikeId = 'rolling';
263
+ this.liveMediumPath = '/run/archiso/bootmnt/';
264
+ this.squashfs = `arch/x86_64/airootfs.sfs`;
265
+ break;
272
266
  }
273
- const content = fs.readFileSync(file, 'utf8');
274
- const distros = yaml.load(content);
275
- for (const distro of distros) {
276
- if (distro.ids !== undefined) {
277
- for (let n = 0; n < distro.ids.length; n++) {
278
- if (this.codenameId === distro.ids[n]) {
279
- found = true;
280
- this.distroLike = distro.distroLike;
281
- this.codenameLikeId = distro.id;
282
- this.familyId = distro.family;
267
+ default: {
268
+ /**
269
+ * patch per Roy VERIFICARE
270
+ */
271
+ let found = false;
272
+ let file = path.resolve(__dirname, '../../conf/derivatives.yaml');
273
+ if (fs.existsSync('/etc/penguins-eggs.d/derivatives.yaml')) {
274
+ file = '/etc/penguins-eggs.d/derivatives.yaml';
275
+ }
276
+ const content = fs.readFileSync(file, 'utf8');
277
+ const distros = yaml.load(content);
278
+ for (const distro of distros) {
279
+ if (distro.ids !== undefined) {
280
+ for (let n = 0; n < distro.ids.length; n++) {
281
+ if (this.codenameId === distro.ids[n]) {
282
+ found = true;
283
+ this.distroLike = distro.distroLike;
284
+ this.codenameLikeId = distro.id;
285
+ this.familyId = distro.family;
286
+ }
283
287
  }
284
288
  }
285
289
  }
286
- }
287
- if (!found) {
288
- console.log(`This distro ${this.distroId}/${this.codenameId} is not yet recognized!`);
289
- console.log('');
290
- console.log('You can edit /usr/lib/penguins-eggs/conf/derivatives.yaml to add it -');
291
- console.log('after that - run: sudo eggs dad -d to re-configure eggs.');
292
- console.log('If you can create your new iso, you can contribute to the project');
293
- console.log('by suggesting your modification.');
294
- process.exit(0);
290
+ if (!found) {
291
+ console.log(`This distro ${this.distroId}/${this.codenameId} is not yet recognized!`);
292
+ console.log('');
293
+ console.log('You can edit /usr/lib/penguins-eggs/conf/derivatives.yaml to add it -');
294
+ console.log('after that - run: sudo eggs dad -d to re-configure eggs.');
295
+ console.log('If you can create your new iso, you can contribute to the project');
296
+ console.log('by suggesting your modification.');
297
+ process.exit(0);
298
+ }
295
299
  }
296
300
  }
301
+ /**
302
+ * setting paths: syslinux, isolinux, usrLibPath
303
+ */
304
+ switch (this.familyId) {
305
+ case 'debian': {
306
+ this.isolinuxPath = '/usr/lib/ISOLINUX/';
307
+ this.syslinuxPath = '/usr/lib/syslinux/modules/bios/';
308
+ this.pxelinuxPath = '/usr/lib/PXELINUX/';
309
+ this.memdiskPath = '/usr/lib/syslinux/';
310
+ this.usrLibPath = '/usr/lib/' + Utils.usrLibPath();
311
+ break;
312
+ }
313
+ case 'archlinux': {
314
+ this.syslinuxPath = '/usr/lib/syslinux/bios/';
315
+ this.pxelinuxPath = this.syslinuxPath;
316
+ this.usrLibPath = '/usr/lib/';
317
+ this.memdiskPath = this.syslinuxPath;
318
+ this.isolinuxPath = this.syslinuxPath;
319
+ break;
320
+ }
321
+ // No default
322
+ } // Fine analisi codenameId
297
323
  }
298
- /**
299
- * setting paths: syslinux, isolinux, usrLibPath
300
- */
301
- switch (this.familyId) {
302
- case 'debian': {
303
- this.isolinuxPath = '/usr/lib/ISOLINUX/';
304
- this.syslinuxPath = '/usr/lib/syslinux/modules/bios/';
305
- this.pxelinuxPath = '/usr/lib/PXELINUX/';
306
- this.memdiskPath = '/usr/lib/syslinux/';
307
- this.usrLibPath = '/usr/lib/' + Utils.usrLibPath();
308
- break;
309
- }
310
- case 'archlinux': {
311
- this.syslinuxPath = '/usr/lib/syslinux/bios/';
312
- this.pxelinuxPath = this.syslinuxPath;
313
- this.usrLibPath = '/usr/lib/';
314
- this.memdiskPath = this.syslinuxPath;
315
- this.isolinuxPath = this.syslinuxPath;
316
- break;
317
- }
318
- // No default
319
- } // Fine analisi codenameId
320
324
  }
321
325
  /**
322
326
  * if lsb-release exists
@@ -20,7 +20,7 @@ export default class Alpine {
20
20
  static async calamaresInstall(verbose = false) {
21
21
  const echo = Utils.setEcho(verbose);
22
22
  try {
23
- let cmd = `apk add ${this.packs4calamares}`;
23
+ const cmd = `apk add ${this.packs4calamares}`;
24
24
  try {
25
25
  await exec(cmd, echo);
26
26
  }
@@ -44,7 +44,7 @@ export default class Alpine {
44
44
  */
45
45
  static async calamaresRemove(verbose = true) {
46
46
  verbose = true; // serve per pacman
47
- let removed = true;
47
+ const removed = true;
48
48
  const echo = Utils.setEcho(verbose);
49
49
  await exec(`apk del ${this.packs4calamares}`);
50
50
  await exec('rm /etc/calamares -rf', echo);
@@ -9,7 +9,7 @@ import { IDistro, IInstaller, IRemix } from '../../../interfaces/index.js';
9
9
  /**
10
10
  *
11
11
  */
12
- export declare class Focal {
12
+ export declare class Noble {
13
13
  distro: IDistro;
14
14
  installer: IInstaller;
15
15
  isClone: boolean;
@@ -10,7 +10,7 @@ import Fisherman from '../fisherman.js';
10
10
  /**
11
11
  *
12
12
  */
13
- export class Focal {
13
+ export class Noble {
14
14
  distro;
15
15
  installer = {};
16
16
  isClone;
@@ -14,8 +14,8 @@ import Pacman from '../pacman.js';
14
14
  import Utils from '../utils.js';
15
15
  import { Bionic } from './distros/bionic.js';
16
16
  import { Buster } from './distros/buster.js';
17
- import { Focal } from './distros/focal.js';
18
17
  import { Jessie } from './distros/jessie.js';
18
+ import { Noble } from './distros/noble.js';
19
19
  import { Rolling } from './distros/rolling.js';
20
20
  import { installer } from './installer.js';
21
21
  // _dirname
@@ -119,22 +119,22 @@ export default class Incubator {
119
119
  break;
120
120
  }
121
121
  case 'focal': {
122
- const focal = new Focal(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
122
+ const focal = new Noble(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
123
123
  await focal.create();
124
124
  break;
125
125
  }
126
126
  case 'jammy': {
127
- const jammy = new Focal(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
127
+ const jammy = new Noble(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
128
128
  await jammy.create();
129
129
  break;
130
130
  }
131
131
  case 'noble': {
132
- const noble = new Focal(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
132
+ const noble = new Noble(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
133
133
  await noble.create();
134
134
  break;
135
135
  }
136
136
  case 'devel': {
137
- const devel = new Focal(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
137
+ const devel = new Noble(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
138
138
  await devel.create();
139
139
  break;
140
140
  }
@@ -77,6 +77,21 @@ export default class Keyboard {
77
77
  }
78
78
  }
79
79
  }
80
+ else {
81
+ this.models.push('pc105');
82
+ this.layouts = [
83
+ 'af', 'al', 'am', 'ara', 'at', 'az', 'ba', 'bd', 'be', 'bg', 'br',
84
+ 'brai', 'by', 'ca', 'ch', 'cm', 'cn', 'cz', 'de', 'dk', 'dz', 'ee',
85
+ 'epo', 'fr', 'gb', 'ge', 'gh', 'gr', 'hr', 'hu', 'id', 'ie', 'il',
86
+ 'in', 'iq', 'ir', 'is', 'it', 'jp', 'ke', 'kg', 'kr', 'kz', 'la',
87
+ 'latam', 'lk', 'lt', 'lv', 'ma', 'md', 'me', 'mk', 'ml', 'mm',
88
+ 'mt', 'my', 'ng', 'nl', 'no', 'nz', 'ph', 'pk', 'pl', 'pt', 'ro',
89
+ 'rs', 'ru', 'se', 'si', 'sk', 'sy', 'th', 'tj', 'tw', 'ua',
90
+ 'us', 'uz', 'vn'
91
+ ];
92
+ this.variants.push('none');
93
+ this.options.push('none');
94
+ }
80
95
  }
81
96
  /**
82
97
  * XKBLAYOUT='us'
@@ -28,15 +28,24 @@ export default class Locales {
28
28
  *
29
29
  */
30
30
  async getEnabled() {
31
+ const distro = new Distro();
32
+ let cmd = 'localectl list-locales';
33
+ if (distro.familyId === 'alpine') {
34
+ cmd = 'locale -a';
35
+ }
31
36
  // Restituisce i locales abilitati in Debian, per manjaro quelli presenti
32
37
  // in /etc/locale.gen anche se #disabilitati
33
- const cmd = 'localectl list-locales';
34
38
  const enabledLocales = [];
35
39
  const result = await exec(cmd, { capture: true, echo: false, ignore: false });
36
40
  if (result.code === 0) {
37
41
  const lines = result.data.split('\n');
38
42
  for (const line of lines) {
39
- enabledLocales.push(line.replaceAll('"', '').replaceAll("'", '').trim());
43
+ if (distro.familyId === 'alpine') {
44
+ enabledLocales.push(line.replaceAll('"', '').replaceAll("'", '').trim() + '.UTF-8');
45
+ }
46
+ else {
47
+ enabledLocales.push(line.replaceAll('"', '').replaceAll("'", '').trim());
48
+ }
40
49
  }
41
50
  }
42
51
  return enabledLocales;
@@ -47,11 +56,20 @@ export default class Locales {
47
56
  async getSupported() {
48
57
  const distro = new Distro();
49
58
  let supporteds = [];
50
- if (distro.familyId === 'debian') {
51
- supporteds = fs.readFileSync('/usr/share/i18n/SUPPORTED', 'utf8').split('\n');
52
- }
53
- else if (distro.familyId === 'archlinux') {
54
- supporteds = (await exec('localectl list-locales', { capture: true, echo: false, ignore: false })).data.split('\n');
59
+ switch (distro.familyId) {
60
+ case 'alpine': {
61
+ supporteds = await this.getEnabled();
62
+ break;
63
+ }
64
+ case 'debian': {
65
+ supporteds = fs.readFileSync('/usr/share/i18n/SUPPORTED', 'utf8').split('\n');
66
+ break;
67
+ }
68
+ case 'archlinux': {
69
+ supporteds = (await exec('localectl list-locales', { capture: true, echo: false, ignore: false })).data.split('\n');
70
+ break;
71
+ }
72
+ // No default
55
73
  }
56
74
  const elements = [];
57
75
  for (const elem of supporteds) {
@@ -6,7 +6,7 @@
6
6
  * license: MIT
7
7
  */
8
8
  import { IAddons, IExcludes } from '../interfaces/index.js';
9
- import CliAutologin from '../lib/cli-autologin.js';
9
+ import CliAutologin from './cli-autologin.js';
10
10
  import Incubator from './incubation/incubator.js';
11
11
  import Settings from './settings.js';
12
12
  import Users from './users.js';
@@ -20,16 +20,16 @@ export default class Ovary {
20
20
  cryptedclone: boolean;
21
21
  echo: {};
22
22
  familyId: string;
23
+ genisoimage: boolean;
23
24
  incubator: Incubator;
24
25
  nest: string;
25
26
  settings: Settings;
26
27
  snapshot_basename: string;
27
28
  snapshot_prefix: string;
28
29
  theme: string;
29
- volid: string;
30
30
  toNull: string;
31
- genisoimage: boolean;
32
31
  verbose: boolean;
32
+ volid: string;
33
33
  /**
34
34
  * Add or remove exclusion
35
35
  * @param add {boolean} true = add, false remove
@@ -86,14 +86,6 @@ export default class Ovary {
86
86
  * initrdAlpine()
87
87
  */
88
88
  initrdAlpine(): Promise<void>;
89
- /**
90
- * initrdFedora()
91
- */
92
- initrdFedora(): Promise<void>;
93
- /**
94
- * initrdSuse()
95
- */
96
- initrdSuse(): Promise<void>;
97
89
  /**
98
90
  * initrdArch()
99
91
  * necessita di echoYes
@@ -105,6 +97,14 @@ export default class Ovary {
105
97
  * We must upgrade to initrdCreate for Debian/Ubuntu
106
98
  */
107
99
  initrdDebian(verbose?: boolean): Promise<void>;
100
+ /**
101
+ * initrdFedora()
102
+ */
103
+ initrdFedora(): Promise<void>;
104
+ /**
105
+ * initrdSuse()
106
+ */
107
+ initrdSuse(): Promise<void>;
108
108
  /**
109
109
  * async isolinux
110
110
  */