arroyo/arroyo.org

116 lines
7.6 KiB
Org Mode

:PROPERTIES:
:ID: arroyo/arroyo
:ROAM_ALIASES: Arroyo "Arroyo System" "Arroyo Systems"
:ROAM_REFS: https://cce.whatthefuck.computer/arroyo/
:END:
#+TITLE: Arroyo Systems Management
#+ARCOLOGY_KEY: cce/arroyo
#+ARCOLOGY_ALLOW_CRAWL: t
#+AUTO_TANGLE: t
#+filetags: :Project:
* What are Arroyo Systems?
:PROPERTIES:
:ID: arroyo/what-are-arroyos
:END:
Arroyo systems are the underlying design systems for the [[id:cce/cce][CCE]] Emacs =init.el= generator and [[id:60f710b2-6a1f-44be-bc13-dfe01e46d4e3][Concept Operating System]]. It's used for managing my laptops' and desktop's and servers' and mobiles' software around an [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][NixOS]], [[id:cce/emacs][Emacs]], [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE]], and [[id:cce/evil_mode][Evil Mode]]. Arroyo Systems are distributed and developed as a collection of [[id:1fb8fb45-fac5-4449-a347-d55118bb377e][org-mode]] documents which can be used to provision and upgrade the system and are published on the web to enrich the lives of weirdos like [[id:ryan_rix][me]].
Arroyo allows you to build context-specific databases from a sort of [[id:128ab0e8-a1c7-48bf-9efe-0c23ce906a48][hypermedia application]] which integrate with [[id:cce/org-roam][org-roam]]. Rather than extending or working within the API-space of [[id:cce/org-roam][org-roam]] itself, Arroyo is an org-mode parser and metadata extractor, and a database cache model layer which can be queried to assemble a [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][NixOS]] system and highly-customized [[id:cce/emacs][Emacs]] installation-and-configuration.
it's designed such that a user can plug various pieces of system configuration together in the form of [[id:1fb8fb45-fac5-4449-a347-d55118bb377e][org-mode]] documents downloaded or synced from trustworthy friends, creating a system which is literally ([[id:cce/literate_programming][literately]]) self-documented.
An Arroyo System's configuration can be published on the web using [[id:1d917282-ecf4-4d4c-ba49-628cbb4bb8cc][Arcology]], an python web document publishing framework built using Arroyo's parser and philosophies with the end goal of managing socially-maintained, hand-crafted, and user-customized Linux systems.
* Arroyo Systems are "designed" to develop in fits and bursts
:PROPERTIES:
:ID: arroyo/design-principles
:END:
[[https://en.wikipedia.org/wiki/Arroyo_%28creek%29][Arroyos]] are a type of stream bed biome common in the American southwest and northern Mexico [[id:sonora_bioregion][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
- an oasis path that cuts through the status quo
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
[[id:20231113T195508.942155][Rebuild of The Complete Computer]]
- How do I use these libraries to generate an [[id:cce/emacs][Emacs]] init file?
- How do I use these libraries to build a NixOS system?
- How do I use these libraries to build an emacs-native-comp 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 [[id:arroyo/emacs][Arroyo Emacs]] module
It should probably be defined as a [[id:arroyo/home-manager][Arroyo Home Manager]] module, too, once the code has stabilized..
#+ARROYO_EMACS_MODULE: arroyo
#+ARROYO_MODULE_WANTS: cce/org-roam.org
#+begin_src emacs-lisp :tangle ../cce/arroyo.el :comments link :results none
(add-to-list 'load-path "~/org/arroyo")
(require 'org-roam)
; (require 'arroyo-db)
; (require 'arroyo-utils)
(require 'arroyo-home-manager)
(require 'arroyo-nixos)
(require 'arroyo-emacs)
; (require 'arroyo-feeds)
#+end_src
* Structure of the Arroyo (Or: Table of Contents)
(These are spread across multiple projects right now, I am still nailing down the exact structure of the Arroyo, Arcology, and CCE)
- [[id:20231023T115950.248543][The arroyo_rs Native Org Parser]]
- [[id:20231023T115950.248543][Arroyo Org Parser]]
- [[id:20240112T120813.386800][Arroyo HTML exporter]]
- [[id:arcology/django/roam][Arcology Roam Models]]
- [[id:arroyo/django/generators][The Arroyo Generators]]
- [[id:arcology/django/interfaces][Arcology CLI Interface]]
* Arroyo Generators :noexport:
Working arroyos:
- [[file:arroyo-nixos.org][Arroyo Nixos]] generated NixOS system, which includes
- [[file:arroyo-home-manager.org][Arroyo Home Manager]] generated home directory + user programs, which includes
- [[file:arroyo-emacs.org][Arroyo Emacs]] generated =init.el= and emacs-gcc package
- [[file:arroyo-feed-cache.org][Arroyo Feed Cache]] generates and pushes configuration files for my [[id:cce/universal_aggregator][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 [[id:1d917282-ecf4-4d4c-ba49-628cbb4bb8cc][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] -- [[id:20211202T201728.221203][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.
** NEXT arroyo module groupings to modularize [[id:cce/cce][CCE]]
* Greetz and Thanks
the emacs and nixpkgs communities
[[id:cce/org-roam][org-roam]]
pulling inspiration from [[id:5dceb633-823f-41a5-b39b-ad37b1b65e0a][vulpea]] and [[id:43523a67-a951-4464-9af4-8a8fe116281a][vino]]
[[id:f4d0be16-1f68-4598-a02c-0327759e034c][Torbjorn Loken]]
alphapapa
[[id:7f451675-1db0-4093-9d8e-28cc5d597545][maya kate]]
Yoshiki Shmitz (RIP to a real one)
[[id:5e25597e-ae0f-4f15-ae27-f89351e2ade3][Malleable Systems Collective]]