wrappers/standalone: make pkgs arg optional, allow specifying system

This commit is contained in:
Matt Sturgeon 2024-12-23 14:44:23 +00:00
parent 8c6f9ed8c4
commit 9bf4c9d55b
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
4 changed files with 44 additions and 17 deletions

View file

@ -1,10 +1,18 @@
{ inputs, self, ... }: {
inputs,
self,
lib,
...
}:
{ {
perSystem = perSystem =
{ system, pkgs, ... }: { system, pkgs, ... }:
{ {
_module.args = { _module.args = {
makeNixvimWithModule = import ../wrappers/standalone.nix pkgs self; makeNixvimWithModule = import ../wrappers/standalone.nix {
inherit lib self;
defaultSystem = system;
};
}; };
checks = checks =

View file

@ -30,7 +30,8 @@ let
mkTestDerivationFromNixvimModule = mkTestDerivationFromNixvimModule =
{ {
name ? null, name ? null,
pkgs ? defaultPkgs, pkgs ? null,
system ? defaultPkgs.stdenv.hostPlatform.system,
module, module,
extraSpecialArgs ? { }, extraSpecialArgs ? { },
}: }:
@ -42,14 +43,18 @@ let
_nixvimTests = true; _nixvimTests = true;
}; };
systemMod =
if pkgs == null then
{ nixpkgs.hostPlatform = lib.mkDefault { inherit system; }; }
else
{ nixpkgs.pkgs = lib.mkDefault pkgs; };
result = helpers.modules.evalNixvim { result = helpers.modules.evalNixvim {
modules = [ modules = [
module module
(lib.optionalAttrs (name != null) { test.name = name; }) (lib.optionalAttrs (name != null) { test.name = name; })
{ wrapRc = true; } { wrapRc = true; }
# TODO: Only do this when `args?pkgs` systemMod
# Consider deprecating the `pkgs` arg too...
{ nixpkgs.pkgs = lib.mkDefault pkgs; }
]; ];
inherit extraSpecialArgs; inherit extraSpecialArgs;
}; };

View file

@ -18,12 +18,12 @@
]; ];
perSystem = perSystem =
{ pkgs, system, ... }: { system, ... }:
let let
nixvimLib = nixvim.lib.${system}; nixvimLib = nixvim.lib.${system};
nixvim' = nixvim.legacyPackages.${system}; nixvim' = nixvim.legacyPackages.${system};
nixvimModule = { nixvimModule = {
inherit pkgs; inherit system; # or alternatively, set `pkgs`
module = import ./config; # import the module directly module = import ./config; # import the module directly
# You can use `extraSpecialArgs` to pass additional arguments to your module files # You can use `extraSpecialArgs` to pass additional arguments to your module files
extraSpecialArgs = { extraSpecialArgs = {

View file

@ -1,8 +1,13 @@
default_pkgs: self: {
self,
lib,
defaultSystem,
}:
{ {
# TODO: Deprecate this arg in favour of using module options # TODO: Deprecate this arg in favour of using module options
pkgs ? default_pkgs, pkgs ? null,
lib ? pkgs.lib, # NOTE: `defaultSystem` is the only reason this function can't go in `<nixvim>.lib`
system ? defaultSystem,
extraSpecialArgs ? { }, extraSpecialArgs ? { },
_nixvimTests ? false, _nixvimTests ? false,
module, module,
@ -12,23 +17,32 @@ let
helpers = self.lib.nixvim.override { inherit _nixvimTests; }; helpers = self.lib.nixvim.override { inherit _nixvimTests; };
inherit (helpers.modules) evalNixvim; inherit (helpers.modules) evalNixvim;
systemMod =
if pkgs == null then
{
_file = ./standalone.nix;
nixpkgs.hostPlatform = lib.mkDefault { inherit system; };
}
else
{
_file = ./standalone.nix;
nixpkgs.pkgs = lib.mkDefault pkgs;
};
mkNvim = mkNvim =
mod: mod:
let let
nixvimConfig = evalNixvim { nixvimConfig = evalNixvim {
modules = [ modules = [
mod mod
# TODO: only include this when `args?pkgs`: systemMod
{
_file = ./standalone.nix;
nixpkgs.pkgs = lib.mkDefault pkgs;
}
]; ];
inherit extraSpecialArgs; inherit extraSpecialArgs;
}; };
inherit (nixvimConfig.config) enableMan build; inherit (nixvimConfig.config) enableMan build;
inherit (nixvimConfig._module.args.pkgs) symlinkJoin;
in in
(pkgs.symlinkJoin { (symlinkJoin {
name = "nixvim"; name = "nixvim";
paths = [ paths = [
build.package build.package