/ docs / model / microvisor.c4
microvisor.c4
  1  model {
  2      doombsd = component "DoomBSD" {
  3          summary "Modernized & Hardened FreeBSD"
  4          icon @/doombsd-symbol-orb.svg
  5          style {
  6              color red
  7          }
  8      }
  9  
 10      apollyon-linux = component "Apollyon Linux" {
 11          summary "Supercharged Arch Linux"
 12          icon @/apollyon-linux-logo.png
 13          style {
 14              color violet-900
 15          }
 16      }
 17  
 18      microvisor = context "Microvisor" {
 19          summary "Multikernel Build System"
 20          link https://www.sigops.org/s/conferences/sosp/2009/papers/baumann-sosp09.pdf "https://www.sigops.org/s/conferences/sosp/2009/papers/baumann-sosp09.pdf"
 21  
 22          icon tech:gnu-emacs
 23          style {
 24              color yellow-800
 25          }
 26  
 27  
 28          langugages = container "Languages" {
 29              likec4 = component {
 30                  title: "LikeC4"
 31                  icon @/likec4-symbol.svg
 32                  link: https://likec4.dev/ "Website"
 33                  style {
 34                      color: green
 35                  }
 36              }
 37  
 38              component nix {
 39                  title "Nix"
 40                  link https://nixos.org "Website"
 41                  icon tech:nix
 42                  style {
 43                      color: muted
 44                  }
 45              }
 46  
 47              rust = component {
 48                  title: "Rust"
 49                  icon: tech:rust
 50                  link : https://www.rust-lang.org "Website"
 51                  style {
 52                      color: amber
 53                  }
 54              }
 55  
 56              embedded-rust = component "Embedded Rust" {
 57                  icon @/embedded-rust-symbol.svg
 58                  link : https://rust-lang.org/what/embedded/ "Website"
 59                  style {
 60                      color: amber
 61                  }
 62              }
 63  
 64              embedded-c = component "Embedded C" {
 65                  icon @/embedded-c-symbol.svg
 66                  link : https://en.wikipedia.org/wiki/Embedded_C "Wikipedia"
 67                  style {
 68                      color: red
 69                  }
 70              }
 71  
 72              cplusplus = component "C++" {
 73                  icon: tech:cplusplus
 74                  link : https://cplusplus.com "Website"
 75                  style {
 76                      color: gray-800
 77                      opacity: 50%
 78                  }
 79              }
 80  
 81  
 82              sql = component "SQL" {
 83                  icon: tech:azure-sql-database
 84                  link : https://en.wikipedia.org/wiki/SQL "Wikipedia"
 85                  style {
 86                      color: sky
 87                  }
 88              }
 89  
 90              go = component {
 91                  title: "Go"
 92                  icon: tech:go
 93                  link : https://go.dev "Website"
 94                  style {
 95                      color: sky
 96                  }
 97              }
 98  
 99              org-mode = component "Org Mode" {
100                  icon: @/org-mode-symbol.svg
101                  link : https://orgmode.org "Website"
102                  style {
103                      color: gray-800
104                  }
105              }
106  
107          }
108  
109          build-systems = component "Build Systems" {
110              style {
111                  color: red
112                  opacity: 50%
113              }
114  
115              component devenv {
116                  link https://devenv.sh "Website"
117                  icon https://raw.githubusercontent.com/cachix/devenv/85e78cbe26467a2c23c9d34869235740132d749f/logos/devenv-dark-bg.svg
118                  style {
119                      color: gray
120                  }
121              }
122  
123              platformio = component "PlatformIO" {
124                  icon @/platformio-symbol.svg
125                  link https://platformio.org "Website"
126                  style {
127                      color: amber
128                  }
129              }
130          }
131  
132          frameworks = component "Frameworks" {
133              style {
134                  color: amber
135                  opacity: 50%
136              }
137  
138              home-manager = component "Home Manager" {
139                  link https://github.com/nix-community/home-manager "GitHub"
140                  icon https://repository-images.githubusercontent.com/78938149/bd7773f5-21d0-4653-b380-d3476697dfc4
141                  style {
142                      color: sky
143                  }
144  
145              }
146  
147              freertos = component "FreeRTOS" {
148                  icon @/freertos-logo.png
149                  link https://www.freertos.org "Website"
150                  style {
151                      color: green
152                  }
153  
154              }
155  
156  
157              loco-rs = container "Loco.rs" {
158                  icon @/loco-rs-symbol.png
159                  link https://loco.rs "Website"
160                  style {
161                      color red
162                  }
163              }
164  
165              ratatui = container "Ratatui" {
166                  icon @/ratatui-symbol.png
167                  link https://ratatui.rs "Website"
168                  style {
169                      color purple-800
170                  }
171              }
172  
173              dioxus = container "Dioxus" {
174                  icon @/dioxus-symbol.png
175                  link https://dioxuslabs.com "Website"
176                  style {
177                      color amber
178                  }
179              }
180  
181              embassy = container "Embassy" {
182                  icon @/embassy-symbol.png
183                  link https://embassy.dev "Website"
184                  style {
185                      color orange-500
186                  }
187              }
188  
189              bastillebsd = container "BastilleBSD" {
190                  icon @/bastillebsd-symbol.png
191                  link https://bastillebsd.org "Website"
192                  style {
193                      color red
194                  }
195              }
196  
197          }
198  
199          databases = container "Databases" {
200              style {
201                  color teal-500
202                  opacity 30%
203              }
204  
205              postgres = component "Postgres" {
206                  icon: tech:postgresql
207                  link : https://www.postgresql.org "Website"
208                  style {
209                      color: cyan-800
210                      shape: storage
211                  }
212              }
213  
214  
215              sqlite = component "SQLite" {
216                  icon: tech:sqlite
217                  link : https://sqlite.org "Website"
218                  style {
219                      color: cyan-800
220                      shape: storage
221                  }
222              }
223          }
224  
225          pr-review = container {
226              title: "🤖 PR Review Automation"
227              style {
228                  color: orange-500
229                  opacity: 40%
230              }
231  
232              coderabbit = component {
233                  title: "CodeRabbit"
234                  icon: https://avatars.githubusercontent.com/u/132028505?s=200&v=4.svg
235                  link: https://www.coderabbit.ai/
236                  style {
237                      color: gray-500
238                  }
239              }
240  
241              conventional-comments = component {
242                  title: "Conventional Comments"
243                  icon: https://conventionalcomments.org/logo.png
244                  link: https://conventionalcomments.org/
245                  style {
246                      color: purple-600
247                  }
248              }
249          }
250  
251          gitops = container {
252              title: "🌵 GitOps"
253              icon: tech:git
254              style {
255                  color: gray-500
256                  opacity: 40%
257              }
258  
259              trunk-based-development = component {
260                  title: "Trunk-Based Development"
261                  icon: https://trunkbaseddevelopment.com/images/logo.png
262                  link: https://trunkbaseddevelopment.com/ "Website"
263              }
264  
265              conventional-commits = component {
266                  title: "Conventional Commits"
267                  icon: https://avatars.githubusercontent.com/u/42154238?s=200&v=4.svg
268                  link: https://www.conventionalcommits.org/en/v1.0.0/
269                  style {
270                      color: rose-800
271                  }
272              }
273  
274              conventional-branch = component {
275                  title: "Conventional Branch"
276                  icon: https://avatars.githubusercontent.com/u/179835931?s=200&v=4.svg
277                  link: https://conventional-branch.github.io/
278                  style {
279                      color: sky
280                  }
281              }
282          }
283  
284          ci = container "â™» Continuous Integration" {
285              style {
286                  color: gray-500
287                  opacity: 40%
288              }
289  
290              semantic-release = component {
291                  title: "Semantic Release"
292                  icon: https://avatars.githubusercontent.com/u/12867925?s=200&v=4.svg
293                  link: https://semantic-release.gitbook.io/semantic-release/
294                  style {
295                      color: gray-500
296                  }
297              }
298  
299          }
300  
301          cd = container {
302              title: "🚢 Continuous Deployment"
303              style {
304                  color: gray-500
305                  opacity: 40%
306              }
307  
308              pulumi = component "Pulumi" {
309                  icon https://avatars.githubusercontent.com/u/21992475?s=48&v=4.svg
310                  link https://pulumi.com
311                  style {
312                      color: yellow-800
313                  }
314              }
315  
316              linux-containers = component "Linux Containers" {
317                  icon https://linuxcontainers.org/static/img/containers.png
318                  link https://linuxcontainers.org "Website"
319                  style {
320                      color: orange-800
321                  }
322              }
323  
324              freebsd-jails = component "FreeBSD Jails" {
325                  icon: https://www.ottmarklaas.net/2023/02/11/FreeBSD-jails-Another-Option-to-Encapsulate-a-Website-Development-Environment/freeBSDJail.jpeg
326                  link: https://docs.freebsd.org/en/books/handbook/jails/ "Docs"
327                  style {
328                      color: red-800
329                  }
330              }
331  
332  
333              docker = component "Docker" {
334                  icon: tech:docker
335                  link: https://docker.com "Website"
336                  style {
337                      color: blue-800
338                  }
339              }
340          }
341  
342          documentation = container {
343              title: "Technical Documentation"
344              icon: https://www.svgrepo.com/show/398268/scroll.svg
345              style {
346                  color: blue-500
347                  opacity: 40%
348              }
349  
350              diataxis-model = component {
351                  title: "Diátaxis Model"
352                  icon: https://diataxis.fr/_static/favicon.png
353                  link: https://diataxis.fr/
354                  style {
355                      color: amber
356                  }
357              }
358  
359              mermaid-js = component {
360                  title: "Mermaid.js"
361                  icon: https://avatars.githubusercontent.com/u/57169982?s=48&v=4
362                  link: https://mermaid.js.org/
363                  style {
364                      color: pink-500
365                  }
366              }
367  
368              c4-model = component {
369                  title: "C4 Model"
370                  icon: https://avatars.githubusercontent.com/u/7525795?s=200&v=4.svg
371                  link: https://c4model.com
372                  style {
373                      color: gray-500
374                  }
375              }
376          }
377  
378          microcontrollers = container "Microcontrollers" {
379              icon @/esp32s3-devkit-c-1-isometric.png
380  
381              style {
382                  color: red
383                  opacity: 40%
384              }
385  
386  
387              espressif = component "Espressif" {
388                  icon https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/espressif.svg
389                  link https://www.espressif.com "Website"
390                  style {
391                      color: red
392                  }
393  
394  
395                  esp-idf = component "ESP IDF" {
396                      icon https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/espressif.svg
397                      link https://idf.espresssif.com "Website"
398                      style {
399                          color: red
400                      }
401                  }
402  
403                  esp32-s3-devkit-c-1 = component "ESP32-S3-Devkit-C-1" {
404                      icon @/esp32s3-devkit-c-1-isometric.png
405                      link https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/index.html "Website"
406                      style {
407                          color: red
408                      }
409                  }
410  
411              }
412  
413              arduino = component "Arduino" {
414                  icon @/arduino-symbol.svg
415                  link https://www.arduino.cc "Website"
416                  style {
417                      color: sky
418                  }
419  
420                  uno-rev3 = component "Uno Rev3" {
421                      icon @/arduino-uno-rev3.jpg
422                      link https://store-usa.arduino.cc/products/arduino-uno-rev3?srsltid=AfmBOopp22rv2_bJbwQqVCBuK-3hQK0xiDhTMVaEHwqsIiYTXufI6REI "Website"
423                      style {
424                          color: sky
425                      }
426  
427                  }
428  
429                  mega-2560 = component "Mega 2560" {
430                      icon @/arduino-mega-2560-rev3.png
431                      link https://store-usa.arduino.cc/products/arduino-mega-2560-rev3?srsltid=AfmBOoqVJBY3RhGwfQzFEV5Q3fMWrLdAriqohhCFlcQPsq_i7IW9Aj9h "Website"
432                      style {
433                          color: sky
434                      }
435  
436                  }
437  
438                  giga-r1-wifi = component "Giga R1 Wifi" {
439                      icon @/arduino-giga-r1-wifi.png
440                      link https://store-usa.arduino.cc/products/giga-r1-wifi?srsltid=AfmBOoq5MEIshtbGu5rUpzyP2iBmWr6ot-ajqVWLZmoaGJqgedZk6S8d "Website"
441                      style {
442                          color: sky
443                      }
444                  }
445              }
446  
447              stmicroelectronics = component "STMicroelectronics" {
448                  icon @/stmicroelectronics-symbol.png
449                  link https://www.st.com/content/st_com/en.html "Website"
450                  style {
451                      color: yellow
452                  }
453  
454                  stm32f303vct6 = component "ST STM32F303VCT6" {
455                      icon @/stm32f303vct6-isometric.jpg
456                      link https://www.amazon.ca/dp/B00CWWSE6G?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_1 "Amazon"
457                      style {
458                          color: yellow
459                      }
460                  }
461  
462                  stm32cube = component "STM32 Cube" {
463                      icon @/stm32cube-symbol.svg
464                      link https://www.st.com/en/embedded-software/stm32cube-mcu-mpu-packages.html "Website"
465                      style {
466                          color: yellow
467                      }
468                  }
469              }
470  
471          }
472  
473          operating-systems = container "Operating Systems" {
474              style {
475                  color: purple-500
476                  opacity: 40%
477              }
478  
479              userspaces = container "Userspaces" {
480                  style {
481                      shape person
482                      color: green
483                      opacity: 40%
484                  }
485  
486                  ubuntu = container "Ubuntu" {
487                      link https://ubuntu.com "Website"
488                      icon tech:ubuntu
489                      style {
490                          color: slate-900
491                          opacity: 40%
492                      }
493                  }
494  
495                  guix = container "GNU GUIX" {
496                      link https://guix.gnu.org "Website"
497                      icon https://guix.gnu.org/themes/initial/img/icon.svg
498                      description: "NixOS alternative in Scheme from the GNU project, with a focus on libre software for academics."
499                      style {
500                          color: yellow
501                          opacity: 40%
502                      }
503                  }
504  
505                  nixos = container "NixOS" {
506                      link https://nixos.org "Website"
507                      icon https://raw.githubusercontent.com/NixOS/nixos-artwork/9d2cdedd73d64a068214482902adea3d02783ba8/logo/nix-snowflake-rainbow.svg
508                      style {
509                          color: blue-800
510                          opacity: 40%
511                      }
512  
513                      nix-darwin = component "Nix-Darwin" {
514                          description: """
515                              Declarative NixOS-like modules for MacOS.
516                              """
517                          icon https://avatars.githubusercontent.com/u/203339767?s=200&v=4
518                          link https://github.com/nix-darwin/nix-darwin "GitHub"
519                          style {
520                              color: pink-800
521                          }
522  
523                      }
524  
525                      nixos-raspberrypi = component "NixOS Raspberry Pi" {
526                          description: "Infrastructure, vendor packages, kernel, and some optimized third-party packages for NixOS running on Raspberry Pi devices."
527                          link https://github.com/nvmd/nixos-raspberrypi?tab=readme-ov-file "GitHub"
528                          icon tech:raspberrypi
529                          style {
530                              color: indigo
531                          }
532  
533                      }
534  
535                      nix-on-droid = component "Nix-on-Droid" {
536                          description: "NixOS for Android, based on Termux."
537                          link https://github.com/nix-community/nix-on-droid "GitHub"
538                          icon tech:android
539                          style {
540                              color: green
541                          }
542  
543                      }
544  
545                      nixos-wsl = component "NixOS WSL" {
546                          description: "Windows Subsystem for Linux distribution via systemd workarounds."
547                          link https://github.com/nix-community/NixOS-WSL "GitHub"
548                          icon https://raw.githubusercontent.com/nix-community/NixOS-WSL/refs/heads/main/assets/NixOS-WSL.svg
549                          style {
550                              color: purple-800
551                          }
552                      }
553  
554                  }
555  
556                  arch-linux = component "Arch Linux" {
557                      description: "Lightweight and flexible GNU/Linux distribution that tries to Keep It Simple."
558                      link https://archlinux.org "Website"
559                      icon tech:arch-linux
560                      style {
561                          color: red
562                      }
563                  }
564  
565                  athenaos = component "Athena OS" {
566                      description: "Batteries-supercharged multi distro system for cybersecurity power users."
567                      link https://athenaos.org "Website"
568                      icon https://athenaos.org/_astro/athena-dark.zw0VuR1C.svg
569                      style {
570                          color: amber
571                      }
572  
573                  }
574  
575                  freebsd = component "FreeBSD" {
576                      description: "UNIX-like operating system by the Berkeley Software Distribution, one of the only remaining open-source derivatives of AT&T's UNIX."
577                      link https://www.freebsd.org "Website"
578                      link https://docs.freebsd.org/en/articles/explaining-bsd/ "Explaining BSD Article"
579                      icon https://docs.freebsd.org/favicon.ico
580                      style {
581                          color: gray
582                      }
583  
584                  }
585  
586  
587                  -> kernels "run on"
588                  ubuntu -> kernels.linux
589                  arch-linux -> kernels.linux
590                  athenaos -> kernels.linux
591                  guix -> kernels.linux
592                  nixos -> kernels.linux
593                  freebsd -> kernels.unix
594  
595              }
596  
597              kernels = container "Kernels" {
598                  style {
599                      color: yellow
600                      opacity: 40%
601                  }
602  
603                  linux = container "Linux" {
604                      description: """
605  UNIX-like kernel developed by [Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds).
606  """
607  
608                      icon tech:linux
609  
610                      style {
611                          color: yellow
612                          opacity: 40%
613                      }
614                      filesystem-hierarchy-standard = container "Filesystem Hierarchy Standard (FHS)" {
615                          style {
616                              color: yellow
617                              opacity: 40%
618                          }
619  
620                          root = component "/" {
621                              description: "Root Directory"
622                              style {
623                                  color: yellow
624                              }
625                          }
626  
627                          bin = component "/bin" {
628                              description: """Essential command binaries needed in **single-user mode**, including to bring up the system or repair it, for all users (e.g., cat, ls, cp)."""
629                              style {
630                                  color: yellow
631                              }
632                          }
633  
634                          dev = component "/dev" {
635                              description: """Device files (e.g., `/dev/null`, `/dev/disk0`, `/dev/sda1`, `dev/tty`, `dev/random`)"""
636                              style {
637                                  color: yellow
638                              }
639                          }
640  
641                          etc = component "/etc" {
642                              description: "User home directories"
643                              style {
644                                  color: yellow
645                              }
646                          }
647  
648                          home = component "/home" {
649                              description: "User home directories"
650                              style {
651                                  color: yellow
652                              }
653                          }
654  
655                          lib = component "/lib" {
656                              description: "Shared libraries"
657                              style {
658                                  color: yellow
659                              }
660                          }
661                      }
662                  }
663  
664                  unix = container "UNIX" {
665  
666                      icon tech:unix
667  
668                      style {
669                          color: red
670                          opacity: 40%
671                      }
672                  }
673              }
674  
675          }
676  
677          //         nix -> devenv
678          // cplusplus -> platformio
679          // embedded-rust -> embassy
680          //                         go -> pulumi
681          //                    likec4 -> c4-model
682          //                    sql -> postgres
683          //                    sql -> sqlite
684  
685  
686          -> doombsd "generates"
687          -> apollyon-linux "generates"
688          -> openws "deploys"
689      }
690  }