Projects
The list below contains projects I am working/have worked on. Currently my main focus is Guix/QubesOS integration. I am also learning how to write papers, which will be posted on this site but in a different section.
¶ Guix/QubesOS Integration
The goal is to enhance both Guix and QubesOS by taking the strengths of each.
Guix provides a declarative interface to system configuration which makes it easy to separate system artifacts from user data in a concise format (declaration files) and/or a convenient one (tarball of the store) and supports atomic changes that are trivial to traverse. Guix also enforces precise dependency tracking and outputs artifacts into an isolated segment of the filesystem means that deployment on top of pre-existing distributions (fedora, debian, etc) will require less overhead. The source-based package definitions make it easier to create auditable packages. The minimalist "base" distribution makes it easier to create specialized VMs without bloat. Once constraints are implemented, it will be easier to mix-and-match configurations for VMs that serve a specific purpose (sys-net, sys-usb, VPN qubes, etc) with configurations that are tailored to a specific context (a user's preferences, corporate requirements, etc).
QubesOS provides a Xen-first operating system, notably including an ergonomic desktop environment. This serves the primary purpose of security and/or privacy through compartmentalization, whose benefits should not be understated. It also provides other benefits. The ability to quickly create and tear down VMs is useful in development workflows. The fact that Xen is a robust microkernel opens new possibilities for software architectures that are practically infeasible with non-virtualized systems.
Related repositories:
Guix on QubesOS Channel Repository
- Package and service definitions for a Guix system running in a qube.
Minimalist Guile bindings to the QubesDB library
¶ Website
The thing you're reading right now. =) I maintain it because it feels bad to keep the things I'm working on locked away. Hopefully someone finds the materials here interesting and/or useful.
¶ REPL User Interface
This is a first step towards a thing I've been thinking about for a long time but can't describe very well right now. The current title, "REPL User Interface" understates the scope. The paper I'm currently learning how to right is a more thorough examination of how different languages (from C to Shell) handle function arguments. This repository will get updated and/or moved once that paper is complete.
REPL User Interface Repository
¶ KMSCON Fork
I am using this fork of kmscon until QubesOS' GUI client is available in Guix. The change is to allow the user to specify desired screen dimensions in command-line arguments. I'm happy for other people to use this code, but neither the upstream project nor the fork I forked this from is actively maintained.