This repository has been archived on 2024-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
neovim/lib.nix

40 lines
942 B
Nix
Raw Normal View History

2022-09-15 09:57:11 +03:00
rec {
#############################################################################
# Helpers
# Source: https://github.com/NixOS/nixpkgs/blob/d61bc96d16ca288c69b798b8e31eca64050098e3/lib/lists.nix
foldr = op: nul: list:
let
len = builtins.length list;
fold' = n:
if n == len
then nul
else op (builtins.elemAt list n) (fold' (n + 1));
in
fold' 0;
extractAttrs = attr: list:
let
getAttr' = builtins.getAttr attr;
hasAttr' = builtins.hasAttr attr;
filteredList = builtins.filter hasAttr' list;
in
builtins.map getAttr' filteredList;
#############################################################################
# Lua
mkLuaHeredoc = content: ''
lua << EOF
${content}
EOF
'';
mkLuaRc = contents:
let
concat = (a: b: a + b);
luaHeredors = builtins.map mkLuaHeredoc contents;
in
foldr concat "" luaHeredors;
}