penguins-eggs 9.4.15 → 9.5.2

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.
@@ -1 +1 @@
1
- {"version":"9.4.15","commands":{"adapt":{"id":"adapt","description":"adapt monitor resolution for VM only","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs adapt"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"analyze":{"id":"analyze","description":"analyze for syncto","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs analyze"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"calamares":{"id":"calamares","description":"configure calamares or install or configure it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs calamares","sudo eggs calamares --install","sudo eggs calamares --install --theme=/path/to/theme","sudo eggs calamares --remove"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"install":{"name":"install","type":"boolean","char":"i","description":"install calamares and its dependencies","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"release":{"name":"release","type":"boolean","char":"r","description":"release: remove calamares and all its dependencies after the installation","allowNo":false},"remove":{"name":"remove","type":"boolean","description":"remove calamares and its dependencies","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme/branding for eggs and calamares","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"config":{"id":"config","description":"Configure and install prerequisites deb packages to run it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs config","sudo eggs config --clean","sudo eggs config --clean --nointeractive"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create new one","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"cuckoo":{"id":"cuckoo","description":"PXE start with proxy-dhcp","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs cuckoo"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"dad":{"id":"dad","description":"ask help from daddy - TUI configuration helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo dad","sudo dad --clean","sudo dad --default"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create","allowNo":false},"default":{"name":"default","type":"boolean","char":"d","description":"remove old configuration and force default","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"install":{"id":"install","description":"krill: the CLI system installer - the egg became a penguin!","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs install","sudo eggs install --unattended --halt","sudo eggs install --custom it"],"flags":{"crypted":{"name":"crypted","type":"boolean","char":"k","description":"Crypted CLI installation","allowNo":false},"custom":{"name":"custom","type":"option","char":"c","description":"custom unattended configuration","multiple":false},"domain":{"name":"domain","type":"option","char":"d","description":"Domain name, defult: .local","multiple":false},"halt":{"name":"halt","type":"boolean","char":"H","description":"Halt the system after installation","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"ip":{"name":"ip","type":"boolean","char":"i","description":"hostname as ip, eg: ip-192-168-1-33","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"none":{"name":"none","type":"boolean","char":"N","description":"Swap none: 256M","allowNo":false},"pve":{"name":"pve","type":"boolean","char":"p","description":"Proxmox VE install","allowNo":false},"random":{"name":"random","type":"boolean","char":"r","description":"Add random to hostname, eg: colibri-ay412dt","allowNo":false},"small":{"name":"small","type":"boolean","char":"s","description":"Swap small: RAM","allowNo":false},"suspend":{"name":"suspend","type":"boolean","char":"S","description":"Swap suspend: RAM x 2","allowNo":false},"unattended":{"name":"unattended","type":"boolean","char":"u","description":"Unattended installation","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"Verbose","allowNo":false}},"args":[]},"kill":{"id":"kill","description":"kill the eggs/free the nest","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs kill"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"mom":{"id":"mom","description":"ask help from mommy - TUI helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs mom"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"produce":{"id":"produce","description":"produce a live image from your system whithout your data","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs produce","sudo eggs produce --standard","sudo eggs produce --max","sudo eggs produce --max --basename=colibri","sudo eggs produce --cryptedclone","sudo eggs produce --clone","sudo eggs produce --basename=colibri","sudo eggs produce --basename=colibri --theme /path/to/theme --addons adapt"],"flags":{"addons":{"name":"addons","type":"option","description":"addons to be used: adapt, ichoice, pve, rsupport","multiple":true},"basename":{"name":"basename","type":"option","description":"basename","multiple":false},"clone":{"name":"clone","type":"boolean","char":"c","description":"clone","allowNo":false},"cryptedclone":{"name":"cryptedclone","type":"boolean","char":"C","description":"crypted clone","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"max":{"name":"max","type":"boolean","char":"m","description":"max compression","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"prefix":{"name":"prefix","type":"option","char":"p","description":"prefix","multiple":false},"release":{"name":"release","type":"boolean","description":"release: max compression, remove penguins-eggs and calamares after installation","allowNo":false},"script":{"name":"script","type":"boolean","char":"s","description":"script mode. Generate scripts to manage iso build","allowNo":false},"standard":{"name":"standard","type":"boolean","char":"f","description":"standard compression","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme for livecd, calamares branding and partitions","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false},"yolk":{"name":"yolk","type":"boolean","char":"y","description":"-y force yolk renew","allowNo":false}},"args":[]},"status":{"id":"status","description":"informations about eggs status","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs status"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"syncfrom":{"id":"syncfrom","description":"restore users and user data from a LUKS volumes","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncfrom","sudo eggs syncfrom --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"rootdir":{"name":"rootdir","type":"option","char":"r","description":"rootdir of the installed system, when used from live","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"syncto":{"id":"syncto","description":"saves users and user data in a LUKS volume inside the iso","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncto","sudo eggs syncto --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"update":{"id":"update","description":"update the Penguins' eggs tool","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs update"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:deb":{"id":"export:deb","description":"export deb/docs/iso to the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export deb","eggs export deb --clean","eggs export deb --all"],"flags":{"all":{"name":"all","type":"boolean","char":"a","description":"export all archs","allowNo":false},"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old .deb before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:iso":{"id":"export:iso","description":"export iso in the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export iso","eggs export iso --clean"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"delete old ISOs before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:clean":{"id":"tools:clean","description":"clean system log, apt, etc","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools clean"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:ppa":{"id":"tools:ppa","description":"add/remove PPA repositories (Debian family)","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools ppa --add","sudo eggs tools ppa --remove"],"flags":{"add":{"name":"add","type":"boolean","char":"a","description":"add penguins-eggs PPA repository","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"remove":{"name":"remove","type":"boolean","char":"r","description":"remove penguins-eggs PPA repository","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:skel":{"id":"tools:skel","description":"update skel from home configuration","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools skel","sudo eggs tools skel --user user-to-be-copied"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"user":{"name":"user","type":"option","char":"u","description":"user to be used","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"tools:stat":{"id":"tools:stat","description":"get statistics from sourceforge","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs tools stat","eggs tools stat --month","eggs tools stat --year"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"month":{"name":"month","type":"boolean","char":"m","description":"current month","allowNo":false},"year":{"name":"year","type":"boolean","char":"y","description":"current year","allowNo":false}},"args":[]},"tools:yolk":{"id":"tools:yolk","description":"configure eggs to install without internet","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools yolk"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[],"dir":"/var/local/yolk"},"wardrobe:get":{"id":"wardrobe:get","description":"get warorobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe get","eggs wardrobe get your-wardrobe"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"repo","description":"repository to get","required":false}]},"wardrobe:list":{"id":"wardrobe:list","description":"list costumes and accessoires in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe list","eggs wardrobe list your-wardrobe","eggs wardrobe list --distro arch"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"distro":{"name":"distro","type":"option","char":"d","description":"distro","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"wardrobe","description":"wardrobe","required":false}]},"wardrobe:show":{"id":"wardrobe:show","description":"show costumes/accessories in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"json":{"name":"json","type":"boolean","char":"j","description":"output JSON","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}],"example":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"]},"wardrobe:wear":{"id":"wardrobe:wear","description":"wear costume/accessories from wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs wardrobe wear duck","sudo eggs wardrobe wear accessories/firmwares","sudo eggs wardrobe wear wagtail/waydroid"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"no_accessories":{"name":"no_accessories","type":"boolean","char":"a","description":"not install accessories","allowNo":false},"no_firmwares":{"name":"no_firmwares","type":"boolean","char":"f","description":"not install firmwares","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}]}}}
1
+ {"version":"9.5.2","commands":{"adapt":{"id":"adapt","description":"adapt monitor resolution for VM only","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs adapt"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"analyze":{"id":"analyze","description":"analyze for syncto","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs analyze"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"calamares":{"id":"calamares","description":"configure calamares or install or configure it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs calamares","sudo eggs calamares --install","sudo eggs calamares --install --theme=/path/to/theme","sudo eggs calamares --remove"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"install":{"name":"install","type":"boolean","char":"i","description":"install calamares and its dependencies","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"release":{"name":"release","type":"boolean","char":"r","description":"release: remove calamares and all its dependencies after the installation","allowNo":false},"remove":{"name":"remove","type":"boolean","description":"remove calamares and its dependencies","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme/branding for eggs and calamares","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"config":{"id":"config","description":"Configure and install prerequisites deb packages to run it","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs config","sudo eggs config --clean","sudo eggs config --clean --nointeractive"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create new one","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"cuckoo":{"id":"cuckoo","description":"PXE start with proxy-dhcp","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs cuckoo"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"dad":{"id":"dad","description":"ask help from daddy - TUI configuration helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo dad","sudo dad --clean","sudo dad --default"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old configuration before to create","allowNo":false},"default":{"name":"default","type":"boolean","char":"d","description":"remove old configuration and force default","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"install":{"id":"install","description":"krill: the CLI system installer - the egg became a penguin!","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs install","sudo eggs install --unattended --halt","sudo eggs install --custom it"],"flags":{"crypted":{"name":"crypted","type":"boolean","char":"k","description":"Crypted CLI installation","allowNo":false},"custom":{"name":"custom","type":"option","char":"c","description":"custom unattended configuration","multiple":false},"domain":{"name":"domain","type":"option","char":"d","description":"Domain name, defult: .local","multiple":false},"halt":{"name":"halt","type":"boolean","char":"H","description":"Halt the system after installation","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"ip":{"name":"ip","type":"boolean","char":"i","description":"hostname as ip, eg: ip-192-168-1-33","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"none":{"name":"none","type":"boolean","char":"N","description":"Swap none: 256M","allowNo":false},"pve":{"name":"pve","type":"boolean","char":"p","description":"Proxmox VE install","allowNo":false},"random":{"name":"random","type":"boolean","char":"r","description":"Add random to hostname, eg: colibri-ay412dt","allowNo":false},"small":{"name":"small","type":"boolean","char":"s","description":"Swap small: RAM","allowNo":false},"suspend":{"name":"suspend","type":"boolean","char":"S","description":"Swap suspend: RAM x 2","allowNo":false},"unattended":{"name":"unattended","type":"boolean","char":"u","description":"Unattended installation","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"Verbose","allowNo":false}},"args":[]},"kill":{"id":"kill","description":"kill the eggs/free the nest","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs kill"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"mom":{"id":"mom","description":"ask help from mommy - TUI helper","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs mom"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[]},"produce":{"id":"produce","description":"produce a live image from your system whithout your data","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs produce","sudo eggs produce --standard","sudo eggs produce --max","sudo eggs produce --max --basename=colibri","sudo eggs produce --cryptedclone","sudo eggs produce --clone","sudo eggs produce --basename=colibri","sudo eggs produce --basename=colibri --theme /path/to/theme --addons adapt"],"flags":{"addons":{"name":"addons","type":"option","description":"addons to be used: adapt, ichoice, pve, rsupport","multiple":true},"basename":{"name":"basename","type":"option","description":"basename","multiple":false},"clone":{"name":"clone","type":"boolean","char":"c","description":"clone","allowNo":false},"cryptedclone":{"name":"cryptedclone","type":"boolean","char":"C","description":"crypted clone","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"max":{"name":"max","type":"boolean","char":"m","description":"max compression","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"prefix":{"name":"prefix","type":"option","char":"p","description":"prefix","multiple":false},"release":{"name":"release","type":"boolean","description":"release: max compression, remove penguins-eggs and calamares after installation","allowNo":false},"script":{"name":"script","type":"boolean","char":"s","description":"script mode. Generate scripts to manage iso build","allowNo":false},"standard":{"name":"standard","type":"boolean","char":"f","description":"standard compression","allowNo":false},"theme":{"name":"theme","type":"option","description":"theme for livecd, calamares branding and partitions","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false},"yolk":{"name":"yolk","type":"boolean","char":"y","description":"-y force yolk renew","allowNo":false}},"args":[]},"status":{"id":"status","description":"informations about eggs status","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs status"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"syncfrom":{"id":"syncfrom","description":"restore users and user data from a LUKS volumes","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncfrom","sudo eggs syncfrom --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"rootdir":{"name":"rootdir","type":"option","char":"r","description":"rootdir of the installed system, when used from live","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"syncto":{"id":"syncto","description":"saves users and user data in a LUKS volume inside the iso","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs syncto","sudo eggs syncto --file /path/to/fileLUKS"],"flags":{"delete":{"name":"delete","type":"option","description":"rsync --delete delete extraneous files from dest dirs","multiple":false},"file":{"name":"file","type":"option","char":"f","description":"file LUKS volume encrypted","multiple":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"update":{"id":"update","description":"update the Penguins' eggs tool","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs update"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:deb":{"id":"export:deb","description":"export deb/docs/iso to the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export deb","eggs export deb --clean","eggs export deb --all"],"flags":{"all":{"name":"all","type":"boolean","char":"a","description":"export all archs","allowNo":false},"clean":{"name":"clean","type":"boolean","char":"c","description":"remove old .deb before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"export:iso":{"id":"export:iso","description":"export iso in the destination host","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs export iso","eggs export iso --clean"],"flags":{"clean":{"name":"clean","type":"boolean","char":"c","description":"delete old ISOs before to copy","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:clean":{"id":"tools:clean","description":"clean system log, apt, etc","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools clean"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:ppa":{"id":"tools:ppa","description":"add/remove PPA repositories (Debian family)","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools ppa --add","sudo eggs tools ppa --remove"],"flags":{"add":{"name":"add","type":"boolean","char":"a","description":"add penguins-eggs PPA repository","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"nointeractive":{"name":"nointeractive","type":"boolean","char":"n","description":"no user interaction","allowNo":false},"remove":{"name":"remove","type":"boolean","char":"r","description":"remove penguins-eggs PPA repository","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","description":"verbose","allowNo":false}},"args":[]},"tools:skel":{"id":"tools:skel","description":"update skel from home configuration","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools skel","sudo eggs tools skel --user user-to-be-copied"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"user":{"name":"user","type":"option","char":"u","description":"user to be used","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[]},"tools:stat":{"id":"tools:stat","description":"get statistics from sourceforge","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs tools stat","eggs tools stat --month","eggs tools stat --year"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"month":{"name":"month","type":"boolean","char":"m","description":"current month","allowNo":false},"year":{"name":"year","type":"boolean","char":"y","description":"current year","allowNo":false}},"args":[]},"tools:yolk":{"id":"tools:yolk","description":"configure eggs to install without internet","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs tools yolk"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[],"dir":"/var/local/yolk"},"wardrobe:get":{"id":"wardrobe:get","description":"get warorobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe get","eggs wardrobe get your-wardrobe"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"repo","description":"repository to get","required":false}]},"wardrobe:list":{"id":"wardrobe:list","description":"list costumes and accessoires in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe list","eggs wardrobe list your-wardrobe","eggs wardrobe list --distro arch"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"distro":{"name":"distro","type":"option","char":"d","description":"distro","multiple":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false}},"args":[{"name":"wardrobe","description":"wardrobe","required":false}]},"wardrobe:show":{"id":"wardrobe:show","description":"show costumes/accessories in wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"json":{"name":"json","type":"boolean","char":"j","description":"output JSON","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}],"example":["eggs wardrobe show colibri","eggs wardrobe show accessories/firmwares","eggs wardrobe show accessories/"]},"wardrobe:wear":{"id":"wardrobe:wear","description":"wear costume/accessories from wardrobe","strict":true,"pluginName":"penguins-eggs","pluginAlias":"penguins-eggs","pluginType":"core","aliases":[],"examples":["sudo eggs wardrobe wear duck","sudo eggs wardrobe wear accessories/firmwares","sudo eggs wardrobe wear wagtail/waydroid"],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"no_accessories":{"name":"no_accessories","type":"boolean","char":"a","description":"not install accessories","allowNo":false},"no_firmwares":{"name":"no_firmwares","type":"boolean","char":"f","description":"not install firmwares","allowNo":false},"verbose":{"name":"verbose","type":"boolean","char":"v","allowNo":false},"wardrobe":{"name":"wardrobe","type":"option","char":"w","description":"wardrobe","multiple":false}},"args":[{"name":"costume","description":"costume","required":false}]}}}
package/README.md CHANGED
@@ -42,7 +42,7 @@ See [penguins-wardrobe](https://github.com/pieroproietti/penguins-wardrobe), for
42
42
 
43
43
  eggs is written mostly in typescript and ideally can be used with different Linux distributions. Yes, there are big differences in terms of package manager used, path, etc, but basically the various programs used to build the live are the same.
44
44
 
45
- Currently eggs supports: [Debian](https://www.debian.org/), [Devuan](https://www.devuan.org/), [Ubuntu](https://ubuntu.com/), [Arch](https://archlinux.org/), [Manjaro](https://manjaro.org/) and [derivaties](./conf/derivatives.yaml).
45
+ Currently eggs supports: [Debian](https://www.debian.org/), [Devuan](https://www.devuan.org/), [Ubuntu](https://ubuntu.com/), [Arch](https://archlinux.org/), [Manjaro](https://manjaro.org/) and [derivatives](./conf/derivatives.yaml).
46
46
 
47
47
  You can read more on the [blog](https://penguins-eggs.net/blog/distros-that-can-be-remastered-with-eggs), some examples of iso images remastered with eggs are in the [sourceforge page of the project](https://sourceforge.net/projects/penguins-eggs/files/ISOS/).
48
48
 
@@ -135,16 +135,14 @@ If you are using penguins-eggs-ppa You can ugrade eggs as others packages just:
135
135
 
136
136
 
137
137
  ## Arch families
138
- eggs has been present in AUR for a long time, even without my knowledge thanks the support of Arch peoples. I am currently directly maintaining the AUR version of [penguins-eggs](https://aur.archlinux.org/packages/penguins-eggs) and I'm participating in the [Manjaro Community Repository](https://gitlab.manjaro.org/packages/community/penguins-eggs).
138
+ eggs has been present in [AUR](https://aur.archlinux.org/) for a long time, even without my knowledge thanks the support of Arch peoples. I am currently directly maintaining the AUR version of [penguins-eggs](https://aur.archlinux.org/packages/penguins-eggs) and I'm participating in the [Manjaro Community Repository](https://gitlab.manjaro.org/packages/community/penguins-eggs).
139
139
 
140
140
  The development versions of penguins eggs and other PKGBUILDs are instead in my [penguins-eggs-pkgbuilds](https://github.com/pieroproietti/penguins-eggs-pkgbuilds) repository.
141
141
 
142
142
  ### Arch
143
- To install penguins-eggs on Arch, simply:
144
- ```
145
- yay penguins-eggs
146
- ```
147
- Or, in more traditional way:
143
+ It's possible to install penguins-eggs from [AUR](https://aur.archlinux.org/packages/penguins-eggs) adding repo [Chaotic-AUR](https://aur.chaotic.cx/) and using `sudo pacman -Sy penguins-eggs`.
144
+
145
+ Of course you can also use yay: `yay penguins-eggs` or download the sources and run makepkg:
148
146
 
149
147
  ```
150
148
  git clone https://aur.archlinux.org/packages/penguins-eggs
@@ -152,7 +150,7 @@ cd penguins-eggs
152
150
  makepkg -srcCi
153
151
  ```
154
152
  ### Manjaro
155
- From penguins-eggs v9.4.3 the package is part of the [Manjaro community](https://gitlab.manjaro.org/packages/community/penguins-eggs) repo and can be installed with [pamac](https://wiki.manjaro.org/index.php/Pamac), alternatively you can install it with:
153
+ From penguins-eggs v9.4.3 the package is part of the [Manjaro community](https://gitlab.manjaro.org/packages/community/penguins-eggs) repo and can be installed with `pamac install penguins-eggs`, alternatively you can download it and:
156
154
  ```
157
155
  git clone https://gitlab.manjaro.org/packages/community/penguins-eggs/
158
156
  cd penguins-eggs
@@ -2,24 +2,18 @@
2
2
  # eggs: grub.template.cfg
3
3
  #
4
4
 
5
- # ieee1275_fb.mod vbe.mod vga.mod not found
6
-
7
- #if loadfont $prefix/unifont.pf2; then
8
5
  if loadfont $prefix/font.pf2 ; then
9
- set gfxmode=1024x768
6
+ set gfxmode=1024x768x32
10
7
  insmod efi_gop
11
8
  insmod efi_uga
9
+ insmod video_bochs
10
+ insmod video_cirrus
12
11
  insmod gfxterm
13
12
  insmod jpeg
14
13
  insmod png
15
- insmod video_bochs
16
- insmod video_cirrus
17
14
  terminal_output gfxterm
18
15
  fi
19
16
 
20
- set default=0
21
- set timeout=2
22
- set timeout_style=hidden
23
17
  set theme=/boot/grub/theme.cfg
24
18
 
25
19
  menuentry "{{{fullname}}}" {
package/conf/exclude.list CHANGED
@@ -118,4 +118,7 @@ home/*/VirtualBox\ VMs
118
118
  # custom
119
119
  .snapshots/*
120
120
  swap/*
121
- swapfile
121
+ swapfile
122
+
123
+ # blissos
124
+ blissos/data.img
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const js_yaml_1 = __importDefault(require("js-yaml"));
8
+ /**
9
+ * cfs
10
+ */
11
+ class CFS {
12
+ /**
13
+ * steps
14
+ * @returns
15
+ */
16
+ steps() {
17
+ let configRoot = '/etc/penguins-eggs.d/krill/';
18
+ if (fs_1.default.existsSync('/etc/calamares/settings.conf')) {
19
+ configRoot = '/etc/calamares/';
20
+ }
21
+ const cfs = [];
22
+ const settingsVar = fs_1.default.readFileSync(`${configRoot}settings.conf`, 'utf8');
23
+ const settingsYaml = js_yaml_1.default.load(settingsVar);
24
+ const execSequence = settingsYaml.sequence[1];
25
+ const steps = execSequence.exec;
26
+ for (const step of steps) {
27
+ if (step.includes('cfs-')) {
28
+ cfs.push(step);
29
+ }
30
+ }
31
+ return cfs;
32
+ }
33
+ }
34
+ exports.default = CFS;
@@ -190,7 +190,8 @@ class Distro {
190
190
  case 'Qonos':
191
191
  case 'Ruah':
192
192
  case 'Sikaris':
193
- case 'Talos': {
193
+ case 'Talos':
194
+ case 'UltimaThule': {
194
195
  // Manjaro Linux
195
196
  this.familyId = 'archlinux';
196
197
  this.distroLike = 'Arch';
@@ -235,7 +236,7 @@ class Distro {
235
236
  }
236
237
  }
237
238
  /**
238
- * setting paths: syslinux, isolinux, usrLib
239
+ * setting paths: syslinux, isolinux, usrLibPath
239
240
  */
240
241
  switch (this.familyId) {
241
242
  case 'debian': {
@@ -249,24 +250,14 @@ class Distro {
249
250
  }
250
251
  break;
251
252
  }
252
- case 'fedora': {
253
- this.syslinuxPath = '/usr/share/syslinux/';
254
- this.isolinuxPath = this.syslinuxPath;
255
- break;
256
- }
257
253
  case 'archlinux': {
258
254
  this.syslinuxPath = '/usr/lib/syslinux/bios/';
259
255
  this.pxelinuxPath = this.syslinuxPath;
256
+ this.usrLibPath = '/usr/lib/';
260
257
  this.memdiskPath = this.syslinuxPath;
261
258
  this.isolinuxPath = this.syslinuxPath;
262
259
  break;
263
260
  }
264
- case 'suse': {
265
- this.syslinuxPath = '/usr/share/syslinux/';
266
- this.isolinuxPath = this.syslinuxPath;
267
- this.usrLibPath = '/usr/lib64/';
268
- break;
269
- }
270
261
  // No default
271
262
  }
272
263
  /**
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
- /**
3
- * penguins-eggs: bionic.ts
4
- *
5
- * author: Piero Proietti
6
- * mail: piero.proietti@gmail.com
7
- */
8
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
9
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
4
  };
11
5
  Object.defineProperty(exports, "__esModule", { value: true });
12
6
  exports.Bionic = void 0;
7
+ /**
8
+ * penguins-eggs: bionic.ts
9
+ * author: Piero Proietti
10
+ * mail: piero.proietti@gmail.com
11
+ */
12
+ const cfs_1 = __importDefault(require("../../cfs"));
13
13
  const fisherman_1 = __importDefault(require("../fisherman"));
14
14
  /**
15
15
  *
@@ -21,7 +21,7 @@ class Bionic {
21
21
  * @param release
22
22
  * @param verbose
23
23
  */
24
- constructor(installer, remix, distro, user_opt, release = false, isClone = false, verbose = false) {
24
+ constructor(installer, remix, distro, user_opt, release = false, theme = 'eggs', isClone = false, verbose = false) {
25
25
  this.verbose = false;
26
26
  this.installer = {};
27
27
  this.release = false;
@@ -31,6 +31,7 @@ class Bionic {
31
31
  this.user_opt = user_opt;
32
32
  this.verbose = verbose;
33
33
  this.release = release;
34
+ this.theme = theme;
34
35
  this.isClone = isClone;
35
36
  }
36
37
  /**
@@ -38,7 +39,7 @@ class Bionic {
38
39
  */
39
40
  async create() {
40
41
  const fisherman = new fisherman_1.default(this.distro, this.installer, this.verbose);
41
- await fisherman.settings(this.remix.branding, this.isClone);
42
+ await fisherman.createCalamaresSettings(this.theme, this.isClone);
42
43
  await fisherman.buildModule('partition', this.remix.branding);
43
44
  await fisherman.buildModule('mount');
44
45
  await fisherman.moduleUnpackfs(); //
@@ -64,6 +65,16 @@ class Bionic {
64
65
  await fisherman.moduleRemoveuser(this.user_opt); //
65
66
  await fisherman.buildCalamaresModule('sources-yolk-undo', false);
66
67
  await fisherman.buildCalamaresModule('cleanup', true);
68
+ /**
69
+ * cfs: custom final steps
70
+ */
71
+ const cfs = new cfs_1.default();
72
+ const steps = cfs.steps();
73
+ if (steps.length > 0) {
74
+ for (const step of steps) {
75
+ await fisherman.buildCalamaresModule(step, true, this.theme);
76
+ }
77
+ }
67
78
  await fisherman.buildModule('umount');
68
79
  await fisherman.buildModule('finished');
69
80
  }
@@ -1,17 +1,15 @@
1
1
  "use strict";
2
- /**
3
- * penguins-eggs: buster.ts
4
- *
5
- * it work both: buster, bullseye
6
- *
7
- * author: Piero Proietti
8
- * mail: piero.proietti@gmail.com
9
- */
10
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
11
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
4
  };
13
5
  Object.defineProperty(exports, "__esModule", { value: true });
14
6
  exports.Buster = void 0;
7
+ /**
8
+ * penguins-eggs: buster.ts
9
+ * author: Piero Proietti
10
+ * mail: piero.proietti@gmail.com
11
+ */
12
+ const cfs_1 = __importDefault(require("../../cfs"));
15
13
  const fisherman_1 = __importDefault(require("../fisherman"));
16
14
  /**
17
15
  *
@@ -41,7 +39,7 @@ class Buster {
41
39
  */
42
40
  async create() {
43
41
  const fisherman = new fisherman_1.default(this.distro, this.installer, this.verbose);
44
- await fisherman.settings(this.theme, this.isClone);
42
+ await fisherman.createCalamaresSettings(this.theme, this.isClone);
45
43
  await fisherman.buildModule('partition', this.theme);
46
44
  await fisherman.buildModule('mount');
47
45
  await fisherman.moduleUnpackfs();
@@ -69,6 +67,16 @@ class Buster {
69
67
  await fisherman.moduleRemoveuser(this.user_opt);
70
68
  await fisherman.buildCalamaresModule('sources-yolk-undo', false);
71
69
  await fisherman.buildCalamaresModule('cleanup', true);
70
+ /**
71
+ * cfs: custom final steps
72
+ */
73
+ const cfs = new cfs_1.default();
74
+ const steps = cfs.steps();
75
+ if (steps.length > 0) {
76
+ for (const step of steps) {
77
+ await fisherman.buildCalamaresModule(step, true, this.theme);
78
+ }
79
+ }
72
80
  await fisherman.buildModule('umount');
73
81
  await fisherman.moduleFinished();
74
82
  }
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
- /**
3
- * penguins-eggs: focal.ts
4
- * used for: groovy, hirsute
5
- * author: Piero Proietti
6
- * mail: piero.proietti@gmail.com
7
- */
8
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
9
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
4
  };
11
5
  Object.defineProperty(exports, "__esModule", { value: true });
12
6
  exports.Focal = void 0;
13
7
  const fisherman_1 = __importDefault(require("../fisherman"));
8
+ const cfs_1 = __importDefault(require("../../cfs"));
14
9
  /**
15
10
  *
16
11
  */
@@ -39,7 +34,7 @@ class Focal {
39
34
  */
40
35
  async create() {
41
36
  const fisherman = new fisherman_1.default(this.distro, this.installer, this.verbose);
42
- await fisherman.settings(this.remix.branding, this.isClone);
37
+ await fisherman.createCalamaresSettings(this.theme, this.isClone);
43
38
  await fisherman.buildModule('partition', this.theme);
44
39
  await fisherman.buildModule('mount');
45
40
  await fisherman.moduleUnpackfs();
@@ -67,6 +62,16 @@ class Focal {
67
62
  await fisherman.buildCalamaresModule('sources-yolk', false);
68
63
  await fisherman.buildCalamaresModule('sources-yolk-undo', false);
69
64
  await fisherman.buildCalamaresModule('cleanup', true);
65
+ /**
66
+ * cfs: custom final steps
67
+ */
68
+ const cfs = new cfs_1.default();
69
+ const steps = cfs.steps();
70
+ if (steps.length > 0) {
71
+ for (const step of steps) {
72
+ await fisherman.buildCalamaresModule(step, true, this.theme);
73
+ }
74
+ }
70
75
  await fisherman.buildModule('umount');
71
76
  await fisherman.buildModule('finished');
72
77
  }
@@ -39,7 +39,7 @@ class Jessie {
39
39
  */
40
40
  async create() {
41
41
  const fisherman = new fisherman_1.default(this.distro, this.installer, this.verbose);
42
- await fisherman.settings(this.remix.branding);
42
+ await fisherman.createCalamaresSettings(this.remix.branding);
43
43
  await fisherman.buildModule('partition', this.remix.branding);
44
44
  await fisherman.buildCalamaresModule('sources-yolk', true);
45
45
  await fisherman.moduleRemoveuser(this.user_opt);
@@ -1,17 +1,13 @@
1
1
  "use strict";
2
2
  /**
3
3
  * penguins-eggs: rolling.ts
4
- *
5
- * it work for archlinux, manjaro
6
- *
7
- * author: Piero Proietti
8
- * mail: piero.proietti@gmail.com
9
4
  */
10
5
  var __importDefault = (this && this.__importDefault) || function (mod) {
11
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
7
  };
13
8
  Object.defineProperty(exports, "__esModule", { value: true });
14
9
  exports.Rolling = void 0;
10
+ const cfs_1 = __importDefault(require("../../cfs"));
15
11
  const fisherman_1 = __importDefault(require("../fisherman"));
16
12
  /**
17
13
  *
@@ -23,7 +19,7 @@ class Rolling {
23
19
  * @param displaymanager
24
20
  * @param verbose
25
21
  */
26
- constructor(installer, remix, distro, user_opt, release = false, isClone = false, verbose = false) {
22
+ constructor(installer, remix, distro, user_opt, release = false, theme = 'eggs', isClone = false, verbose = false) {
27
23
  this.installer = {};
28
24
  this.release = false;
29
25
  this.verbose = false;
@@ -34,6 +30,7 @@ class Rolling {
34
30
  this.user_opt = user_opt;
35
31
  this.verbose = verbose;
36
32
  this.release = release;
33
+ this.theme = theme;
37
34
  this.isClone = isClone;
38
35
  }
39
36
  /**
@@ -41,17 +38,17 @@ class Rolling {
41
38
  */
42
39
  async create() {
43
40
  const fisherman = new fisherman_1.default(this.distro, this.installer, this.verbose);
44
- await fisherman.settings(this.remix.branding, this.isClone);
45
- await fisherman.buildModule('partition', this.remix.branding);
41
+ await fisherman.createCalamaresSettings(this.theme, this.isClone);
42
+ await fisherman.buildModule('partition', this.theme);
46
43
  await fisherman.buildModule('mount');
47
44
  await fisherman.moduleUnpackfs();
48
45
  // await fisherman.buildCalamaresModule('sources-yolk', true)
49
46
  // await fisherman.buildModule('machineid')
50
47
  await fisherman.buildModule('fstab');
51
- await fisherman.buildModule('locale', this.remix.branding);
48
+ await fisherman.buildModule('locale', this.theme);
52
49
  await fisherman.buildModule('keyboard');
53
50
  await fisherman.buildModule('localecfg');
54
- await fisherman.buildModule('users', this.remix.branding);
51
+ await fisherman.buildModule('users', this.theme);
55
52
  await fisherman.moduleDisplaymanager();
56
53
  await fisherman.buildModule('networkcfg');
57
54
  await fisherman.buildModule('hwclock');
@@ -66,6 +63,16 @@ class Rolling {
66
63
  // await fisherman.buildModule('initramfs')
67
64
  await fisherman.moduleRemoveuser(this.user_opt);
68
65
  await fisherman.shellprocess('removelink');
66
+ /**
67
+ * cfs: custom final steps
68
+ */
69
+ const cfs = new cfs_1.default();
70
+ const steps = cfs.steps();
71
+ if (steps.length > 0) {
72
+ for (const step of steps) {
73
+ await fisherman.buildCalamaresModule(step, true, this.theme);
74
+ }
75
+ }
69
76
  await fisherman.buildModule('umount');
70
77
  await fisherman.moduleFinished();
71
78
  }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ *
4
+ * @param theme
5
+ * @param isClone
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.settings = void 0;
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const js_yaml_1 = __importDefault(require("js-yaml"));
14
+ const shelljs_1 = __importDefault(require("shelljs"));
15
+ const displaymanager_1 = require("./displaymanager");
16
+ const utils_1 = __importDefault(require("../../utils"));
17
+ /**
18
+ *
19
+ * @param src
20
+ * @param dest
21
+ * @param theme
22
+ * @param isClone
23
+ */
24
+ async function settings(src, dest, theme = 'eggs', isClone = false) {
25
+ let branding = theme;
26
+ let settingsSrc = src + 'settings.yml';
27
+ if (theme.includes('/')) {
28
+ branding = theme.slice(Math.max(0, theme.lastIndexOf('/') + 1));
29
+ }
30
+ const settingsDest = dest + 'settings.conf';
31
+ shelljs_1.default.cp(settingsSrc, settingsDest);
32
+ let hasSystemd = '# ';
33
+ if (utils_1.default.isSystemd()) {
34
+ hasSystemd = '- ';
35
+ }
36
+ let createUsers = '- ';
37
+ if (isClone) {
38
+ createUsers = '# ';
39
+ }
40
+ let hasDisplaymanager = '# ';
41
+ if ((0, displaymanager_1.displaymanager)() !== '') {
42
+ hasDisplaymanager = '- ';
43
+ }
44
+ shelljs_1.default.sed('-i', '{{hasSystemd}}', hasSystemd, settingsDest);
45
+ shelljs_1.default.sed('-i', '{{hasDisplaymanager}}', hasDisplaymanager, settingsDest);
46
+ shelljs_1.default.sed('-i', '{{branding}}', branding, settingsDest);
47
+ shelljs_1.default.sed('-i', '{{createUsers}}', createUsers, settingsDest);
48
+ /**
49
+ * cfsAppend
50
+ */
51
+ const cfsPath = `${theme}/theme/calamares/cfs.yml`;
52
+ if (fs_1.default.existsSync(cfsPath)) {
53
+ cfsAppend(cfsPath);
54
+ }
55
+ }
56
+ exports.settings = settings;
57
+ /**
58
+ *
59
+ */
60
+ function cfsAppend(cfs) {
61
+ let soContent = fs_1.default.readFileSync('/etc/calamares/settings.conf', 'utf8');
62
+ let so = js_yaml_1.default.load(soContent);
63
+ const cfsContent = fs_1.default.readFileSync(cfs, 'utf8');
64
+ const cfsSteps = js_yaml_1.default.load(cfsContent);
65
+ const execSteps = so.sequence[1].exec;
66
+ for (const execStep of execSteps) {
67
+ if (execStep.includes('umount')) {
68
+ so.sequence[1].exec.pop(); // OK remove umount
69
+ /**
70
+ * insert cfsStep
71
+ */
72
+ for (const cfsStep of cfsSteps) {
73
+ so.sequence[1].exec.push(cfsStep);
74
+ }
75
+ so.sequence[1].exec.push('end-cfs'); // we will replace with umount
76
+ }
77
+ }
78
+ fs_1.default.writeFileSync("/etc/calamares/settings.conf", js_yaml_1.default.dump(so), 'utf-8');
79
+ shelljs_1.default.sed('-i', 'end-cfs', 'umount', "/etc/calamares/settings.conf");
80
+ }
@@ -13,9 +13,8 @@ const node_fs_1 = __importDefault(require("node:fs"));
13
13
  const shelljs_1 = __importDefault(require("shelljs"));
14
14
  const node_path_1 = __importDefault(require("node:path"));
15
15
  const chalk_1 = __importDefault(require("chalk"));
16
- const utils_1 = __importDefault(require("../utils"));
17
- const displaymanager_1 = require("./fisherman-helper/displaymanager");
18
- const utils_2 = require("../../lib/utils");
16
+ const settings_1 = require("./fisherman-helper/settings");
17
+ const utils_1 = require("../../lib/utils");
19
18
  class Fisherman {
20
19
  constructor(distro, installer, verbose = false) {
21
20
  this.installer = {};
@@ -27,29 +26,8 @@ class Fisherman {
27
26
  /**
28
27
  * write setting
29
28
  */
30
- async settings(vendor = 'eggs', isClone = false) {
31
- let branding = vendor;
32
- if (vendor !== 'eggs' && vendor.includes('/')) {
33
- branding = vendor.slice(Math.max(0, vendor.lastIndexOf('/')));
34
- }
35
- const settings = this.installer.configuration + 'settings.conf';
36
- shelljs_1.default.cp(this.installer.template + 'settings.yml', settings);
37
- let hasSystemd = '# ';
38
- if (utils_1.default.isSystemd()) {
39
- hasSystemd = '- ';
40
- }
41
- let createUsers = '- ';
42
- if (isClone) {
43
- createUsers = '# ';
44
- }
45
- let hasDisplaymanager = '# ';
46
- if ((0, displaymanager_1.displaymanager)() !== '') {
47
- hasDisplaymanager = '- ';
48
- }
49
- shelljs_1.default.sed('-i', '{{hasSystemd}}', hasSystemd, settings);
50
- shelljs_1.default.sed('-i', '{{hasDisplaymanager}}', hasDisplaymanager, settings);
51
- shelljs_1.default.sed('-i', '{{branding}}', branding, settings);
52
- shelljs_1.default.sed('-i', '{{createUsers}}', createUsers, settings);
29
+ async createCalamaresSettings(theme = 'eggs', isClone = false) {
30
+ await (0, settings_1.settings)(this.installer.template, this.installer.configRoot, theme, isClone);
53
31
  }
54
32
  /**
55
33
  *
@@ -134,13 +112,13 @@ class Fisherman {
134
112
  * @param name
135
113
  * @param isScript
136
114
  */
137
- async buildCalamaresModule(name, isScript = true) {
138
- const moduleTemplate = node_path_1.default.resolve(__dirname, this.installer.templateMultiarch + name);
115
+ async buildCalamaresModule(name, isScript = true, theme = 'eggs') {
116
+ let moduleTemplate = node_path_1.default.resolve(__dirname, this.installer.templateMultiarch + name);
117
+ if (theme !== 'eggs') {
118
+ moduleTemplate = theme + '/theme/calamares/calamares-modules/' + name;
119
+ }
139
120
  const moduleDest = this.installer.multiarchModules + name;
140
121
  const moduleScript = `/usr/sbin/${name}.sh`;
141
- // console.log('moduleDest: ' + moduleDest)
142
- // console.log('moduleTemplate: ' + moduleTemplate)
143
- // console.log('moduleScript: ' + moduleScript)
144
122
  if (this.verbose)
145
123
  this.show(name, 'module', moduleDest);
146
124
  if (!node_fs_1.default.existsSync(moduleDest)) {
@@ -149,7 +127,7 @@ class Fisherman {
149
127
  shelljs_1.default.cp(`${moduleTemplate}/module.yml`, `${moduleDest}/module.desc`);
150
128
  if (isScript) {
151
129
  shelljs_1.default.cp(`${moduleTemplate}/${name}.sh`, moduleScript);
152
- await (0, utils_2.exec)(`chmod +x ${moduleScript}`);
130
+ await (0, utils_1.exec)(`chmod +x ${moduleScript}`);
153
131
  }
154
132
  return moduleScript;
155
133
  }
@@ -168,7 +146,7 @@ class Fisherman {
168
146
  shelljs_1.default.cp(`${moduleSource}/module.yml`, `${moduleDest}/module.desc`);
169
147
  shelljs_1.default.cp(`${moduleSource}/${name}.yml`, `${moduleDest}/${name}.conf`);
170
148
  shelljs_1.default.cp(`${moduleSource}/main.py`, moduleDest);
171
- await (0, utils_2.exec)(`chmod +x ${moduleSource}/main.py`);
149
+ await (0, utils_1.exec)(`chmod +x ${moduleSource}/main.py`);
172
150
  }
173
151
  /**
174
152
  *
@@ -19,7 +19,6 @@ const focal_1 = require("./distros/focal");
19
19
  const bionic_1 = require("./distros/bionic");
20
20
  const rolling_1 = require("./distros/rolling");
21
21
  const installer_1 = require("./installer");
22
- const utils_2 = require("../../lib/utils");
23
22
  /**
24
23
  *
25
24
  */
@@ -101,7 +100,7 @@ class Incubator {
101
100
  * UBUNTU
102
101
  */
103
102
  case 'bionic': {
104
- const bionic = new bionic_1.Bionic(this.installer, this.remix, this.distro, this.user_opt, release, this.isClone, this.verbose);
103
+ const bionic = new bionic_1.Bionic(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
105
104
  await bionic.create();
106
105
  break;
107
106
  }
@@ -124,7 +123,7 @@ class Incubator {
124
123
  * Arch
125
124
  */
126
125
  case 'rolling': {
127
- const rolling = new rolling_1.Rolling(this.installer, this.remix, this.distro, this.user_opt, release, this.isClone, this.verbose);
126
+ const rolling = new rolling_1.Rolling(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
128
127
  await rolling.create();
129
128
  break;
130
129
  }
@@ -139,10 +138,10 @@ class Incubator {
139
138
  if (this.installer.name !== 'calamares') {
140
139
  // Remove krill configuration and multiarc if present
141
140
  try {
142
- shelljs_1.default.exec('rm ' + this.installer.configuration + ' -rf');
141
+ shelljs_1.default.exec('rm ' + this.installer.configRoot + ' -rf');
143
142
  }
144
143
  catch (error) {
145
- console.log('error: ' + error + ' removing ' + this.installer.configuration + ' -rf');
144
+ console.log('error: ' + error + ' removing ' + this.installer.configRoot + ' -rf');
146
145
  }
147
146
  try {
148
147
  shelljs_1.default.exec('rm ' + this.installer.multiarch + ' -rf');
@@ -152,36 +151,36 @@ class Incubator {
152
151
  }
153
152
  }
154
153
  // rootConfiguration krill calamares
155
- if (!node_fs_1.default.existsSync(this.installer.configuration)) {
154
+ if (!node_fs_1.default.existsSync(this.installer.configRoot)) {
156
155
  try {
157
- node_fs_1.default.mkdirSync(this.installer.configuration);
156
+ node_fs_1.default.mkdirSync(this.installer.configRoot);
158
157
  }
159
158
  catch (error) {
160
- console.log('error: ' + error + ' creating ' + this.installer.configuration);
159
+ console.log('error: ' + error + ' creating ' + this.installer.configRoot);
161
160
  }
162
161
  }
163
- if (!node_fs_1.default.existsSync(this.installer.configuration + 'branding')) {
162
+ if (!node_fs_1.default.existsSync(this.installer.configRoot + 'branding')) {
164
163
  try {
165
- node_fs_1.default.mkdirSync(this.installer.configuration + 'branding');
164
+ node_fs_1.default.mkdirSync(this.installer.configRoot + 'branding');
166
165
  }
167
166
  catch (error) {
168
- console.log('error: ' + error + ' creating ' + this.installer.configuration + 'branding');
167
+ console.log('error: ' + error + ' creating ' + this.installer.configRoot + 'branding');
169
168
  }
170
169
  }
171
- if (!node_fs_1.default.existsSync(this.installer.configuration + 'branding/eggs')) {
170
+ if (!node_fs_1.default.existsSync(this.installer.configRoot + 'branding/eggs')) {
172
171
  try {
173
- node_fs_1.default.mkdirSync(this.installer.configuration + 'branding/eggs');
172
+ node_fs_1.default.mkdirSync(this.installer.configRoot + 'branding/eggs');
174
173
  }
175
174
  catch (error) {
176
- console.log('error: ' + error + ' creating ' + this.installer.configuration + 'branding/eggs');
175
+ console.log('error: ' + error + ' creating ' + this.installer.configRoot + 'branding/eggs');
177
176
  }
178
177
  }
179
- if (!node_fs_1.default.existsSync(this.installer.configuration + 'modules')) {
178
+ if (!node_fs_1.default.existsSync(this.installer.configRoot + 'modules')) {
180
179
  try {
181
- node_fs_1.default.mkdirSync(this.installer.configuration + 'modules');
180
+ node_fs_1.default.mkdirSync(this.installer.configRoot + 'modules');
182
181
  }
183
182
  catch (error) {
184
- console.log('error: ' + error + ' creating ' + this.installer.configuration + 'modules');
183
+ console.log('error: ' + error + ' creating ' + this.installer.configRoot + 'modules');
185
184
  }
186
185
  }
187
186
  if (!node_fs_1.default.existsSync(this.installer.multiarch)) {
@@ -201,25 +200,25 @@ class Incubator {
201
200
  }
202
201
  }
203
202
  /**
204
- * ADDONS (only for calamares)
203
+ * themes (only for calamares)
205
204
  */
206
205
  if (this.installer.name === 'calamares') {
207
- // console.log('theme: ' + this.theme)
208
- let calamaresBranding = node_path_1.default.resolve(__dirname, `../../../addons/${this.remix.branding}/theme/calamares/branding`);
206
+ let calamaresBranding = node_path_1.default.resolve(__dirname, `../../../addons/eggs/theme/calamares/branding`);
209
207
  if (this.theme.includes('/')) {
210
208
  calamaresBranding = `${this.theme}/theme/calamares/branding`;
211
209
  }
210
+ // console.log(`calamaresBranding: ${calamaresBranding}`)
212
211
  if (node_fs_1.default.existsSync(calamaresBranding)) {
213
- if (!node_fs_1.default.existsSync(this.installer.configuration + `branding/${this.remix.branding}`)) {
212
+ if (!node_fs_1.default.existsSync(this.installer.configRoot + `branding/${this.remix.branding}`)) {
214
213
  try {
215
- node_fs_1.default.mkdirSync(this.installer.configuration + `branding/${this.remix.branding}`);
214
+ node_fs_1.default.mkdirSync(this.installer.configRoot + `branding/${this.remix.branding}`);
216
215
  }
217
216
  catch (error) {
218
- console.log('error: ' + error + ' creating ' + this.installer.configuration + `branding/${this.remix.branding}`);
217
+ console.log('error: ' + error + ' creating ' + this.installer.configRoot + `branding/${this.remix.branding}`);
219
218
  }
220
219
  }
221
220
  // patch quirinux
222
- shelljs_1.default.cp('-r', calamaresBranding + '/*', this.installer.configuration + `branding/${this.remix.branding}/`);
221
+ shelljs_1.default.cp('-r', calamaresBranding + '/*', this.installer.configRoot + `branding/${this.remix.branding}/`);
223
222
  }
224
223
  else {
225
224
  console.log(calamaresBranding);
@@ -258,7 +257,7 @@ class Incubator {
258
257
  */
259
258
  createBranding() {
260
259
  const branding = require('./branding').branding;
261
- const dir = this.installer.configuration + 'branding/' + this.remix.branding + '/';
260
+ const dir = this.installer.configRoot + 'branding/' + this.remix.branding + '/';
262
261
  if (!node_fs_1.default.existsSync(dir)) {
263
262
  shelljs_1.default.exec(dir + ' -p');
264
263
  }
@@ -266,17 +265,6 @@ class Incubator {
266
265
  const content = branding(this.remix, this.distro, this.verbose);
267
266
  write(file, content, this.verbose);
268
267
  }
269
- /**
270
- * non dovrebbe servire
271
- */
272
- async createInstallDebian() {
273
- const scriptInstallDebian = require('./calamares-modules/scripts/install-system.sh').installDebian;
274
- const scriptDir = '/usr/bin/';
275
- const scriptFile = scriptDir + 'install-system.sh';
276
- const scriptContent = scriptInstallDebian();
277
- write(scriptFile, scriptContent, this.verbose);
278
- await (0, utils_2.exec)(`chmod +x ${scriptFile}`);
279
- }
280
268
  }
281
269
  exports.default = Incubator;
282
270
  /**
@@ -6,19 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.installer = void 0;
7
7
  const distro_1 = __importDefault(require("../../classes/distro"));
8
8
  const pacman_1 = __importDefault(require("../../classes/pacman"));
9
+ /**
10
+ *
11
+ * @returns
12
+ */
9
13
  function installer() {
10
14
  const installer = {};
15
+ // configRoot
16
+ installer.configRoot = '';
11
17
  if (pacman_1.default.packageIsInstalled('calamares')) {
12
18
  installer.name = 'calamares';
13
- installer.configuration = '/etc/calamares/';
19
+ installer.configRoot = '/etc/calamares/';
14
20
  installer.multiarch = multiarch() + 'calamares/';
15
21
  }
16
22
  else {
17
23
  installer.name = 'krill';
18
- installer.configuration = '/etc/penguins-eggs.d/krill/';
19
- installer.multiarch = multiarch() + 'penguins-eggs/';
24
+ installer.configRoot = '/etc/penguins-eggs.d/krill/';
25
+ /**
26
+ * renamed: was penguins-eggs
27
+ */
28
+ installer.multiarch = multiarch() + 'krill/';
20
29
  }
21
- installer.modules = installer.configuration + 'modules/';
30
+ installer.modules = installer.configRoot + 'modules/';
22
31
  installer.multiarchModules = installer.multiarch + 'modules/';
23
32
  /**
24
33
  * i template nelle versioni isCalamaresAvailable sono QUELLI di calamares
@@ -1326,7 +1326,10 @@ class Ovary {
1326
1326
  await (0, utils_1.exec)(`cp -r /usr/lib/grub/${utils_2.default.machineUEFI()}/* ${efiWorkDir}/boot/grub/${utils_2.default.machineUEFI()}/`, this.echo);
1327
1327
  // if this doesn't work try another font from the same place (grub's default, unicode.pf2, is much larger)
1328
1328
  // Either of these will work, and they look the same to me. Unicode seems to work with qemu. -fsr
1329
- if (fs_1.default.existsSync('/usr/share/grub/unicode.pf2')) {
1329
+ if (fs_1.default.existsSync('/usr/share/grub/font.pf2')) {
1330
+ await (0, utils_1.exec)(`cp /usr/share/grub/font.pf2 ${efiWorkDir}/boot/grub/font.pf2`, this.echo);
1331
+ }
1332
+ else if (fs_1.default.existsSync('/usr/share/grub/unicode.pf2')) {
1330
1333
  await (0, utils_1.exec)(`cp /usr/share/grub/unicode.pf2 ${efiWorkDir}/boot/grub/font.pf2`, this.echo);
1331
1334
  }
1332
1335
  else if (fs_1.default.existsSync('/usr/share/grub/ascii.pf2')) {
@@ -10,6 +10,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  * license: MIT
11
11
  */
12
12
  const core_1 = require("@oclif/core");
13
+ const path_1 = __importDefault(require("path"));
14
+ const fs_1 = __importDefault(require("fs"));
13
15
  const utils_1 = __importDefault(require("../classes/utils"));
14
16
  const settings_1 = __importDefault(require("../classes/settings"));
15
17
  const incubator_1 = __importDefault(require("../classes/incubation/incubator"));
@@ -44,9 +46,17 @@ class Calamares extends core_1.Command {
44
46
  let theme = 'eggs';
45
47
  if (flags.theme !== undefined) {
46
48
  theme = flags.theme;
49
+ if (theme.endsWith('/')) {
50
+ theme = theme.substring(0, theme.length - 1);
51
+ }
52
+ theme = path_1.default.resolve(theme);
53
+ if (!fs_1.default.existsSync(theme + '/theme')) {
54
+ console.log('Cannot find theme: ' + theme);
55
+ process.exit();
56
+ }
47
57
  }
48
- const nointeractive = flags.nointeractive;
49
58
  console.log(`theme: ${theme}`);
59
+ const nointeractive = flags.nointeractive;
50
60
  if (utils_1.default.isRoot(this.id)) {
51
61
  let installer = 'krill';
52
62
  if (pacman_1.default.isInstalledGui()) {
@@ -95,7 +105,7 @@ class Calamares extends core_1.Command {
95
105
  utils_1.default.warning('Configuring krill');
96
106
  await this.settings.loadRemix(this.settings.config.snapshot_basename, theme);
97
107
  this.incubator = new incubator_1.default(this.settings.remix, this.settings.distro, this.settings.config.user_opt, theme, verbose);
98
- console.log('calamares relase: ' + release);
108
+ console.log('calamares release: ' + release);
99
109
  await this.incubator.config(release);
100
110
  }
101
111
  }
@@ -80,18 +80,16 @@ class Produce extends core_1.Command {
80
80
  let theme = 'eggs';
81
81
  if (flags.theme !== undefined) {
82
82
  theme = flags.theme;
83
- if (theme.includes('/')) {
84
- // remove final /
85
- if (theme.endsWith('/')) {
86
- theme = theme.substring(0, theme.length - 1);
87
- }
88
- // check if theme exists
89
- if (!node_fs_1.default.existsSync(theme + '/theme')) {
90
- console.log('Cannot find theme: ' + theme);
91
- process.exit();
92
- }
83
+ if (theme.endsWith('/')) {
84
+ theme = theme.substring(0, theme.length - 1);
85
+ }
86
+ theme = node_path_1.default.resolve(theme);
87
+ if (!node_fs_1.default.existsSync(theme + '/theme')) {
88
+ console.log('Cannot find theme: ' + theme);
89
+ process.exit();
93
90
  }
94
91
  }
92
+ console.log(`theme: ${theme}`);
95
93
  const i = await config_1.default.thatWeNeed(nointeractive, verbose, cryptedclone);
96
94
  if ((i.needApt || i.configurationInstall || i.configurationRefresh || i.distroTemplate) && (await utils_1.default.customConfirm('Select yes to continue...'))) {
97
95
  await config_1.default.install(i, nointeractive, verbose);
@@ -1,2 +1,6 @@
1
1
  "use strict";
2
+ /**
3
+ * settings calamares
4
+ *
5
+ */
2
6
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -60,6 +60,7 @@ const m_timezone_1 = __importDefault(require("./modules/m-timezone"));
60
60
  const umount_1 = __importDefault(require("./modules/umount"));
61
61
  const mkfs_1 = __importDefault(require("./modules/mkfs"));
62
62
  const hostname_1 = __importDefault(require("./modules/hostname"));
63
+ const cfs_1 = __importDefault(require("../classes/cfs"));
63
64
  /**
64
65
  * hatching: installazione o cova!!!
65
66
  */
@@ -163,6 +164,12 @@ class Sequence {
163
164
  * @returns
164
165
  */
165
166
  async start(domain = 'local', unattended = false, nointeractive = false, halt = false, verbose = false) {
167
+ /**
168
+ * To let krill to work with Arch we need:
169
+ */
170
+ if (this.distro.familyId === 'archlinux') {
171
+ await (0, utils_2.exec)(`sudo ln -s /run/archiso/bootmnt/live/ /live`);
172
+ }
166
173
  this.unattended = unattended;
167
174
  this.nointeractive = nointeractive;
168
175
  this.halt = halt;
@@ -515,6 +522,24 @@ class Sequence {
515
522
  catch (error) {
516
523
  await utils_1.default.pressKeyToExit(JSON.stringify(error));
517
524
  }
525
+ /**
526
+ * custom final steps
527
+ */
528
+ const cfs = new cfs_1.default();
529
+ const steps = cfs.steps();
530
+ if (steps.length > 0) {
531
+ for (const step of steps) {
532
+ message = `running ${step}`;
533
+ percent = 0.97;
534
+ try {
535
+ await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
536
+ await this.execCalamaresModule(step);
537
+ }
538
+ catch (error) {
539
+ await utils_1.default.pressKeyToExit(JSON.stringify(error));
540
+ }
541
+ }
542
+ }
518
543
  // umountVfs
519
544
  message = "umount VFS";
520
545
  percent = 0.96;
@@ -525,7 +550,6 @@ class Sequence {
525
550
  catch (error) {
526
551
  await utils_1.default.pressKeyToExit(JSON.stringify(error));
527
552
  }
528
- // umount
529
553
  message = "umount";
530
554
  percent = 0.98;
531
555
  try {
@@ -26,7 +26,6 @@ async function addUser(name = 'live', password = 'evolution', fullName = '', roo
26
26
  }
27
27
  await (0, utils_2.exec)(cmd, this.echo);
28
28
  cmd = `echo ${name}:${password} | chroot ${this.installTarget} chpasswd ${this.toNull}`;
29
- // echo ${name}:${password} | chroot ${this.installTarget} chpasswd ${this.toNull}
30
29
  await (0, utils_2.exec)(cmd, this.echo);
31
30
  // Debian
32
31
  cmd = `chroot ${this.installTarget} usermod -aG sudo ${name} ${this.toNull}`;
@@ -35,6 +34,11 @@ async function addUser(name = 'live', password = 'evolution', fullName = '', roo
35
34
  }
36
35
  try {
37
36
  await (0, utils_2.exec)(cmd, this.echo);
37
+ // check or create group: autologin
38
+ if (this.distro.familyId === 'archlinux') {
39
+ await (0, utils_2.exec)(`chroot ${this.installTarget} getent group autologin || groupadd autologin`);
40
+ await (0, utils_2.exec)(`chroot ${this.installTarget} gpasswd -a ${this.settings.config.user_opt} autologin`);
41
+ }
38
42
  }
39
43
  catch {
40
44
  await utils_1.default.pressKeyToExit(cmd);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "penguins-eggs",
3
3
  "description": "Perri's Brewery edition: remaster your system and distribuite it",
4
- "version": "9.4.15",
4
+ "version": "9.5.2",
5
5
  "author": "Piero Proietti @pieroproietti",
6
6
  "bin": {
7
7
  "eggs": "bin/run"
@@ -13,8 +13,8 @@
13
13
  "@oclif/plugin-autocomplete": "1.3.8",
14
14
  "@oclif/plugin-help": "^5.2.8",
15
15
  "@oclif/plugin-version": "1.2.1",
16
- "@oclif/plugin-warn-if-update-available": "^2.0.32",
17
- "@oclif/test": "^2.3.11",
16
+ "@oclif/plugin-warn-if-update-available": "^2.0.37",
17
+ "@oclif/test": "^2.3.22",
18
18
  "axios": "^1.4.0",
19
19
  "chalk": "^4.1.2",
20
20
  "etrick": "0.0.3",
@@ -28,10 +28,10 @@
28
28
  "node-static": "^0.7.11",
29
29
  "react": "^18.2.0",
30
30
  "shelljs": "0.8.5",
31
- "systeminformation": "^5.17.12",
31
+ "systeminformation": "^5.18.3",
32
32
  "tftp": "^0.1.2",
33
- "tslib": "^2.5.0",
34
- "typescript": "^5.0.4"
33
+ "tslib": "^2.5.3",
34
+ "typescript": "^5.1.3"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@tsconfig/recommended": "^1.0.2",
@@ -44,11 +44,11 @@
44
44
  "@types/mocha": "^10.0.1",
45
45
  "@types/mustache": "^4.2.2",
46
46
  "@types/netmask": "^1.0.30",
47
- "@types/node": "^18.16.5",
47
+ "@types/node": "^18.16.17",
48
48
  "@types/node-static": "^0.7.7",
49
- "@types/react": "^18.2.6",
49
+ "@types/react": "^18.2.9",
50
50
  "@types/shelljs": "^0.8.12",
51
- "@typescript-eslint/parser": "^5.59.2",
51
+ "@typescript-eslint/parser": "^5.59.9",
52
52
  "chai": "^4.3.7",
53
53
  "eslint": "^7",
54
54
  "eslint-config-oclif": "^4.0.0",