You are browsing as a guest. Sign up (or log in) to start making projects!

damiii

@damiii

Joined June 6th, 2026

  • 5Devlogs
  • 1Projects
  • 0Ships
  • 0Votes
Open comments for this post

1h 21m 15s logged

Devlog 5 - Documentation part 2: Getting started guide

Added a getting started guide alongside a template configuration to start using Micros. The getting started guide goes over all options in the default template configuration, their purpose, and how to modify them for your own use cases. This guide can be seen at https://micros.snugnug.org/getting-started.html.

Image: A screenshot of the getting started guide.

Devlog 5 - Documentation part 2: Getting started guide

Added a getting started guide alongside a template configuration to start using Micros. The getting started guide goes over all options in the default template configuration, their purpose, and how to modify them for your own use cases. This guide can be seen at https://micros.snugnug.org/getting-started.html.

Image: A screenshot of the getting started guide.

Replying to @damiii

0
1
Open comments for this post

1h 39m 6s logged

Devlog 4 - Documentation Part 1

Added the basic structure for documentation, including auto-generated documentation for nix options. I used NDG to generate documentation, which automatically pulls from nix modules to create auto-generated documentation, and can be extended with markdown files for extra documentation. I also setup github actions to build and host the documentation with github pages, which is hosted at https://micros.snugnug.org. I’ve also added files and folders for user documentation, developer documentation, and a getting started guide. The next devlog will focus of filling out these documents with useful information.

Image: The options page of the documentation.

Devlog 4 - Documentation Part 1

Added the basic structure for documentation, including auto-generated documentation for nix options. I used NDG to generate documentation, which automatically pulls from nix modules to create auto-generated documentation, and can be extended with markdown files for extra documentation. I also setup github actions to build and host the documentation with github pages, which is hosted at https://micros.snugnug.org. I’ve also added files and folders for user documentation, developer documentation, and a getting started guide. The next devlog will focus of filling out these documents with useful information.

Image: The options page of the documentation.

Replying to @damiii

0
2
Open comments for this post

3h 46m 9s logged

Devlog 3 - Logging and Logins

Added (or fixed) another 2 very important parts of a distro, the ability to save and read logs, and the ability to securely log into your system. The former was done using sysklogd, a syslog daemon, paired with a logger binary which forwards stdout to syslog. This proved to be quite difficult, mainly due to none of the syslog daemons I tested wanting to create or properly use the /dev/log file. In my struggles, I ended up patching some other hanging issues with module loading.

PAM took several hours of my life in the past few days, with cryptic or no errors reported and the internet being mostly useless on the vague “Authentication failed” error I was hitting. Turns out, I was missing the SUID bit on one of the executables. That took me way too long to find, so I decided to not reinvent the wheel and take the security wrapper code from NixOS (which is probably the safer option, I’m sure there are way less security risks there than there are if I did it myself).

Image: successful logging (cat /var/log/syslog) and logging in with a non-root user.
I can already see the tech debt from this codebase growing, I really need to clean it up, but that’ll be for my next devlog, along with (hopefully) some more inits supported.

Devlog 3 - Logging and Logins

Added (or fixed) another 2 very important parts of a distro, the ability to save and read logs, and the ability to securely log into your system. The former was done using sysklogd, a syslog daemon, paired with a logger binary which forwards stdout to syslog. This proved to be quite difficult, mainly due to none of the syslog daemons I tested wanting to create or properly use the /dev/log file. In my struggles, I ended up patching some other hanging issues with module loading.

PAM took several hours of my life in the past few days, with cryptic or no errors reported and the internet being mostly useless on the vague “Authentication failed” error I was hitting. Turns out, I was missing the SUID bit on one of the executables. That took me way too long to find, so I decided to not reinvent the wheel and take the security wrapper code from NixOS (which is probably the safer option, I’m sure there are way less security risks there than there are if I did it myself).

Image: successful logging (cat /var/log/syslog) and logging in with a non-root user.
I can already see the tech debt from this codebase growing, I really need to clean it up, but that’ll be for my next devlog, along with (hopefully) some more inits supported.

Replying to @damiii

0
3
Open comments for this post

2h 37m 37s logged

Devlog 2 - DAGs and dependency management

Added arguably the most important part of any service manager, dependencies. Now, when a service depends on another service, it ensures that service is running before continuing. To do this (even though runit does not natively support dependencies), I used DAGs (directed acyclic graphs) to create a dependency tree which errors if there are loops or cycles. This allows the ordering of startup services, which are started in order by the service manager. As a bonus, I factored out some hardcoded services which handle networking and time syncing, so they can be used with any init system. This proved to be harder than anticipated, mostly due to how poorly the original service manager code was written, and most of it had to be refactored, but services are now working flawlessly.

Image: an example dependency tree for a lightweight system. Arrows point in order of startup, and the service manager is started on boot.

Devlog 2 - DAGs and dependency management

Added arguably the most important part of any service manager, dependencies. Now, when a service depends on another service, it ensures that service is running before continuing. To do this (even though runit does not natively support dependencies), I used DAGs (directed acyclic graphs) to create a dependency tree which errors if there are loops or cycles. This allows the ordering of startup services, which are started in order by the service manager. As a bonus, I factored out some hardcoded services which handle networking and time syncing, so they can be used with any init system. This proved to be harder than anticipated, mostly due to how poorly the original service manager code was written, and most of it had to be refactored, but services are now working flawlessly.

Image: an example dependency tree for a lightweight system. Arrows point in order of startup, and the service manager is started on boot.

Replying to @damiii

0
2
Open comments for this post

55m 51s logged

Devlog 1 - Fixing error checking

In the attempts to expand the services backend and reduce hardcoding, I discovered a slight issue. Error checking was in fact not checking anything. After reading through docs and NixOS source code for the better part of an hour, I missed one line. Alas, enabling error checking also made me discover 10 errors I somehow missed (and which the project worked without fixing? very confusing).
Image: all of the errors that were not getting caught

Devlog 1 - Fixing error checking

In the attempts to expand the services backend and reduce hardcoding, I discovered a slight issue. Error checking was in fact not checking anything. After reading through docs and NixOS source code for the better part of an hour, I missed one line. Alas, enabling error checking also made me discover 10 errors I somehow missed (and which the project worked without fixing? very confusing).
Image: all of the errors that were not getting caught

Replying to @damiii

0
5

Followers

Loading…