Skip to content

Commit

Permalink
misc: refactor helpers propagation
Browse files Browse the repository at this point in the history
Co-authored-by: Robert Hensing <robert@roberthensing.nl>
  • Loading branch information
GaetanLepage and roberth committed Feb 9, 2024
1 parent 3bbb3d5 commit 5d3ed3a
Show file tree
Hide file tree
Showing 12 changed files with 100 additions and 40 deletions.
10 changes: 9 additions & 1 deletion docs/default.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
rawModules,
helpers,
pkgs,
}: let
pkgsDoc =
Expand Down Expand Up @@ -73,7 +74,13 @@ in
options-json =
(pkgsDoc.nixosOptionsDoc
{
inherit (lib.evalModules {modules = topLevelModules;}) options;
inherit
(lib.evalModules {
modules = topLevelModules;
specialArgs.helpers = helpers;
})
options
;
inherit transformOptions;
warningsAreErrors = false;
})
Expand All @@ -86,5 +93,6 @@ in
docs = pkgsDoc.callPackage ./mdbook {
inherit transformOptions;
modules = topLevelModules;
inherit helpers;
};
}
3 changes: 2 additions & 1 deletion docs/mdbook/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
pkgs,
lib,
modules,
helpers,
nixosOptionsDoc,
transformOptions,
}:
with lib; let
options = lib.evalModules {
inherit modules;
specialArgs = {inherit pkgs lib;};
specialArgs = {inherit pkgs lib helpers;};
};

mkMDDoc = options:
Expand Down
1 change: 1 addition & 0 deletions flake-modules/default.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{inputs, ...}: {
imports = [
./dev.nix
./helpers.nix
./lib.nix
./legacy-packages.nix
./modules.nix
Expand Down
15 changes: 15 additions & 0 deletions flake-modules/helpers.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}
1 change: 0 additions & 1 deletion flake-modules/modules.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
_module.args = {
pkgs = pkgs.lib.mkForce pkgs;
inherit (pkgs) lib;
helpers = import ../lib/helpers.nix {inherit (pkgs) lib;};
};
};
};
Expand Down
3 changes: 2 additions & 1 deletion flake-modules/packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
pkgs,
config,
rawModules,
helpers,
...
}: {
packages = import ../docs {
inherit rawModules pkgs;
inherit rawModules pkgs helpers;
};

# Test that all packages build fine when running `nix flake check`.
Expand Down
2 changes: 2 additions & 0 deletions flake-modules/wrappers.nix
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{
inputs,
modules,
getHelpers,
self,
...
}: let
wrapperArgs = {
inherit modules;
inherit self;
inherit getHelpers;
};
in {
perSystem = {
Expand Down
7 changes: 5 additions & 2 deletions wrappers/_shared.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
modules: {
{
modules,
helpers,
}: {
lib,
pkgs,
config,
Expand All @@ -20,7 +23,7 @@ in {
check = builtins.isAttrs;
};
description = "Use this option to access the helpers";
default = import ../plugins/helpers.nix {inherit (pkgs) lib;};
default = helpers;
};

configFiles = let
Expand Down
23 changes: 15 additions & 8 deletions wrappers/darwin.nix
Original file line number Diff line number Diff line change
@@ -1,26 +1,33 @@
{
modules,
self,
getHelpers,
}: {
pkgs,
config,
lib,
...
} @ args: let
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;
in {
options = {
programs.nixvim = mkOption {
default = {};
type = types.submodule ([
{
options.enable = mkEnableOption "nixvim";
config.wrapRc = mkForce true;
}
]
++ shared.topLevelModules);
type = types.submoduleWith {
shorthandOnlyDefinesConfig = true;
specialArgs.helpers = helpers;
modules =
[
{
options.enable = mkEnableOption "nixvim";
config.wrapRc = mkForce true;
}
]
++ shared.topLevelModules;
};
};
nixvim.helpers = shared.helpers;
};
Expand Down
27 changes: 17 additions & 10 deletions wrappers/hm.nix
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
{
modules,
self,
getHelpers,
}: {
pkgs,
config,
lib,
...
} @ args: let
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;
files =
shared.configFiles
Expand All @@ -19,15 +21,20 @@ in {
options = {
programs.nixvim = mkOption {
default = {};
type = types.submodule ([
{
options = {
enable = mkEnableOption "nixvim";
defaultEditor = mkEnableOption "nixvim as the default editor";
};
}
]
++ shared.topLevelModules);
type = types.submoduleWith {
shorthandOnlyDefinesConfig = true;
specialArgs.helpers = helpers;
modules =
[
{
options = {
enable = mkEnableOption "nixvim";
defaultEditor = mkEnableOption "nixvim as the default editor";
};
}
]
++ shared.topLevelModules;
};
};
nixvim.helpers = shared.helpers;
};
Expand Down
29 changes: 18 additions & 11 deletions wrappers/nixos.nix
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
{
modules,
self,
getHelpers,
}: {
pkgs,
config,
lib,
...
} @ args: let
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;
files =
shared.configFiles
Expand All @@ -19,16 +21,21 @@ in {
options = {
programs.nixvim = mkOption {
default = {};
type = types.submodule ([
{
options = {
enable = mkEnableOption "nixvim";
defaultEditor = mkEnableOption "nixvim as the default editor";
};
config.wrapRc = mkForce true;
}
]
++ shared.topLevelModules);
type = types.submoduleWith {
shorthandOnlyDefinesConfig = true;
specialArgs.helpers = helpers;
modules =
[
{
options = {
enable = mkEnableOption "nixvim";
defaultEditor = mkEnableOption "nixvim as the default editor";
};
config.wrapRc = mkForce true;
}
]
++ shared.topLevelModules;
};
};
nixvim.helpers = shared.helpers;
};
Expand Down
19 changes: 14 additions & 5 deletions wrappers/standalone.nix
Original file line number Diff line number Diff line change
@@ -1,23 +1,32 @@
default_pkgs: {
modules,
self,
getHelpers,
}: {
pkgs ? default_pkgs,
extraSpecialArgs ? {},
module,
}: let
inherit (pkgs) lib;

wrap = {wrapRc = true;};

shared = import ./_shared.nix modules {
helpers = getHelpers pkgs;
shared = import ./_shared.nix {inherit modules helpers;} {
inherit pkgs lib;
config = {};
};

eval = lib.evalModules {
modules = [module wrap] ++ shared.topLevelModules;
specialArgs = extraSpecialArgs;
modules =
[
module
{wrapRc = true;}
]
++ shared.topLevelModules;
specialArgs =
{
inherit helpers;
}
// extraSpecialArgs;
};

handleAssertions = config: let
Expand Down

0 comments on commit 5d3ed3a

Please sign in to comment.