- Nix 88.8%
- Tcl 4.5%
- Python 3.1%
- Shell 1.2%
- C 1.2%
- Other 1.2%
| extra | ||
| LICENSES | ||
| modules | ||
| nixpkgs | ||
| npins | ||
| overlays | ||
| pkgs | ||
| tests | ||
| utils | ||
| .gitignore | ||
| default.nix | ||
| flake.nix | ||
| README.md | ||
System Layer Abstraction Modules
https://worker.informatics.coop/slam
The System Layer Abstraction Modules (SLAM) are Nix expressions for composing operating systems. SLAM borrows code from NixOS and has some compatible options. It differs in an explicitly open design when interfacing with the system-layer, where system-layer is defined as the confluence of service-managers, messaging buses, configuration management, and monitoring. This scope of this project is limited to the functions necessary for initialising and managing the system-layer and anything that can be implemented as a modular service does not belong here. By this reasoning SLAM is not conceived as a Linux distribution or a community project but as a specialised layer function for building a Nix OS.
See the Synit wiki for more information.
Portability
SLAM supports NixOS modular-services which are sometimes referred to here as "portable-services".
A list of available services is provided at the wiki.
SLAM supports multiple primary service-managers and some of them may be used as secondary service-managers via modular services.
Modular service-managers are compatible with NixOS and available from the local overlay as pkgs.alt.slam.service-modules.
| s6 Host |
Synit Host |
Finix Host |
NixOS Host |
|
|---|---|---|---|---|
| Modular Services |
supported | supported | with extension |
supported |
| s6 Guest |
planned | supported | with extension |
supported |
| Synit Guest |
supported | supported | with extension |
supported |
| Finix or NixOS Guest |
nope | |||
Running a tertiary service-manager as a portable service in a portable service is not supported.
Installation and Booting
For build cache information see the Synit wiki article.
A system.build.toplevel attribute is provided within the option tree that roughly corresponds to NixOS and contains a bootspec file that is compatible with NixOS tooling.
A switch-to-configuration script is also provided. It supports the standard test, switch, and boot verbs with support for the Limine.
It has an additional kexec verb for booting into SLAM without modifying an existing bootloader.
The SLAM images repository contains recipes for building bootable images for various host platforms.
Overlays
SLAM necessarily modifies packages from Nixpkgs to remove lock-in dependencies on Systemd. These overlays may be useful independently from SLAM.
License
Some modules are available only under the terms of the Peer Production License. Modules not explicitly licensed are under the same terms as Nixpkgs.
The Peer Production License was selected for a few reasons:
- SLAM is not a charity for providing subsidised software to startups and monopolies. It is therefore neither Free or Open Source software.
- Worker owned coops share technology via horizontal transfer and not vertical acquisition.
- The PPL preserves SLAM as a research platform by protecting it from enterprise featuritis.
- Economic solutions solve social problems more effectively than technical solutions.
- Copyfarleft is the radical flank of copyleft.
Voluntary financial contributions are accepted: