mirror of Team/StarlightOS at forge.starlightnet.work
Nix 100.0%
Shell 0.1%
39 1 0

Clone this repository

https://tangled.org/starlightnet.work/StarlightOS
git@knot.starlightnet.work:starlightnet.work/StarlightOS

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Starlight OS#

name, and the entire README for that matter, is temporary

An operating system based on nixOS aimed at reviving your old hardware as homeservers or Network-Attached-Storage (NAS), without locking you into one distribution.

What's different?#

Many distributions designed for this purpose are corporate-controlled and in a tight ecosystem. This makes it more difficult to migrate out of, difficult to peek inside of and understand the system. Additionally, it complicates porting new software, as it often requires writing platform-specific template and metadata files. Many of these projects also don't support ARM64 outside of Raspberry Pi images.

To solve all of the above, we are aiming to create one of these operating systems, except it leverages all the existing nixOS infrastructure, while also adding in some more modern tooling, and custom tooling of our own.

We will also allow configurations to be synced between devices by the use of git.

For managing nixOS generations, as well as the user's changes, we present upcoming changes in a "queue", showing all changes done since the last rebuild.

The mechanism for adding things to the nixOS configuration without manually writing it out into a file is still being investigated. We are leaning towards a CLI that takes expresions like services.sharkey.enable true that then spits out a services/sharkey/sharkey.nix with contents:

{
    services.sharkey = {
        enable = true;
    }
}

From there, changing any settings would be cli services.sharkey.port = 8080 which would edit the file such that it spits out:

{
    service.sharkey = {
        enable = true;
        port = 8080;
    }
}

NOTE: I have not actually checked those are valid settings, they are just an example.

Non-Commercial#

Unlike other projects, we are aiming to be non-commercial. The OS won't ever cost a dime, we won't add features that cost money to use nor will we paywall any existing features.

You are of course free to support us but this does not in any way alter the experience of using this OS.

Goals and non-goals#

We want to create something that has all the power of nix under the hood, while offering usability and user-friendliness akin to other projects in this space. At the same time, we want to leave the user with a fully working nixOS configuration that doesn't require our tooling to continue functioning.

We do not want to create a commercial product, and we do not aim to be the most comprehensive GUI tooling on earth either.

Opinionated#

We make some opinionated changes for the base operating system, like for example:

  • Fish as the default shell.
  • Make use of systemd heavily, basically as much as we can. We want a lot of this tooling to be centralized there, as to make it easier to work with.
  • Ship nixos-cli instead of the traditional nixos-install and co.

Project Status#

The project is currently in its early stages. We are figuring out the structure we want to use, writing a basic installation script, and planning how the CLI and GUI will work.

If you want to contribute, here are some things we are going to work on soon, that we would accept contributions on:

  • CLI (probably written in go)
  • flake structure for installed OS
    • i.e how we want to organize the flake into i.e hosts, services and so on.
  • Naming for this project (see issues tab)

License#

Our code is licensed under the Opinionated Queer License v1.3

This license only applies to our own code, not external dependencies. Check licenses accordingly.