{"id":20366245,"url":"https://github.com/tale/rootbeer","last_synced_at":"2025-04-12T05:10:54.438Z","repository":{"id":262342886,"uuid":"886945668","full_name":"tale/rootbeer","owner":"tale","description":"Deterministically manage your system using Lua!","archived":false,"fork":false,"pushed_at":"2024-11-30T20:47:06.000Z","size":55,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-26T00:40:53.435Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-11T22:30:27.000Z","updated_at":"2025-02-08T14:52:05.000Z","dependencies_parsed_at":"2024-11-30T21:23:44.270Z","dependency_job_id":"d04f6ce0-4cb3-477c-890b-8ee7ebe913ee","html_url":"https://github.com/tale/rootbeer","commit_stats":null,"previous_names":["tale/architect","tale/rootbeer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tale%2Frootbeer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tale%2Frootbeer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tale%2Frootbeer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tale%2Frootbeer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tale","download_url":"https://codeload.github.com/tale/rootbeer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519545,"owners_count":21117761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T00:23:28.428Z","updated_at":"2025-04-12T05:10:54.379Z","avatar_url":"https://github.com/tale.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rootbeer\n\u003e Deterministically manage your system configuration with lua!\n\nThis tool aims to make managing your system configuration easy.\nYou can think of it as a tool that's very similar in function to\n[home-manager](https://github.com/nix-community/home-manager).\nThe idea is that you can define exactly how you want your system (or userland)\nto be configured within a lua script and then run the tool to apply those\nchanges to your system.\n\nWhy not Nix? I have plenty of reasons why I don't like Nix which I go into on\nmy [blog post](https://tale.me/blog/nix-might-be-overengineered/). However,\nI'm also not a fan of the `nix` language and wanted to see if I could make\nsomething similar with a language that is fully functional, scriptable, and\nhas good error messages (lua). Also, this is a fun project to work on!\n\n## Goals\n\u003e At the moment this project will not work if you try to compile it.\n\u003e Much of the functionality is just flat out missing and is TODO.\n\n- Be able to define system configurations in a lua script\n- Maintain a store of configurations, allowing rollbacks and revisions\n- Interface with OS-specific tools to apply configurations\n    - Package managers such as `brew` on macOS or `dnf` on Fedora\n    - Daemon services such as `launchd` on macOS or `systemd` on Linux\n\n## Technical Components\nI plan on extracting this out to separate documentation later, but here's a\nquick overview of the technical components of this project and how they all\nwork together. The end result is `rootbeer`, a CLI tool to control everything.\n\nHere are the components:\n- An embedded LuaJIT interpreter to load and evaluate lua scripts. All of the\nfunctionality provided by Rootbeer will be exposed to the lua script via the\n`rootbeer` module.\n\n- A store system to manage configurations. This will be similar to Nix's store\nsystem, where configurations are stored in a directory and can be rolled back\nor revised.\n\n- A pluggable module system that serves as the basis of all functionality\noffered by Rootbeer. The idea is that different integrations with the OSes\ncan be written as modules and compiled in-tree to ship in the final binary.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftale%2Frootbeer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftale%2Frootbeer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftale%2Frootbeer/lists"}