mirror of
https://github.com/nix-community/nixvim.git
synced 2025-12-11 19:41:11 +01:00
Expose the platform wrapper modules as the Nixvim configuration options `build.nixosModule`, `build.homeModule`, and `build.nixDarwinModule`. This makes it possible to reuse a single Nixvim configuration across NixOS, Home Manager, and nix-darwin without re-importing modules into `programs.nixvim` manually. Evaluating these wrapper modules requires a "bare" Nixvim configuration; one that does not define `pkgs` or `nixpkgs.hostPlatform`. Such a configuration would normally fail to evaluate, but disabling `_module.check` provides a sufficiently lazy evaluation to access the wrapper options. To prevent the `_module.check = false` module from leaking into user configs, it has a unique module key and gets disabled inside the wrapper modules (`wrappers/_shared.nix`).
40 lines
556 B
Nix
40 lines
556 B
Nix
{
|
|
self,
|
|
extendModules,
|
|
}:
|
|
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib)
|
|
mkIf
|
|
;
|
|
inherit (lib.modules)
|
|
importApply
|
|
;
|
|
cfg = config.programs.nixvim;
|
|
in
|
|
{
|
|
_file = ./darwin.nix;
|
|
|
|
imports = [
|
|
(importApply ./_shared.nix {
|
|
inherit self;
|
|
inherit
|
|
(extendModules {
|
|
specialArgs.darwinConfig = config;
|
|
modules = [ ./modules/darwin.nix ];
|
|
})
|
|
extendModules
|
|
;
|
|
})
|
|
];
|
|
|
|
config = mkIf cfg.enable {
|
|
environment.systemPackages = [
|
|
cfg.build.package
|
|
];
|
|
};
|
|
}
|