mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-11-08 22:45:30 +00:00
{lib,flake}: convert to fixed-point and modify flake for compat
This commit is contained in:
parent
3e48f13c3c
commit
1627e4dddc
18 changed files with 68 additions and 83 deletions
25
flake.nix
25
flake.nix
|
|
@ -4,16 +4,8 @@
|
||||||
flake-parts,
|
flake-parts,
|
||||||
self,
|
self,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs:
|
||||||
# Call the extended library with `inputs`.
|
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||||
# inputs is used to get the original standard library, and to pass inputs
|
|
||||||
# to the plugin autodiscovery function
|
|
||||||
lib = import ./lib/stdlib-extended.nix {inherit inputs self;};
|
|
||||||
in
|
|
||||||
flake-parts.lib.mkFlake {
|
|
||||||
inherit inputs;
|
|
||||||
specialArgs = {inherit lib;};
|
|
||||||
} {
|
|
||||||
# Allow users to bring their own systems.
|
# Allow users to bring their own systems.
|
||||||
# «https://github.com/nix-systems/nix-systems»
|
# «https://github.com/nix-systems/nix-systems»
|
||||||
systems = import inputs.systems;
|
systems = import inputs.systems;
|
||||||
|
|
@ -24,16 +16,19 @@
|
||||||
./flake/develop.nix
|
./flake/develop.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
flake = {
|
flake = {lib, ...}: let
|
||||||
|
# inputs is passed for the plugin autodiscovery function
|
||||||
|
nvf-lib = lib.fixedPoints.makeExtensible (import ./lib {inherit inputs self;});
|
||||||
|
in {
|
||||||
lib = {
|
lib = {
|
||||||
inherit (lib) nvim;
|
nvim = nvf-lib;
|
||||||
inherit (lib.nvim) neovimConfiguration;
|
inherit (nvf-lib) neovimConfiguration;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit (lib.importJSON ./npins/sources.json) pins;
|
inherit (lib.importJSON ./npins/sources.json) pins;
|
||||||
|
|
||||||
homeManagerModules = {
|
homeManagerModules = {
|
||||||
nvf = import ./flake/modules/home-manager.nix {inherit lib inputs;};
|
nvf = import ./flake/modules/home-manager.nix {inherit inputs;};
|
||||||
default = self.homeManagerModules.nvf;
|
default = self.homeManagerModules.nvf;
|
||||||
neovim-flake =
|
neovim-flake =
|
||||||
lib.warn ''
|
lib.warn ''
|
||||||
|
|
@ -44,7 +39,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosModules = {
|
nixosModules = {
|
||||||
nvf = import ./flake/modules/nixos.nix {inherit lib inputs;};
|
nvf = import ./flake/modules/nixos.nix {inherit inputs;};
|
||||||
default = self.nixosModules.nvf;
|
default = self.nixosModules.nvf;
|
||||||
neovim-flake =
|
neovim-flake =
|
||||||
lib.warn ''
|
lib.warn ''
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib, ...}: {
|
{self, ...}: {
|
||||||
perSystem = {
|
perSystem = {
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
packages.dev = let
|
packages.dev = let
|
||||||
configuration = {};
|
configuration = {};
|
||||||
|
|
||||||
customNeovim = lib.nvim.neovimConfiguration {
|
customNeovim = self.lib.nvim.neovimConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
modules = [configuration];
|
modules = [configuration];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
# Home Manager module
|
# Home Manager module
|
||||||
{
|
{inputs}: {
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
}: {
|
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
# NixOS module
|
# NixOS module
|
||||||
{
|
{inputs}: {
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
}: {
|
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
_: let
|
||||||
inherit (builtins) listToAttrs;
|
inherit (builtins) listToAttrs;
|
||||||
in {
|
in {
|
||||||
mapListToAttrs = f: list: listToAttrs (map f list);
|
mapListToAttrs = f: list: listToAttrs (map f list);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.modules) mkIf mkDefault;
|
inherit (lib.modules) mkIf mkDefault;
|
||||||
inherit (lib.types) nullOr str;
|
inherit (lib.types) nullOr str;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.types) bool;
|
inherit (lib.types) bool;
|
||||||
inherit (lib.modules) mkRenamedOptionModule;
|
inherit (lib.modules) mkRenamedOptionModule;
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,15 @@
|
||||||
#
|
#
|
||||||
# - the addition of the function `entryBefore` indicating a "wanted
|
# - the addition of the function `entryBefore` indicating a "wanted
|
||||||
# by" relationship.
|
# by" relationship.
|
||||||
{lib}: let
|
{
|
||||||
|
lib,
|
||||||
|
nvf-lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (builtins) isAttrs attrValues attrNames elem all head tail length toJSON isString removeAttrs;
|
inherit (builtins) isAttrs attrValues attrNames elem all head tail length toJSON isString removeAttrs;
|
||||||
inherit (lib.attrsets) filterAttrs mapAttrs;
|
inherit (lib.attrsets) filterAttrs mapAttrs;
|
||||||
inherit (lib.lists) toposort;
|
inherit (lib.lists) toposort;
|
||||||
inherit (lib.nvim.dag) empty isEntry entryBetween entryAfter entriesBetween entryAnywhere topoSort;
|
inherit (nvf-lib.dag) empty isEntry entryBetween entryAfter entriesBetween entryAnywhere topoSort;
|
||||||
in {
|
in {
|
||||||
empty = {};
|
empty = {};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,22 @@
|
||||||
{
|
{
|
||||||
self,
|
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
self,
|
||||||
...
|
}: final: let
|
||||||
}: {
|
# Modeled after nixpkgs' lib.
|
||||||
types = import ./types {inherit lib self;};
|
callLibs = file:
|
||||||
config = import ./config.nix {inherit lib;};
|
import file {
|
||||||
binds = import ./binds.nix {inherit lib;};
|
nvf-lib = final;
|
||||||
dag = import ./dag.nix {inherit lib;};
|
inherit inputs self;
|
||||||
languages = import ./languages.nix {inherit lib;};
|
inherit (inputs.nixpkgs) lib;
|
||||||
lists = import ./lists.nix {inherit lib;};
|
};
|
||||||
attrsets = import ./attrsets.nix {inherit lib;};
|
in {
|
||||||
lua = import ./lua.nix {inherit lib;};
|
types = callLibs ./types;
|
||||||
neovimConfiguration = import ../modules {inherit self inputs lib;};
|
config = callLibs ./config.nix;
|
||||||
|
binds = callLibs ./binds.nix;
|
||||||
|
dag = callLibs ./dag.nix;
|
||||||
|
languages = callLibs ./languages.nix;
|
||||||
|
lists = callLibs ./lists.nix;
|
||||||
|
attrsets = callLibs ./attrsets.nix;
|
||||||
|
lua = callLibs ./lua.nix;
|
||||||
|
neovimConfiguration = callLibs ../modules;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
{lib}: let
|
{
|
||||||
|
lib,
|
||||||
|
nvf-lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
inherit (builtins) isString getAttr;
|
inherit (builtins) isString getAttr;
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr uniq;
|
inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr uniq;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (nvf-lib.attrsets) mapListToAttrs;
|
||||||
inherit (lib.nvim.types) luaInline;
|
inherit (nvf-lib.types) luaInline;
|
||||||
in {
|
in {
|
||||||
# TODO: remove
|
# TODO: remove
|
||||||
diagnosticsToLua = {
|
diagnosticsToLua = {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
inherit (lib.lists) elem all;
|
inherit (lib.lists) elem all;
|
||||||
in {
|
in {
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# Helpers for converting values to lua
|
# Helpers for converting values to lua
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
isLuaInline = object: (object._type or null) == "lua-inline";
|
isLuaInline = object: (object._type or null) == "lua-inline";
|
||||||
|
|
||||||
toLuaObject = args:
|
toLuaObject = args:
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# Convenience function that returns the given Nixpkgs standard library
|
|
||||||
# extended with our functions using `lib.extend`.
|
|
||||||
{inputs, ...} @ args:
|
|
||||||
inputs.nixpkgs.lib.extend (self: super: {
|
|
||||||
# WARNING: New functions should not be added here, but to files
|
|
||||||
# imported by `./default.nix` under their own categories. If your
|
|
||||||
# function does not fit to any of the existing categories, create
|
|
||||||
# a new file and import it in `./default.nix.`
|
|
||||||
|
|
||||||
# Makes our custom functions available under `lib.nvim` where stdlib-extended.nix is imported
|
|
||||||
# with the appropriate arguments. For end-users, a `lib` output will be accessible from the flake.
|
|
||||||
# E.g. for an input called `nvf`, `inputs.nvf.lib.nvim` will return the set
|
|
||||||
# below.
|
|
||||||
nvim = import ./. {
|
|
||||||
inherit (args) inputs self;
|
|
||||||
lib = self;
|
|
||||||
};
|
|
||||||
|
|
||||||
# For forward compatibility.
|
|
||||||
literalExpression = super.literalExpression or super.literalExample;
|
|
||||||
})
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mergeEqualOption;
|
inherit (lib.options) mergeEqualOption;
|
||||||
inherit (lib.lists) singleton;
|
inherit (lib.lists) singleton;
|
||||||
inherit (lib.strings) isString stringLength match;
|
inherit (lib.strings) isString stringLength match;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# From home-manager: https://github.com/nix-community/home-manager/blob/master/modules/lib/types-dag.nix
|
# From home-manager: https://github.com/nix-community/home-manager/blob/master/modules/lib/types-dag.nix
|
||||||
# Used for ordering configuration text.
|
# Used for ordering configuration text.
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
|
# TODO: inherit from subgroups
|
||||||
inherit
|
inherit
|
||||||
(lib)
|
(lib)
|
||||||
defaultFunctor
|
defaultFunctor
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,8 @@
|
||||||
{
|
args: let
|
||||||
lib,
|
typesDag = import ./dag.nix args;
|
||||||
self,
|
typesPlugin = import ./plugins.nix args;
|
||||||
}: let
|
typesLanguage = import ./languages.nix args;
|
||||||
typesDag = import ./dag.nix {inherit lib;};
|
customTypes = import ./custom.nix args;
|
||||||
typesPlugin = import ./plugins.nix {inherit lib self;};
|
|
||||||
typesLanguage = import ./languages.nix {inherit lib;};
|
|
||||||
customTypes = import ./custom.nix {inherit lib;};
|
|
||||||
in {
|
in {
|
||||||
inherit (typesDag) dagOf;
|
inherit (typesDag) dagOf;
|
||||||
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
|
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkOption mkPackageOption;
|
inherit (lib.options) mkOption mkPackageOption;
|
||||||
inherit (lib.attrsets) attrNames;
|
inherit (lib.attrsets) attrNames;
|
||||||
inherit (lib.types) listOf either enum submodule package;
|
inherit (lib.types) listOf either enum submodule package;
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
|
nvf-lib,
|
||||||
self,
|
self,
|
||||||
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) mkOption;
|
inherit (lib.options) mkOption;
|
||||||
inherit (lib.attrsets) attrNames mapAttrs' filterAttrs nameValuePair;
|
inherit (lib.attrsets) attrNames mapAttrs' filterAttrs nameValuePair;
|
||||||
inherit (lib.strings) hasPrefix removePrefix;
|
inherit (lib.strings) hasPrefix removePrefix;
|
||||||
inherit (lib.types) submodule either package enum str lines anything listOf nullOr;
|
inherit (lib.types) submodule either package enum str lines anything listOf nullOr mkOptionType;
|
||||||
|
inherit (nvf-lib.lua) isLuaInline;
|
||||||
|
|
||||||
# Get the names of all flake inputs that start with the given prefix.
|
# Get the names of all flake inputs that start with the given prefix.
|
||||||
fromInputs = {
|
fromInputs = {
|
||||||
|
|
@ -64,9 +67,9 @@ in {
|
||||||
type = pluginsType;
|
type = pluginsType;
|
||||||
};
|
};
|
||||||
|
|
||||||
luaInline = lib.mkOptionType {
|
luaInline = mkOptionType {
|
||||||
name = "luaInline";
|
name = "luaInline";
|
||||||
check = x: lib.nvim.lua.isLuaInline x;
|
check = x: isLuaInline x;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue