mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-11-22 21:30:51 +00:00
lib: start moving top-level binds to binds
This commit is contained in:
parent
460ba8c7b6
commit
bf1118eb28
3 changed files with 74 additions and 2 deletions
70
lib/binds.nix
Normal file
70
lib/binds.nix
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
{lib}: let
|
||||||
|
inherit (lib.options) mkOption;
|
||||||
|
inherit (lib.modules) mkIf;
|
||||||
|
inherit (lib.types) nullOr str;
|
||||||
|
inherit (lib.attrsets) isAttrs mapAttrs;
|
||||||
|
|
||||||
|
binds = rec {
|
||||||
|
mkLuaBinding = key: action: desc:
|
||||||
|
mkIf (key != null) {
|
||||||
|
"${key}" = {
|
||||||
|
inherit action desc;
|
||||||
|
lua = true;
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkExprBinding = key: action: desc:
|
||||||
|
mkIf (key != null) {
|
||||||
|
"${key}" = {
|
||||||
|
inherit action desc;
|
||||||
|
lua = true;
|
||||||
|
silent = true;
|
||||||
|
expr = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkBinding = key: action: desc:
|
||||||
|
mkIf (key != null) {
|
||||||
|
"${key}" = {
|
||||||
|
inherit action desc;
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkMappingOption = description: default:
|
||||||
|
mkOption {
|
||||||
|
type = nullOr str;
|
||||||
|
inherit default description;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Utility function that takes two attrsets:
|
||||||
|
# { someKey = "some_value" } and
|
||||||
|
# { someKey = { description = "Some Description"; }; }
|
||||||
|
# and merges them into
|
||||||
|
# { someKey = { value = "some_value"; description = "Some Description"; }; }
|
||||||
|
addDescriptionsToMappings = actualMappings: mappingDefinitions:
|
||||||
|
mapAttrs (name: value: let
|
||||||
|
isNested = isAttrs value;
|
||||||
|
returnedValue =
|
||||||
|
if isNested
|
||||||
|
then addDescriptionsToMappings actualMappings."${name}" mappingDefinitions."${name}"
|
||||||
|
else {
|
||||||
|
inherit value;
|
||||||
|
inherit (mappingDefinitions."${name}") description;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
returnedValue)
|
||||||
|
actualMappings;
|
||||||
|
|
||||||
|
mkSetBinding = binding: action:
|
||||||
|
mkBinding binding.value action binding.description;
|
||||||
|
|
||||||
|
mkSetExprBinding = binding: action:
|
||||||
|
mkExprBinding binding.value action binding.description;
|
||||||
|
|
||||||
|
mkSetLuaBinding = binding: action:
|
||||||
|
mkLuaBinding binding.value action binding.description;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
binds
|
|
@ -1,6 +1,8 @@
|
||||||
{lib}: {
|
{lib}: {
|
||||||
dag = import ./dag.nix {inherit lib;};
|
|
||||||
types = import ./types {inherit lib;};
|
types = import ./types {inherit lib;};
|
||||||
|
|
||||||
|
binds = import ./binds.nix {inherit lib;};
|
||||||
|
dag = import ./dag.nix {inherit lib;};
|
||||||
languages = import ./languages.nix {inherit lib;};
|
languages = import ./languages.nix {inherit lib;};
|
||||||
lua = import ./lua.nix {inherit lib;};
|
lua = import ./lua.nix {inherit lib;};
|
||||||
vim = import ./vim.nix {inherit lib;};
|
vim = import ./vim.nix {inherit lib;};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{lib}: let
|
let
|
||||||
inherit (builtins) isInt isBool toJSON;
|
inherit (builtins) isInt isBool toJSON;
|
||||||
in rec {
|
in rec {
|
||||||
# yes? no.
|
# yes? no.
|
||||||
|
|
Loading…
Reference in a new issue