Either you stumbled here because you saw ginst first or you got here first and don’t know what ginst is. In any way, let me tell you a little about ginst and why i dropped it!

(Keep in mind that all software versions mentioned will change over time)

About ginst

ginst was a generic installer wrapper that you could use to execute a self written configuration file which in turn installs programs according to the statements in said file. The catch was that it could execute the config file across different Linux distributions but keep the structure of the config file the same.

It had dependency management, supported different file types for your config, used bash so you could stay in a known environment and of course required you to only write the config once.

How ginst Came To Be

Before I started making ginst I tried and used many different linux distributions. I usually required the same programs for all of them:

And some other programs like compilers, interpreters but the once mentioned above are usually my goto programs.

Now depending on the distribution you might have to take different steps to install them. On other distros using the built in package manager can work but on Ubuntu 22.04 for example there is currently only Neovim 0.7.2-3 available which is not good enough for LunarVim 1.3 to work (requires Neovim 0.9+).

Installing tar balls on all your systems will probably work but you loose the option to automatically update the software when you do this.

So If you’re like me and want to install all the software you need across all the different distributions you either have to look up install steps all the time or even better: write a gigantic script that does the switching for you but. Theres also a hidden bonus option but I’ll get to that in a bit.

I wanted to take a different approach and seperate the switching logic from the installation steps. This seperation turned into ginst and the corresponding configuration files you had to write.

The Big Issue

If you’ve paid attention you might already see the problem:

With ginst you don’t get around writing a script in bash.

Worse yet:

You still have do the look up of all the different installation methods.

Just once to be fair but you still have to take the time to look them up and write them down. Even if you don’t plan on installing the software you need for distributions x and y, you still have to add those steps to your config for ginst to make sense.

You could probably get around this problem in many ways but there is not a huge payoff for the work the user has to put in. When i made a post on reddit advertising ginst someone was quick to point out the design flaw using one of xkcd’s popular comics.

What’s The Solution?

For me personally the solution was dropping ginst and finally setteling for a distro, Using tar balls where the distribution specific package managers didn’t have the versions i needed and looking for alternative systems that solve this problem.

I previously mentioned a hidden bonus option that you could use to install programs using a declarative config approach. Best thing is: there are actually multiple ones! I’m of course talking about systems like Nix and Ansible. (There are of course a lot more that just those two). I suggest you take a look at both of them. Nix is probably a lot close to what I was trying to accomplish with ginst.

That’s it that’s the whole post…bye

(In order of appearance)

https://codeberg.org/Sebito/ginst
https://fishshell.com/
https://www.lunarvim.org/
https://sw.kovidgoyal.net/kitty/
https://xkcd.com/927/
https://nixos.org/
https://docs.ansible.com/ansible/latest/index.html