diff --git a/lib/build-clan/default.nix b/lib/build-clan/default.nix index ed7057e57..ca9ae4572 100644 --- a/lib/build-clan/default.nix +++ b/lib/build-clan/default.nix @@ -11,7 +11,6 @@ directory, # The directory containing the machines subdirectory # allows to include machine-specific modules i.e. machines.${name} = { ... } # A map from arch to pkgs, if specified this nixpkgs will be only imported once for each system. # This improves performance, but all nipxkgs.* options will be ignored. - # deadnix: skip inventory ? { }, ## Sepcial inputs (not passed to the module system as config) specialArgs ? { }, # Extra arguments to pass to nixosSystem i.e. useful to make self available # A set containing clan meta: name :: string, icon :: string, description :: string @@ -28,9 +27,14 @@ let ; self = directory; }; - rest = builtins.removeAttrs attrs [ "specialArgs" ]; + meta = attrs.meta or { }; + rest = builtins.removeAttrs attrs [ + "meta" + "specialArgs" + ]; in eval { + inventory.meta = lib.mapAttrs (_: lib.mkDefault) meta; imports = [ rest # implementation diff --git a/lib/build-clan/interface.nix b/lib/build-clan/interface.nix index 2e11b531e..275aa1664 100644 --- a/lib/build-clan/interface.nix +++ b/lib/build-clan/interface.nix @@ -1,4 +1,4 @@ -{ lib, self, ... }: +{ lib, ... }: let types = lib.types; in @@ -7,7 +7,6 @@ in # Required options directory = lib.mkOption { type = types.path; - default = self; description = "The directory containing the clan subdirectory"; }; @@ -27,18 +26,22 @@ in }; # Meta - meta = lib.mkOption { - type = types.nullOr ( - types.submodule { - options = { - name = lib.mkOption { - type = types.nullOr types.str; - description = "Needs to be (globally) unique, as this determines the folder name where the flake gets downloaded to."; - }; - }; - } - ); - default = null; + meta = { + name = lib.mkOption { + type = types.nullOr types.str; + default = null; + description = "Needs to be (globally) unique, as this determines the folder name where the flake gets downloaded to."; + }; + icon = lib.mkOption { + type = types.nullOr types.path; + default = null; + description = "A path to an icon to be used for the clan in the GUI"; + }; + description = lib.mkOption { + type = types.nullOr types.str; + default = null; + description = "A short description of the clan"; + }; }; pkgsForSystem = lib.mkOption { diff --git a/lib/build-clan/module.nix b/lib/build-clan/module.nix index 390625248..a523e5542 100644 --- a/lib/build-clan/module.nix +++ b/lib/build-clan/module.nix @@ -201,8 +201,6 @@ in imports = [ # Merge the inventory file { inventory = inventoryLoaded; } - # Merge the meta attributes from the buildClan function - { inventory.meta = if config.meta != null then config.meta else { }; } ]; inherit nixosConfigurations; diff --git a/lib/build-clan/tests.nix b/lib/build-clan/tests.nix index eb0250051..b231cdfdf 100644 --- a/lib/build-clan/tests.nix +++ b/lib/build-clan/tests.nix @@ -15,13 +15,10 @@ in { test_only_required = let - config = evalClan { - meta.name = "test"; - imports = [ ./module.nix ]; - }; + config = evalClan { directory = ./.; }; in { - expr = config.inventory ? meta; + expr = config.pkgsForSystem null == null; expected = true; }; @@ -96,9 +93,10 @@ in in { expr = result.clanInternals.meta; - expectedError = { - type = "ThrownError"; - msg = ""; + expected = { + description = "description"; + icon = "icon"; + name = "superclan"; }; };