Skip to content

Confirm paths, and import depth #44

@bashfulrobot

Description

@bashfulrobot

Hi there, I think I have a misunderstanding on how Haumea works.

I have:

tree src/.
src/.
├── archetype
│   └── workstation.nix
├── modules
│   ├── betterbird.nix
│   └── firefox.nix
└── suites
    └── office.nix

flake.nix:

{
<snipped>

  inputs = {

    haumea = {
      url = "github:nix-community/haumea/v0.2.2";
      inputs.nixpkgs.follows = "nixpkgs";
    };
<snipped>

  };

  outputs = inputs@{ self, nixpkgs, home-manager, nixos-hardware, haumea, ... }:
    with inputs;
    let
      nixpkgsConfig = { overlays = [ ]; };
     
    in {

      lib = haumea.lib.load {
        src = ./src;
        inputs = { inherit (nixpkgs) lib; };
      };

      nixosConfigurations = {
      <snipped>
      };
    };
}

Then for the workstation.nix I have something like:

{ config, pkgs, lib, ... }:
let cfg = config.archetype.workstation;
in {
  config = lib.mkIf cfg.enable {

    suites = {
      office.enable = true;
    };

  };
}

and for office.nix I have:

{ config, pkgs, lib, ... }:
let cfg = config.suites.office;
in {
  config = lib.mkIf cfg.enable {

    programs = {
      firefox.enable = true;
      betterbird.enable = true;
    };

  };
}

and just as an example, for firefox.nix:

{ config, pkgs, lib, ... }:
let
    cfg = config.programs.firefox;
in
 {
  config = lib.mkIf cfg.enable {
    environment.systemPackages = with pkgs; [ firefox ];
  };
}

So my impression was that all of my files in my src folder would be imported.

And then by enabling the configs I had created using lib.mkIf I would be able to enable the configurations I wanted.

So my flow is essentially:

flake.nix --> imports all files in src --> workstation.nix --> office.nix --> firefox.nix

But when I rebuild I get:

error: The option `archetype' does not exist. Definition values:
       - In `/nix/store/i9czzb50vfnr1l1y7l6jzm89f8xiwnzp-source/systems/rembot/config':
           {
             workstation = true;
           }

Which makes me think the auto importing works different than I thought. Any tips? Is there another way I should be calling the options?

and with regards to the src file, how many folders deep will nix files be imported? Just one layer deep?
Thank you for your time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions