alexandria/content/Hacks/liminalOS-docs.md
Youwen Wu de2419bcc9
Some checks are pending
Deploy Quartz site to GitHub Pages using Nix / build (push) Waiting to run
Deploy Quartz site to GitHub Pages using Nix / deploy (push) Blocked by required conditions
chore: ocd tweaks
2025-01-02 03:22:04 -08:00

94 lines
2.9 KiB
Markdown

---
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
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
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;
};
};
};
}
```
## 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.