lib/pkg-lists: move to common location

Extract the helper functions defined in `efmls-configs-pkgs` to a common
location where they can also be used by none-ls's package list.
This commit is contained in:
Matt Sturgeon 2024-09-04 15:11:16 +01:00
parent d2aad1071f
commit cdb2e79e51
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
3 changed files with 49 additions and 41 deletions

23
lib/pkg-lists.nix Normal file
View file

@ -0,0 +1,23 @@
# This file isn't (currently) part of `lib.nixvim`, but is used directly by `efmls` and `none-ls` pkg lists
lib: rec {
# Produces an attrset of { ${name} = name; }
topLevel = names: lib.genAttrs names lib.id;
# Produces an attrset of { ${name} = null; }
nullAttrs = names: lib.genAttrs names (_: null);
# Produces an attrset of { ${name} = [ scope name ]; }
# Where the "scope" is the (nested) attr names,
# and "name" is the value.
# If the name value is a list, it will be expanded into multiple attrs.
scoped = lib.concatMapAttrs (
scope: v:
if builtins.isAttrs v then
lib.mapAttrs (_: loc: [ scope ] ++ loc) (scoped v)
else
lib.genAttrs (lib.toList v) (name: [
scope
name
])
);
}

View file

@ -1,4 +1,8 @@
lib: {
lib:
let
inherit (import ../../../lib/pkg-lists.nix lib) topLevel scoped;
in
{
# efmls-configs tools that have no corresponding nixpkgs package
unpackaged = [
"blade_formatter"
@ -28,20 +32,6 @@ lib: {
# Mapping from a efmls-configs tool name to the corresponding nixpkgs package
packaged =
let
# TODO: move these helpers to a shared location so that none-ls can also use them
topLevel = names: lib.genAttrs names lib.id;
scoped = lib.concatMapAttrs (
scope: v:
if builtins.isAttrs v then
lib.mapAttrs (_: loc: [ scope ] ++ loc) (scoped v)
else
lib.genAttrs (lib.toList v) (name: [
scope
name
])
);
in
# Top-level packages
topLevel [
"actionlint"

View file

@ -1,4 +1,8 @@
lib: {
lib:
let
inherit (import ../../lib/pkg-lists.nix lib) topLevel scoped nullAttrs;
in
{
# builtin sources that don't require a package
noPackage = [
"gitrebase"
@ -20,7 +24,7 @@ lib: {
# nixpkgs packages for a given source
packaged =
# Top-level packages
lib.genAttrs [
topLevel [
"actionlint"
"alejandra"
"asmfmt"
@ -94,29 +98,20 @@ lib: {
"yapf"
"zprint"
"zsh"
] lib.id
]
# Scoped packages
//
lib.concatMapAttrs
(
scope: names:
lib.genAttrs names (name: [
scope
name
])
)
{
nodePackages = [
"alex"
"prettier"
];
phpPackages = [
"phpmd"
"phpstan"
];
rubyPackages = [ "htmlbeautifier" ];
ocamlPackages = [ "ocamlformat" ];
}
// scoped {
nodePackages = [
"alex"
"prettier"
];
phpPackages = [
"phpmd"
"phpstan"
];
rubyPackages = "htmlbeautifier";
ocamlPackages = "ocamlformat";
}
# Packages where the name is different
// {
ansiblelint = "ansible-lint";
@ -229,7 +224,7 @@ lib: {
xmllint = "libxml2";
}
# builtin sources that are not packaged in nixpkgs
// lib.genAttrs [
// nullAttrs [
"blade_formatter"
"bsfmt"
"bslint"
@ -268,5 +263,5 @@ lib: {
"textlint"
"twigcs"
"vacuum"
] (_: null);
];
}