What are Arroyo Systems?
Arroyo systems are the latest iteration of my the CCE Emacs init.el
generator cum Concept
Operating System built for managing my laptops and desktops around
an NixOS, Emacs, EXWM, and Evil Mode system. It is distributed and
developed as a collection of org-mode documents
which can be used to provision and upgrade the system and shared on the
web to enrich the lives of weirdos like me.
pulling inspiration from vulpea and vino of building out a context-specific database hypermedia application which integrate with org-roam rather than extending or working within the API-space of org-roam itself, Arroyo consists of a database caching layer working alongside an org-roam database which can be queried to assemble a NixOS system and highly-customized Emacs installation-and-configuration.
it's designed such that a user can plug various pieces of system configuration together in the form of org-mode documents, creating a system which is literally self-documented.
By using a cache similar to the one built for my org-roam keyword
caching patch, we can construct a higher-level database schema for
the Arroyo system generators. The Arroyo System Cache aka arroyo-db
will create a simple key-value store
which higher-level generators like Arroyo
Emacs Generator can use to assemble and automate systems.
An Arroyo System's configuration can be published on the web using Arcology, an elixir web document publishing framework built under similar ideas and philosophies with the end goal of socially-maintained hand-crafted and user-customized Linux systems.
Arroyo Systems are "designed" to develop in fits and bursts
Arroyos are a type of stream bed biome common in the American southwest and northern Mexico Sonora Bioregion which is dry for most of the year and gets most of its rain in brief torrential surface flows. When I was young, I lived in a home which backed up to an arroyo and I spent quite some time wandering its trails and its unkept willows and catching my clothes on catclaws, using it as a shortcut through the neighborhood and an escape in to an increasingly developed suburban sprawl.
I was always enchanted with the arroyo during and after the torrential downpours Phoenix would have in the late summers, as tonnes of water passed through willows and waterweed. The arroyo would teem with life during the monsoon season as the brief intense rains pushed life out of its shaded cracks and in to a frenzy of growth and development and used it as a migration route just as the humans in the built environment around it did in its dry periods.
The Arroyo system pulls inspiration from this as a lens to look at how personal systems management is spurred on by
- keeping up with ecosystem development and migration without undue effort
- external changes and new tools should be easy to try and easy to then disregard
- slow thinking and quick implementation of internal development to match with life needs
- management of overgrowth through periods of careful usage and evaluation
This system develops when I feel like it, and has slowly over the course of a decade developed in to something which can be shared and perhaps replicated. When a beautiful summer's day spurs me to investigate a new library or I learn about a new paradigm I sit and think about it. The Arroyo floods and growth follows quickly; there might not be another rain of insight until winter, after all.
NEXT Assembling an Arroyo System
- How do I use these libraries to generate an Emacs init file?
- How do I use these libraries to build a NixOS system?
- How do I use these libraries to build an emacs-gcc with packages provided by NixOS at build time?
- How do I use these libraries to install and manage software for my user account?
- How do I build more generators on top of this system?
Arroyo is itself an Arroyo Emacs module
It should probably be defined as a Arroyo Home Manager module, too, once the code has stabilized..
'load-path "~/org/arroyo")
(add-to-list require 'org-roam)
(require 'arroyo-db)
(require 'arroyo-utils)
(require 'arroyo-home-manager)
(require 'arroyo-nixos)
(require 'arroyo-emacs)
(require 'arroyo-feeds) (
Arroyo Generators
Working arroyos:
- Arroyo Nixos generated NixOS system, which includes
- Arroyo Home Manager generated home directory + user programs, which includes
- Arroyo Emacs generated
init.el
and emacs-gcc package - Arroyo Feed Cache generates and pushes configuration files for my Universal Aggregator feed fetcher
These flow together and in theory other arroyos could feed in to them, basically anything which requires or desires nontrivail configuration and long-term documentation.
NEXT is The Arcology Project itself an Arroyo System?
it's not really built to compose, and i'd rather not use the arroyo system as a generic build tool! though it sort of is for org-mode files…
Coming back to this [2021-12-02 Thu] – i specify a table layout which could be expressed as an Arroyo generator. I'd like to keep the generator outside of the Arroyo project, and in Arcology, but I think at this point it makes sense to spend a bit of time cleaning up the core APIs and documenting them better, and then coming back to Arcology with a smarter table design.