nix-community/haumea

Filesystem-based module system for Nix [maintainer=@figsoda]

Nix

419

156 commits

updated Sep 8, 2026

See the code

README

Haumea

Filesystem-based module system for Nix

Haumea is not related to or a replacement for NixOS modules. It is closer to the module systems of traditional programming languages, with support for file hierarchy and visibility.

In short, haumea maps a directory of Nix files into an attribute set:

FromTo
├─ foo/
│  ├─ bar.nix
│  ├─ baz.nix
│  └─ __internal.nix
├─ bar.nix
└─ _utils/
   └─ foo.nix
{
  foo = {
    bar = <...>;
    baz = <...>;
  };
  bar = <...>;
}

Haumea's source code is hosted on GitHub under the MPL-2.0 license. Haumea bootstraps itself. You can see the entire implementation in the src directory.

Why Haumea?

  • No more manual imports

    Manually importing files can be tedious, especially when there are many of them. Haumea takes care of all of that by automatically importing the files into an attribute set.

  • Modules

    Haumea takes inspiration from traditional programming languages. Visibility makes it easy to create utility modules, and haumea makes self-referencing and creating fixed points a breeze with the introduction of self, super, and root.

  • Organized directory layout

    What you see is what you get. By default1, the file tree will look exactly like the resulting attribute set.

  • Extensibility

    Changing how the files are loaded is as easy as specifying a loader, and the transformer option makes it possible to extensively manipulate the tree.

➔ Getting Started

Footnotes

  1. Unless you are doing transformer magic

auto
flake
flakes
hierarchy
import
nix
visibility

Contributors

figsoda

105 commits

dependabot[bot]

44 commits

blaggacao

4 commits

wamserma

3 commits

nix-community/haumea

Filesystem-based module system for Nix [maintainer=@figsoda]

Nix

419

156 commits

updated Sep 8, 2026

See the code

README

Haumea

Filesystem-based module system for Nix

Haumea is not related to or a replacement for NixOS modules. It is closer to the module systems of traditional programming languages, with support for file hierarchy and visibility.

In short, haumea maps a directory of Nix files into an attribute set:

FromTo
├─ foo/
│  ├─ bar.nix
│  ├─ baz.nix
│  └─ __internal.nix
├─ bar.nix
└─ _utils/
   └─ foo.nix
{
  foo = {
    bar = <...>;
    baz = <...>;
  };
  bar = <...>;
}

Haumea's source code is hosted on GitHub under the MPL-2.0 license. Haumea bootstraps itself. You can see the entire implementation in the src directory.

Why Haumea?

  • No more manual imports

    Manually importing files can be tedious, especially when there are many of them. Haumea takes care of all of that by automatically importing the files into an attribute set.

  • Modules

    Haumea takes inspiration from traditional programming languages. Visibility makes it easy to create utility modules, and haumea makes self-referencing and creating fixed points a breeze with the introduction of self, super, and root.

  • Organized directory layout

    What you see is what you get. By default1, the file tree will look exactly like the resulting attribute set.

  • Extensibility

    Changing how the files are loaded is as easy as specifying a loader, and the transformer option makes it possible to extensively manipulate the tree.

➔ Getting Started

Footnotes

  1. Unless you are doing transformer magic

auto
flake
flakes
hierarchy
import
nix
visibility

Contributors

figsoda

105 commits

dependabot[bot]

44 commits

blaggacao

4 commits

wamserma

3 commits

Languages

Nix

100.0%