# syssetup

This system was created to allow of easy recreation or restoration of a existing system. This is not a backup application, nor does it create a image in the sense of a full disk image. It creates a snapshot of the current system configuration and installed packages. Once this information is collected it is packaged into standalone self extracting restore archive. It does this by copying your /etc folder and generating a list of installed programs via the package manager on the system. These are then packaged into executable you can copy and run on another system. Great for duplicating a say a raspberry pi configuration. Works well for VPS systems as well, especially when you just need to do a clean reinstall.

# Scripts

check.bash - checks if makeself is installed. Can be installed via normal methods or via this script
os_probe.bash - checks if we are on a debian or arch based distro via looking for apt or pacman
restore.*.bash - these are scripts specific to debian or arch
bootstrap.wrt.ash - Specifically for OpenWRT, made specifically to be compatable with bustbox's ash shell. It will check for and if needed install bash before running the rest.
syssetup.bash - The main program 
test.bash - Some file I was using to test something, you can ignore it

# Plans

To add flatpak support for making it more usable for desktops. Also at one point create a custom replacement for makeself thats specific to this script. 

# Notes Feb 22 2024

I spent all day testing this with VMs and found a problem that would prevent my code from running properly. Turns out if the system has no manually downloaded and installed packages, the line below causes awk to hang waiting for input. 

apt list --installed | grep ',local]' | awk -F/ '{print $1}' >> $tmpdir/exclusions

Now I tried to use timeout and well that didn't work. After many hours I figured lets toss the line
at chatgpt maybe it comes up with something I overlooked and it did. Simply check for output first, wow I was adding all the crazy debug code to all parts of this thing and overlooked that. It suggested a fix which wasn't elegant, but appears to work. Hopefully, this resolves a few issues. Next up maybe some tweaks to exclusions to speed the process up.  

# Notes Oct 29 2023

I've been at it adding a few tweaks here or there. Trying to add a good system for  exclusions to make things more protable. While the current version works great on say VPS running the same base image, its not so good on different ones. This is due to some packages perhaps having different names like kernel images, modules and headers. This also includes things installed from a single package file you downloaded that isn't in a repo. Technically not bugs, but I want more flexibility. 

# Special Thanks 

To the fine folks that created codeium(Link below). The autosuggest / autocomplete features make things allot easier and save me a ton of typing. Having an AI that can function as an assistant is a wonderful thing. 

[![built with Codeium](https://codeium.com/badges/main)](https://codeium.com)