alexandria/content/Hacks/liminalOS-docs.md

118 lines
3.7 KiB
Markdown
Raw Normal View History

---
id: liminalOS-docs
aliases: []
tags:
- nixos
- nixpkgs
- liminalos
- linux
title: Documentation for liminalOS system distribution
---
This is documentation for the [liminalOS system
distribution](https://github.com/youwen5/liminalOS), a Linux distribution built
on [NixOS](https://nixos.org).
The goal of liminalOS is to provide an opinionated desktop environment and
system for those too lazy to spend 100 hours ricing their NixOS system.
To that end, a NixOS module and home manager module are provided such that it
is possible to configure an entire operating system powered by a riced out
desktop environment built on Hyprland in a few lines. These modules come with
2025-01-02 03:22:04 -08:00
verified versions of all of the other flake input modules that compose
liminalOS, so that you don't have to manage and version Home Manager, `stylix`,
`agenix`, etc yourself.
Central to this system is the `liminalOS` option that is added to both home
manager and NixOS. It is designed to be used alongside a very minimal NixOS and
2025-01-02 03:22:04 -08:00
Home Manager configuration to define the entire liminalOS system.
You only need to set up basic things like a minimal `flake.nix`,
`configuration.nix`, and `home.nix`, where you need only set up a basic user
(in both NixOS and HM) and boot loader configuration. The rest of the higher
level system features will be handled by the `liminalOS` abstraction.
Something like this is sufficient to bootstrap a liminalOS system. It can be
dropped into any existing NixOS system and be used alongside an existing
configuration.
```nix
# file: configuration.nix
{
liminalOS = {
config.allowUnfree = true;
defaultEditor = pkgs.helix;
formFactor = "desktop";
theming = {
# place your desired wallpaper in your configuration repo and watch your
# system theme itself
wallpaper = ./wallpaper.jpg;
};
system.graphics.nvidia.enable = true;
extras.gaming.enable = true;
};
# Set up a user
users.users.default-user = {
isNormalUser = true;
description = "Default liminalOS user!";
extraGroups = [
"networkmanager"
"wheel"
];
shell = pkgs.fish;
};
home-manager.users.default-user = {
# in this simple example, the content of ./home.nix is an import of the
# liminalOS home manager module
imports = [ ./home.nix ];
};
home-manager.extraSpecialArgs = { inherit inputs; };
# Set your time zone
time.timeZone = "America/Los_Angeles";
# Bootloader and kernel.
boot = {
loader = {
efi.canTouchEfiVariables = true;
timeout = 15;
systemd-boot = {
enable = true;
};
};
};
}
```
2025-01-02 03:24:54 -08:00
The recommended way to start using liminalOS is to first install NixOS and then
install liminalOS over it. It is trivially possible in theory to generate
liminalOS installer ISOs but this has not yet been developed. Hackers welcome
to try!
You can generate a basic set of NixOS configuration files that deploy liminalOS
using:
```bash
nix flake init -t github:youwen5/liminalOS
```
Make sure you read the comments and edit the desired options before
2025-01-02 03:29:19 -08:00
`nixos-rebuild`!
> [!IMPORTANT]
> You should at the very least set the hostname, username of your account, and
> most importantly include the `hardware-configuration.nix` file generated at
> `/etc/nixos` in the same directory as `configuration.nix`! If you don't have
> this file anymore, run `nixos-generate-config` to recreate it at
> `/etc/nixos`.
2025-01-02 03:24:54 -08:00
## Full liminalOS module options
These are all of the available options set by `liminalOS`, automatically
generated from liminalOS' modules. Keep in mind that many of these are enabled
automatically when `liminalOS.enable` is set to true, but they are still
available for fine-grained customization.
2025-01-02 03:24:54 -08:00