118bdf25a6
This makes the following work disabledModules = [ foo.nixosModules.bar ]; even if `bar` is not a path, but rather a module such as { key = "/path/to/foo#nixosModules.bar"; config = ...; } By supporting this, the user will often be able to use the same syntax for both importing and disabling a module. This is becoming more relevant because flakes promote the use of attributes to reference modules. Not all of these modules in flake attributes will be identifiable, but with the help of a framework such as flake-parts, these attributes can be guaranteed to be identifiable (by outPath + attribute path).
35 lines
603 B
Nix
35 lines
603 B
Nix
{ lib, ... }:
|
|
let
|
|
inherit (lib) mkOption types;
|
|
|
|
moduleWithKey = {
|
|
key = "disable-module-with-key.nix#moduleWithKey";
|
|
config = {
|
|
enable = true;
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
positive = mkOption {
|
|
type = types.submodule {
|
|
imports = [
|
|
./declare-enable.nix
|
|
moduleWithKey
|
|
];
|
|
};
|
|
default = {};
|
|
};
|
|
negative = mkOption {
|
|
type = types.submodule {
|
|
imports = [
|
|
./declare-enable.nix
|
|
moduleWithKey
|
|
];
|
|
disabledModules = [ moduleWithKey ];
|
|
};
|
|
default = {};
|
|
};
|
|
};
|
|
}
|