- Nix 88.8%
- Tcl 4.6%
- Python 3.1%
- Shell 1.2%
- C 1.2%
- Other 1.1%
| docs | ||
| extra | ||
| LICENSES | ||
| modules | ||
| nixpkgs | ||
| npins | ||
| overlays | ||
| pkgs | ||
| tests | ||
| utils | ||
| .gitignore | ||
| default.nix | ||
| flake.nix | ||
| README.md | ||
System Layer Abstraction Modules
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.
SLAM is a derivative of finix which is upstream in regards to support for the finit supervisor.
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.
| finit Host |
s6 Host |
Synit Host |
NixOS Host |
|
|---|---|---|---|---|
| Finit Guest |
unknown | unknown | unknown | unknown |
| s6 Guest |
unknown | planned | supported | supported |
| Synit Guest |
unknown | supported | supported | supported |
| NixOS Guest |
nope | nope | nope | nope |
| Abstract Services |
supported | supported | supported | supported |
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.
Timeline
- 2003 Nix project started by Eelco Dolstra.
- 2006-01-18 The Purely Functional Software Deployment Model published by Eelco Dolstra.
- 2006-08-24 NixOS: the Nix based operating system published by Armijn Hemel. Uses System V init.
- 2006-11-19 NixOS migrates to Upstart.
- 2012-04-18 Guix first commit from Ludovic Courtès.
- 2013-01-21 NixOS migrates to systemd.
- 2016-06-03 not-os first commit from Michael Bishop.
- 2017-11-03 vpsadminos forked from not-os by Richard Marko.
- 2018-05-13 NixWRT announced by Daniel Barlow.
- 2019-07-30 Sigil first commit.
- 2020-01-28 nix-processmgmt framework first commit from Sander van der Burg.
- 2021-03-13 NixOS Init Freedom first commit from Guido Witmond.
- 2021-03-23 NixNG first commit from Richard Brežák.
- 2021-08-18 Spectrum first commit from Alyssa Ross.
- 2022-01-17 ZilchOS first commit from Alexander Sosedkin.
- 2022-09-19 Liminix first commit from Daniel Barlow.
- 2023-10-05 Portable Service Layer RFC submitted by Sander van der Burg.
- 2023-12-24 NixBSD first commit from Audrey Dutcher.
- 2024-12-28 SixOS first demo commit from Adam Joseph.
- 2025-01-08 Modular Services PR submitted by Robert Hensing.
- 2025-03-29 Finix first commit from Aaron Andersen.
- 2025-11-11 SLAM forked from Finix.
Before attempting to create something new, it is vital to have a good appreciation of everything that already exists in this field. - M.T. Kalashnikov
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: