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.
Hi there, I think I have a misunderstanding on how Haumea works.
I have:
flake.nix:
Then for the workstation.nix I have something like:
and for office.nix I have:
and just as an example, for firefox.nix:
So my impression was that all of my files in my
srcfolder would be imported.And then by enabling the configs I had created using
lib.mkIfI 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.nixBut when I rebuild I get:
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
srcfile, how many folders deep will nix files be imported? Just one layer deep?Thank you for your time.