--- 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.