|
14 | 14 | overlays = (if builtins.isList overlays then overlays else []) ++ inputs.pkgs.overlays or []; |
15 | 15 | config = inputs.pkgs.config or {}; |
16 | 16 | }; |
17 | | - mapAttrsToList = f: attrs: builtins.attrValues (builtins.mapAttrs f attrs); |
18 | | - l_pkg_enum = { |
19 | | - lua5_1 = "lua51Packages"; |
20 | | - lua5_2 = "lua52Packages"; |
21 | | - lua5_3 = "lua53Packages"; |
22 | | - lua5_4 = "lua54Packages"; |
23 | | - lua5_5 = "lua55Packages"; |
24 | | - luajit = "luajitPackages"; |
25 | | - lua = "luaPackages"; |
26 | | - }; |
27 | 17 | APPNAME = "shelua"; |
28 | | - overlay = final: prev: let |
29 | | - luaCallPackageFn = { buildLuarocksPackage, }: |
30 | | - buildLuarocksPackage { |
31 | | - pname = APPNAME; |
32 | | - version = "scm-1"; |
33 | | - src = self; |
34 | | - }; |
35 | | - # lua5_1 = prev.lua5_1.override { packageOverrides }; |
36 | | - l_pkg_main = builtins.mapAttrs ( |
37 | | - n: _: (prev.lib.attrByPath [ n "override" ] null prev) (old: { |
38 | | - packageOverrides = luaself: luaprev: ( |
39 | | - (if old ? packageOverrides then old.packageOverrides luaself luaprev else {}) // { |
40 | | - ${APPNAME} = luaself.callPackage luaCallPackageFn {}; |
41 | | - } |
42 | | - ); |
43 | | - }) |
44 | | - ) l_pkg_enum; |
45 | | - # lua51Packages = final.lua5_1.pkgs; |
46 | | - l_pkg_sets = builtins.listToAttrs ( |
47 | | - mapAttrsToList ( |
48 | | - n: v: { |
49 | | - name = v; |
50 | | - value = prev.lib.attrByPath [ n "pkgs" ] null final; |
| 18 | + l_pkg_enum = [ "lua5_1" "lua5_2" "lua5_3" "lua5_4" "lua5_5" "luajit" "lua" ]; |
| 19 | + mkLuaOverlay = { packageOverrides, vimPlugins ? null, versions ? [], controlType ? "exclude", ... }: |
| 20 | + assert builtins.isList versions || throw "lua versions must be a list of strings containing `lua.luaAttr` names corresponding to `pkgs.luaInterpreters`!"; |
| 21 | + assert controlType == "build" || controlType == "exclude" || throw ''controlType must be "build" or "exclude"''; |
| 22 | + final: prev: { |
| 23 | + luaInterpreters = prev.luaInterpreters // prev.lib.pipe ( |
| 24 | + if controlType == "build" then |
| 25 | + prev.lib.intersectLists versions (builtins.attrNames prev.luaInterpreters) |
| 26 | + else |
| 27 | + builtins.filter (x: !builtins.elem x versions) (builtins.attrNames prev.luaInterpreters) |
| 28 | + ) [ |
| 29 | + (map (v: prev.lib.nameValuePair v packageOverrides)) |
| 30 | + builtins.listToAttrs |
| 31 | + (builtins.mapAttrs ( |
| 32 | + n: new: prev.luaInterpreters.${n}.override (old: { |
| 33 | + packageOverrides = prev.lib.composeExtensions (old.packageOverrides or (_: _: {})) new; |
| 34 | + }) |
| 35 | + )) |
| 36 | + ]; |
| 37 | + ${if prev.lib.isFunction vimPlugins then "vimPlugins" else null} = prev.vimPlugins // vimPlugins final prev; |
| 38 | + }; |
| 39 | + overlay = mkLuaOverlay { |
| 40 | + packageOverrides = luaself: luaprev: { |
| 41 | + ${APPNAME} = luaself.callPackage ( |
| 42 | + { buildLuarocksPackage, }: buildLuarocksPackage { |
| 43 | + pname = APPNAME; |
| 44 | + version = "scm-1"; |
| 45 | + src = self; |
51 | 46 | } |
52 | | - ) l_pkg_enum |
53 | | - ); |
54 | | - in l_pkg_main // l_pkg_sets // { |
55 | | - vimPlugins = prev.vimPlugins // { |
| 47 | + ) {}; |
| 48 | + }; |
| 49 | + vimPlugins = final: prev: { |
56 | 50 | ${APPNAME} = final.neovimUtils.buildNeovimPlugin { pname = APPNAME; }; |
57 | 51 | }; |
58 | 52 | }; |
59 | 53 | packages = forAllSys (system: let |
60 | 54 | pkgs = getPkgs system [ overlay ]; |
61 | 55 | in ( |
62 | | - with builtins; listToAttrs ( |
| 56 | + builtins.listToAttrs ( |
63 | 57 | map (n: { |
64 | 58 | name = "she${n}"; |
65 | 59 | value = pkgs.lib.attrByPath [ n "pkgs" APPNAME ] null pkgs; |
66 | | - }) (attrNames l_pkg_enum) |
| 60 | + }) l_pkg_enum |
67 | 61 | ) |
68 | 62 | ) // { |
69 | 63 | default = pkgs.vimPlugins.${APPNAME}; |
|
75 | 69 | overlays.runLuaCommand = runLuaCommandOverlay; |
76 | 70 | legacyPackages = forAllSys (system: { inherit (getPkgs system [ runLuaCommandOverlay ]) runLuaCommand; }); |
77 | 71 | inherit packages; |
78 | | - checks = forAllSys (system: import ./tests/tests.nix (getPkgs system [ overlay runLuaCommandOverlay ])); |
| 72 | + checks = forAllSys (system: import ./tests/tests.nix (getPkgs system [ overlay runLuaCommandOverlay ]) l_pkg_enum); |
79 | 73 | devShells = forAllSys (system: let |
80 | 74 | pkgs = getPkgs system []; |
81 | 75 | lua = pkgs.luajit.withPackages (lp: [ lp.inspect lp.cjson lp.toml-edit lp.luarocks ]); |
|
87 | 81 | LUA = lua.interpreter; |
88 | 82 | BEAR = "${pkgs.bear}/bin/bear"; |
89 | 83 | shellHook = '' |
90 | | - [ "$(whoami)" == "birdee" ] && exec zsh |
| 84 | + ogdir=$(pwd) |
| 85 | + gitdir="$(git rev-parse --show-toplevel)" |
| 86 | + if [ -n "$gitdir" ]; then |
| 87 | + export PREFIX="$gitdir/build/test" |
| 88 | + cd "$gitdir" |
| 89 | + make bear |
| 90 | + cd "$ogdir" |
| 91 | + fi |
| 92 | + unset gitdir ogdir |
91 | 93 | ''; |
92 | 94 | }; |
93 | 95 | }); |
|
0 commit comments