A highly experimental NixOS based Linux® distribution. https://os.functor.systems
Find a file
2025-11-01 15:31:20 -07:00
.github/workflows treewide: run nix fmt 2025-10-12 13:01:15 -07:00
docs fix: use config._module.check instead of doCheck 2025-10-23 22:33:41 -07:00
hm feat: use functor.systems identity repository instead of vendored assets 2025-10-12 13:27:01 -07:00
lib refactor: replace most occurrences of liminalOS with functorOS 2025-08-28 12:26:58 -07:00
modules fix: deprecations and changed names 2025-11-01 15:31:20 -07:00
overlays fix: deprecations and changed names 2025-11-01 15:31:20 -07:00
pkgs feat: use functor.systems identity repository instead of vendored assets 2025-10-12 13:27:01 -07:00
templates/minimal docs: add more comments to template 2025-09-01 02:44:03 -07:00
.gitignore chore: add .aider to gitignore 2025-09-06 11:20:40 -07:00
.prettierrc.toml docs(readme): formatting and some more content 2024-08-11 15:05:42 -07:00
default.nix feat: pass functorOS inputs to hm and nixos modules 2025-09-28 15:53:34 -07:00
flake.lock flake.lock: Update 2025-10-31 21:12:19 -07:00
flake.nix chore: anticipate next nixos-unstable bump 2025-10-23 23:14:34 -07:00
LICENSE feat: successfully compile on callisto (asahi aarch64) 2024-08-07 05:57:55 -07:00
README.md treewide: run nix fmt 2025-10-12 13:01:15 -07:00
treefmt.nix feat: add treefmt 2025-10-12 13:01:15 -07:00

functorOS

A highly experimental NixOS-based Linux distribution, descended from liminalOS.

Currently under heavy development and not suitable for daily use. Please see the project wiki for more details.

See os.functor.systems for module options.

Try it

functorOS is ready for power users to test drive. You first need to install NixOS on your desired machine. To install functorOS, run the following command and look inside flake.nix, containing a minimal self-documenting configuration for functorOS.

nix flake init -t "git+https://code.functor.systems/functor.systems/functorOS"

Technical overview

flowchart TB
    subgraph Core
        NixOS[NixOS Base System]
        SysCore["System Core"]:::core
        BuildTools["System Building Tools"]:::core
    end

    subgraph PlatformModules
        direction TB
        Linux["Linux Modules"]:::linux

        subgraph LinuxComponents
            direction TB
            Audio["Audio System"]:::linux
            Gaming["Gaming Support"]:::linux
            Graphics["Graphics System"]:::linux
            Network["Networking"]:::linux
            Theme["Theming System"]:::linux
        end
    end

    subgraph HomeManager
        direction TB
        HMCore["Home Manager Core"]:::hm
        Desktop["Desktop Environment"]:::hm
        Shell["Shell Environment"]:::hm
        Platform["Platform-Specific Tweaks"]:::hm
    end

    subgraph ConfigLayer
        direction TB
        HostConfig["Host Configurations"]:::config
        UserConfig["User Configurations"]:::config
        Secrets["Secrets Management"]:::security
        Pkgs["Package Management"]:::pkg
    end

    %% Relationships
    NixOS --> SysCore
    SysCore --> Linux
    BuildTools --> HostConfig

    Linux --> LinuxComponents
    Linux --> Desktop

    HMCore --> Shell
    HMCore --> Platform
    HMCore --> Desktop

    HostConfig --> UserConfig
    UserConfig --> Secrets
    Pkgs --> HostConfig

    %% Click Events
    click SysCore "https://github.com/youwen5/liminalos/tree/main/modules/linux/core/"
    click BuildTools "https://github.com/youwen5/liminalos/blob/main/lib/buildLiminalOS.nix"
    click Linux "https://github.com/youwen5/liminalos/tree/main/modules/linux/"
    click Audio "https://github.com/youwen5/liminalos/tree/main/modules/linux/audio/"
    click Gaming "https://github.com/youwen5/liminalos/tree/main/modules/linux/gaming/"
    click Graphics "https://github.com/youwen5/liminalos/tree/main/modules/linux/graphics/"
    click Network "https://github.com/youwen5/liminalos/tree/main/modules/linux/networking/"
    click Theme "https://github.com/youwen5/liminalos/tree/main/modules/linux/stylix/"
    click HMCore "https://github.com/youwen5/liminalos/tree/main/hm/modules/common/"
    click Desktop "https://github.com/youwen5/liminalos/tree/main/hm/modules/linux/desktop-environment/"
    click Shell "https://github.com/youwen5/liminalos/tree/main/hm/modules/common/shellenv/"
    click Platform "https://github.com/youwen5/liminalos/tree/main/hm/modules/linux/platform-tweaks/"
    click HostConfig "https://github.com/youwen5/liminalos/tree/main/reference/hosts/"
    click UserConfig "https://github.com/youwen5/liminalos/tree/main/reference/users/"
    click Secrets "https://github.com/youwen5/liminalos/tree/main/reference/secrets/"
    click Pkgs "https://github.com/youwen5/liminalos/tree/main/pkgs/"

    %% Styling
    classDef core fill:#2196F3,stroke:#1565C0,color:white
    classDef linux fill:#4CAF50,stroke:#2E7D32,color:white
    classDef hm fill:#FF9800,stroke:#EF6C00,color:white
    classDef config fill:#795548,stroke:#4E342E,color:white
    classDef security fill:#F44336,stroke:#C62828,color:white
    classDef pkg fill:#607D8B,stroke:#37474F,color:white

Reference implementations

  • Minimal template --- see Try it.
  • @youwen --- shezhi. An advanced functorOS deployment featuring multiple hosts, additional flake inputs, custom configurations, and secret management.