robinrheem / robinrheem

A monorepo of me!
MIT License
0 stars 0 forks source link

Managing every type of application #3

Open robinrheem opened 2 years ago

robinrheem commented 2 years ago

Applications/Tools

We use applications, tools to be more productive. The problem that I have when using applications is managing their state. By state, I mean configuration/settings. Applications that have no way to configure mean it's either a tool that does one job right or a product that's trying to make a monopoly. For extreme productivity, there's a need for extensive configuration. The more we can configure and extend, the more we can get productive of our niche needs. But the problem gets worse when we have too many configurations. How can we make a unified, reproducible, and version-controllable way to manage these configurations?

robinrheem commented 2 years ago

For OS configuration management, I could use a declarative configuration tool like home-manager from Nix. There are two types of applications that I use, command-line apps and GUI apps. Both can be configured declaratively with home-manager. If I use Nix well enough, then I could configure each application by its own specific configurations. zshrc, vimrc, init.lua/init.vim, tmux, emacs, or any other application that needs more configuration.

By this way, I can at least check off the reproducible, version-controlled, and declarative part, but I can't sort of solve the unified part. To unify the way of configuration, I would like to use one language to rule them all. But I need to use Nix, Bash, Lua, yaml, ini, toml, etc. To unify everything, I would have to translate every sort of configuration to Nix. Which pretty much is going to be a job for eternity. Then how about a Nix transpiler for each configuration language? Still, takes time, but let's see how it goes while I try to start making dotfiles or configuration files in this repository.