• Nix 88.8%
  • Tcl 4.6%
  • Python 3.1%
  • Shell 1.2%
  • C 1.2%
  • Other 1.1%
Find a file
2026-04-02 13:00:00 +01:00
docs sources: migrate to npins from lon 2026-02-21 00:00:00 +00:00
extra treewide: format with "official" nixpkgs formatter 2025-11-10 09:42:28 -05:00
LICENSES Unlicense packages and overlays 2026-03-11 00:00:00 +00:00
modules modules/service: move logging FDs of s6-rc modular services 2026-04-02 13:00:00 +01:00
nixpkgs SAM overlay update 2025-12-21 12:00:00 +00:00
npins Update sampkgs pin 2026-03-21 12:00:00 +00:00
overlays Remove an unused overlay 2026-04-02 13:00:00 +01:00
pkgs Remove an unused overlay 2026-04-02 13:00:00 +01:00
tests modules/nix-actor: move out to modular service 2026-04-02 13:00:00 +01:00
utils Move /pkgs/make-*fs to /utils 2025-12-17 00:00:00 +00:00
.gitignore Repo metadata 2025-11-17 00:00:00 +00:00
default.nix Remove an unused overlay 2026-04-02 13:00:00 +01:00
flake.nix Remove an unused overlay 2026-04-02 13:00:00 +01:00
README.md Move modular service managers into the overlay 2026-03-24 12:00:00 +00:00

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.

service-manager composability matrix
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:

Monero
8A2BFXaAgFrhJBxQKBaEVz6tp5FMAwNGAfKjmjG76KHa8PXN7YAW8m7ZhcGeGP1Pnf1unDwtkWzYtWQpwXaz74ZnCpXnGMy