A framework for configuring development environments in Linux machines.
The dotfiles project is my response for the common pattern of sharing your development configuration to other developers on GitHub.
Usually these repos consist of bash/zsh/shell
configuration files, however I took the extra step of having a repo that maintains all the tools and configurations I use on my Linux development machine. Instead of working with shell configuration files, I represent my configurations with JSON
files.
The way it works is pretty simple. The framework is built on top of three fundamentals:
modules
, which represent an actionable unit within the framework. A module can be an alias configuration, a tool, a setup script, etc….converters
, which translate modules in different representations. There are converters that translate modules from theirjson
representation to framework models, and converters that translate framework models to theirbash
representation (in short, the framework acceptsjson
as input, and outputsbash
scripts).profiles
, which describe a set of modules that are loaded to the framework. The goal of profiles is to specify different configuration workspaces for their needs (e.g., you can specify the configuration of yourpersonal
,server
andwork
workspaces).
The framework uses converters concept as way to segregate system configuration, promoting adaptability to other systems (i.e., I could easily add support for Windows environments using a converter for Windows representation.)
Here’s a demo of the framework in action (configuring work profile on a fresh Ubuntu machine):
#projects #dotfiles #linux #workspace #development-environment #installer