misc: refactor helpers propagation

Co-authored-by: Robert Hensing <robert@roberthensing.nl>
This commit is contained in:
Gaetan Lepage 2024-02-07 16:50:08 +01:00 committed by Gaétan Lepage
parent 3bbb3d5453
commit 5d3ed3a09e
12 changed files with 100 additions and 40 deletions

View file

@ -1,5 +1,6 @@
{ {
rawModules, rawModules,
helpers,
pkgs, pkgs,
}: let }: let
pkgsDoc = pkgsDoc =
@ -73,7 +74,13 @@ in
options-json = options-json =
(pkgsDoc.nixosOptionsDoc (pkgsDoc.nixosOptionsDoc
{ {
inherit (lib.evalModules {modules = topLevelModules;}) options; inherit
(lib.evalModules {
modules = topLevelModules;
specialArgs.helpers = helpers;
})
options
;
inherit transformOptions; inherit transformOptions;
warningsAreErrors = false; warningsAreErrors = false;
}) })
@ -86,5 +93,6 @@ in
docs = pkgsDoc.callPackage ./mdbook { docs = pkgsDoc.callPackage ./mdbook {
inherit transformOptions; inherit transformOptions;
modules = topLevelModules; modules = topLevelModules;
inherit helpers;
}; };
} }

View file

@ -2,13 +2,14 @@
pkgs, pkgs,
lib, lib,
modules, modules,
helpers,
nixosOptionsDoc, nixosOptionsDoc,
transformOptions, transformOptions,
}: }:
with lib; let with lib; let
options = lib.evalModules { options = lib.evalModules {
inherit modules; inherit modules;
specialArgs = {inherit pkgs lib;}; specialArgs = {inherit pkgs lib helpers;};
}; };
mkMDDoc = options: mkMDDoc = options:

View file

@ -1,6 +1,7 @@
{inputs, ...}: { {inputs, ...}: {
imports = [ imports = [
./dev.nix ./dev.nix
./helpers.nix
./lib.nix ./lib.nix
./legacy-packages.nix ./legacy-packages.nix
./modules.nix ./modules.nix

15
flake-modules/helpers.nix Normal file
View file

@ -0,0 +1,15 @@
{getHelpers, ...}: {
_module.args.getHelpers = pkgs:
import ../lib/helpers.nix {
inherit pkgs;
inherit (pkgs) lib;
};
perSystem = {
pkgs,
config,
...
}: {
_module.args.helpers = getHelpers pkgs;
};
}

View file

@ -10,7 +10,6 @@
_module.args = { _module.args = {
pkgs = pkgs.lib.mkForce pkgs; pkgs = pkgs.lib.mkForce pkgs;
inherit (pkgs) lib; inherit (pkgs) lib;
helpers = import ../lib/helpers.nix {inherit (pkgs) lib;};
}; };
}; };
}; };

View file

@ -3,10 +3,11 @@
pkgs, pkgs,
config, config,
rawModules, rawModules,
helpers,
... ...
}: { }: {
packages = import ../docs { packages = import ../docs {
inherit rawModules pkgs; inherit rawModules pkgs helpers;
}; };
# Test that all packages build fine when running `nix flake check`. # Test that all packages build fine when running `nix flake check`.

View file

@ -1,12 +1,14 @@
{ {
inputs, inputs,
modules, modules,
getHelpers,
self, self,
... ...
}: let }: let
wrapperArgs = { wrapperArgs = {
inherit modules; inherit modules;
inherit self; inherit self;
inherit getHelpers;
}; };
in { in {
perSystem = { perSystem = {

View file

@ -1,4 +1,7 @@
modules: { {
modules,
helpers,
}: {
lib, lib,
pkgs, pkgs,
config, config,
@ -20,7 +23,7 @@ in {
check = builtins.isAttrs; check = builtins.isAttrs;
}; };
description = "Use this option to access the helpers"; description = "Use this option to access the helpers";
default = import ../plugins/helpers.nix {inherit (pkgs) lib;}; default = helpers;
}; };
configFiles = let configFiles = let

View file

@ -1,6 +1,7 @@
{ {
modules, modules,
self, self,
getHelpers,
}: { }: {
pkgs, pkgs,
config, config,
@ -8,19 +9,25 @@
... ...
} @ args: let } @ args: let
inherit (lib) mkEnableOption mkOption mkOptionType mkForce mkMerge mkIf types; inherit (lib) mkEnableOption mkOption mkOptionType mkForce mkMerge mkIf types;
shared = import ./_shared.nix modules args; helpers = getHelpers pkgs;
shared = import ./_shared.nix {inherit modules helpers;} args;
cfg = config.programs.nixvim; cfg = config.programs.nixvim;
in { in {
options = { options = {
programs.nixvim = mkOption { programs.nixvim = mkOption {
default = {}; default = {};
type = types.submodule ([ type = types.submoduleWith {
{ shorthandOnlyDefinesConfig = true;
options.enable = mkEnableOption "nixvim"; specialArgs.helpers = helpers;
config.wrapRc = mkForce true; modules =
} [
] {
++ shared.topLevelModules); options.enable = mkEnableOption "nixvim";
config.wrapRc = mkForce true;
}
]
++ shared.topLevelModules;
};
}; };
nixvim.helpers = shared.helpers; nixvim.helpers = shared.helpers;
}; };

View file

@ -1,6 +1,7 @@
{ {
modules, modules,
self, self,
getHelpers,
}: { }: {
pkgs, pkgs,
config, config,
@ -8,7 +9,8 @@
... ...
} @ args: let } @ args: let
inherit (lib) mkEnableOption mkOption mkOptionType mkMerge mkIf types; inherit (lib) mkEnableOption mkOption mkOptionType mkMerge mkIf types;
shared = import ./_shared.nix modules args; helpers = getHelpers pkgs;
shared = import ./_shared.nix {inherit modules helpers;} args;
cfg = config.programs.nixvim; cfg = config.programs.nixvim;
files = files =
shared.configFiles shared.configFiles
@ -19,15 +21,20 @@ in {
options = { options = {
programs.nixvim = mkOption { programs.nixvim = mkOption {
default = {}; default = {};
type = types.submodule ([ type = types.submoduleWith {
{ shorthandOnlyDefinesConfig = true;
options = { specialArgs.helpers = helpers;
enable = mkEnableOption "nixvim"; modules =
defaultEditor = mkEnableOption "nixvim as the default editor"; [
}; {
} options = {
] enable = mkEnableOption "nixvim";
++ shared.topLevelModules); defaultEditor = mkEnableOption "nixvim as the default editor";
};
}
]
++ shared.topLevelModules;
};
}; };
nixvim.helpers = shared.helpers; nixvim.helpers = shared.helpers;
}; };

View file

@ -1,6 +1,7 @@
{ {
modules, modules,
self, self,
getHelpers,
}: { }: {
pkgs, pkgs,
config, config,
@ -8,7 +9,8 @@
... ...
} @ args: let } @ args: let
inherit (lib) mkEnableOption mkOption mkOptionType mkForce mkMerge mkIf types; inherit (lib) mkEnableOption mkOption mkOptionType mkForce mkMerge mkIf types;
shared = import ./_shared.nix modules args; helpers = getHelpers pkgs;
shared = import ./_shared.nix {inherit modules helpers;} args;
cfg = config.programs.nixvim; cfg = config.programs.nixvim;
files = files =
shared.configFiles shared.configFiles
@ -19,16 +21,21 @@ in {
options = { options = {
programs.nixvim = mkOption { programs.nixvim = mkOption {
default = {}; default = {};
type = types.submodule ([ type = types.submoduleWith {
{ shorthandOnlyDefinesConfig = true;
options = { specialArgs.helpers = helpers;
enable = mkEnableOption "nixvim"; modules =
defaultEditor = mkEnableOption "nixvim as the default editor"; [
}; {
config.wrapRc = mkForce true; options = {
} enable = mkEnableOption "nixvim";
] defaultEditor = mkEnableOption "nixvim as the default editor";
++ shared.topLevelModules); };
config.wrapRc = mkForce true;
}
]
++ shared.topLevelModules;
};
}; };
nixvim.helpers = shared.helpers; nixvim.helpers = shared.helpers;
}; };

View file

@ -1,6 +1,7 @@
default_pkgs: { default_pkgs: {
modules, modules,
self, self,
getHelpers,
}: { }: {
pkgs ? default_pkgs, pkgs ? default_pkgs,
extraSpecialArgs ? {}, extraSpecialArgs ? {},
@ -8,16 +9,24 @@ default_pkgs: {
}: let }: let
inherit (pkgs) lib; inherit (pkgs) lib;
wrap = {wrapRc = true;}; helpers = getHelpers pkgs;
shared = import ./_shared.nix {inherit modules helpers;} {
shared = import ./_shared.nix modules {
inherit pkgs lib; inherit pkgs lib;
config = {}; config = {};
}; };
eval = lib.evalModules { eval = lib.evalModules {
modules = [module wrap] ++ shared.topLevelModules; modules =
specialArgs = extraSpecialArgs; [
module
{wrapRc = true;}
]
++ shared.topLevelModules;
specialArgs =
{
inherit helpers;
}
// extraSpecialArgs;
}; };
handleAssertions = config: let handleAssertions = config: let