mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
This (internal) option introduces IFD, and can be substituted internally with the `initPath` option easily. If the content is required somewhere users can use readFile on the initPath, though it will result in an IFD in their project.
62 lines
1.3 KiB
Nix
62 lines
1.3 KiB
Nix
{ self, getHelpers }:
|
|
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}@args:
|
|
let
|
|
inherit (lib)
|
|
mkEnableOption
|
|
mkOption
|
|
mkOptionType
|
|
mkForce
|
|
mkMerge
|
|
mkIf
|
|
types
|
|
;
|
|
helpers = getHelpers pkgs false;
|
|
shared = import ./_shared.nix helpers args;
|
|
cfg = config.programs.nixvim;
|
|
files = shared.configFiles // {
|
|
"nvim/sysinit.lua".source = cfg.initPath;
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
programs.nixvim = mkOption {
|
|
default = { };
|
|
type = types.submoduleWith {
|
|
shorthandOnlyDefinesConfig = true;
|
|
specialArgs = {
|
|
nixosConfig = config;
|
|
defaultPkgs = pkgs;
|
|
inherit helpers;
|
|
};
|
|
modules = [
|
|
./modules/nixos.nix
|
|
../modules/top-level
|
|
];
|
|
};
|
|
};
|
|
nixvim.helpers = shared.helpers;
|
|
};
|
|
|
|
config = mkIf cfg.enable (mkMerge [
|
|
{
|
|
environment.systemPackages = [
|
|
cfg.finalPackage
|
|
cfg.printInitPackage
|
|
] ++ (lib.optional cfg.enableMan self.packages.${pkgs.stdenv.hostPlatform.system}.man-docs);
|
|
}
|
|
(mkIf (!cfg.wrapRc) {
|
|
environment.etc = files;
|
|
environment.variables."VIM" = "/etc/nvim";
|
|
})
|
|
{
|
|
inherit (cfg) warnings assertions;
|
|
programs.neovim.defaultEditor = cfg.defaultEditor;
|
|
environment.variables.EDITOR = mkIf cfg.defaultEditor (lib.mkOverride 900 "nvim");
|
|
}
|
|
]);
|
|
}
|