modules: refactor module bootstrapping

Let's simplify things by defining all modules in `./plugins`, `./modules`
and `./wrappers/modules`.

Instead of currying `pkgs` into a bootstrapping module, we can require
`defaultPkgs` be provided as a special arg.

This refactor allows us to completely remove `flake-modules/modules.nix`!
This commit is contained in:
Matt Sturgeon 2024-07-02 13:30:29 +01:00
parent 3d96960348
commit d2afb176ff
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
16 changed files with 129 additions and 159 deletions

View file

@ -1,26 +1,15 @@
{ modules, helpers }:
{
lib,
pkgs,
config,
...
}:
helpers:
{ lib, config, ... }:
let
inherit (lib)
mkEnableOption
mkOption
mkOptionType
mkForce
mkMerge
mkIf
types
;
inherit (lib) mkOption mkOptionType;
cfg = config.programs.nixvim;
in
{
topLevelModules = [
../modules
./modules/output.nix
(import ./modules/files.nix (modules pkgs))
] ++ (modules pkgs);
./modules/files.nix
];
helpers = mkOption {
type = mkOptionType {
@ -33,9 +22,6 @@ in
};
configFiles =
let
cfg = config.programs.nixvim;
in
(lib.mapAttrs' (_: file: lib.nameValuePair "nvim/${file.path}" { text = file.content; }) cfg.files)
// (lib.mapAttrs' (
path: content: lib.nameValuePair "nvim/${path}" { text = content; }

View file

@ -1,8 +1,4 @@
{
modules,
self,
getHelpers,
}:
{ self, getHelpers }:
{
pkgs,
config,
@ -20,7 +16,7 @@ let
types
;
helpers = getHelpers pkgs false;
shared = import ./_shared.nix { inherit modules helpers; } args;
shared = import ./_shared.nix helpers args;
cfg = config.programs.nixvim;
in
{
@ -31,6 +27,7 @@ in
shorthandOnlyDefinesConfig = true;
specialArgs = {
darwinConfig = config;
defaultPkgs = pkgs;
inherit helpers;
};
modules = [ ./modules/darwin.nix ] ++ shared.topLevelModules;

View file

@ -1,8 +1,4 @@
{
modules,
self,
getHelpers,
}:
{ self, getHelpers }:
{
pkgs,
config,
@ -19,7 +15,7 @@ let
types
;
helpers = getHelpers pkgs false;
shared = import ./_shared.nix { inherit modules helpers; } args;
shared = import ./_shared.nix helpers args;
cfg = config.programs.nixvim;
files = shared.configFiles // {
"nvim/init.lua".text = cfg.initContent;
@ -33,6 +29,7 @@ in
shorthandOnlyDefinesConfig = true;
specialArgs = {
hmConfig = config;
defaultPkgs = pkgs;
inherit helpers;
};
modules = [ ./modules/hm.nix ] ++ shared.topLevelModules;

View file

@ -1,4 +1,3 @@
modules:
{
pkgs,
config,
@ -10,12 +9,15 @@ let
inherit (lib) types;
fileModuleType = types.submoduleWith {
shorthandOnlyDefinesConfig = true;
specialArgs.helpers = helpers;
specialArgs = {
inherit helpers;
defaultPkgs = pkgs;
};
modules = [
(
{ name, config, ... }:
{
imports = modules;
imports = [ ../../modules ];
options.plugin = lib.mkOption {
type = types.package;
description = "A derivation with the content of the file in it";

View file

@ -1,8 +1,4 @@
{
modules,
self,
getHelpers,
}:
{ self, getHelpers }:
{
pkgs,
config,
@ -20,7 +16,7 @@ let
types
;
helpers = getHelpers pkgs false;
shared = import ./_shared.nix { inherit modules helpers; } args;
shared = import ./_shared.nix helpers args;
cfg = config.programs.nixvim;
files = shared.configFiles // {
"nvim/sysinit.lua".text = cfg.initContent;
@ -34,6 +30,7 @@ in
shorthandOnlyDefinesConfig = true;
specialArgs = {
nixosConfig = config;
defaultPkgs = pkgs;
inherit helpers;
};
modules = [ ./modules/nixos.nix ] ++ shared.topLevelModules;

View file

@ -1,9 +1,5 @@
default_pkgs:
{
modules,
self,
getHelpers,
}:
{ self, getHelpers }:
{
pkgs ? default_pkgs,
extraSpecialArgs ? { },
@ -14,23 +10,11 @@ let
inherit (pkgs) lib;
helpers = getHelpers pkgs _nixvimTests;
shared = import ./_shared.nix { inherit modules helpers; } {
shared = import ./_shared.nix helpers {
inherit pkgs lib;
config = { };
};
mkEval =
mod:
lib.evalModules {
modules = [
mod
{ wrapRc = true; }
] ++ shared.topLevelModules;
specialArgs = {
inherit helpers;
} // extraSpecialArgs;
};
handleAssertions =
config:
let
@ -44,7 +28,16 @@ let
mkNvim =
mod:
let
evaledModule = mkEval mod;
evaledModule = lib.evalModules {
modules = [
mod
{ wrapRc = true; }
] ++ shared.topLevelModules;
specialArgs = {
inherit helpers;
defaultPkgs = pkgs;
} // extraSpecialArgs;
};
config = handleAssertions evaledModule.config;
in
(pkgs.symlinkJoin {