Generate the module-list.nix which index all valid modules.
Non-valid modules are commented inside the generated list. Move module paths which are not the module directory into the legacy.nix file. svn path=/nixos/branches/modular-nixos/; revision=15751
This commit is contained in:
55
maintainers/scripts/gen-module-list.sh
Executable file
55
maintainers/scripts/gen-module-list.sh
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
|
||||
prog=$0
|
||||
|
||||
usage(){
|
||||
echo 1>&2 "
|
||||
$prog module-dir
|
||||
|
||||
This script generate the index file inside the module directory.
|
||||
"
|
||||
exit 1
|
||||
}
|
||||
|
||||
: ${NIXPKGS=/etc/nixos/nixpkgs}
|
||||
|
||||
is_module(){
|
||||
local file=$1
|
||||
echo "
|
||||
let
|
||||
appIfFun = f: x: if builtins.isFunction f then f x else f;
|
||||
in
|
||||
builtins.isAttrs (
|
||||
appIfFun (import $file) {
|
||||
pkgs = (import $NIXPKGS) {};
|
||||
config = {};
|
||||
dummy = 42;
|
||||
}
|
||||
)
|
||||
" | nix-instantiate - --eval-only
|
||||
}
|
||||
|
||||
generate_index(){
|
||||
local path="$1"
|
||||
cd "$path"
|
||||
echo -n "$path: " 1>&2
|
||||
{ echo "[ # This file have been generated by $(basename $prog)";
|
||||
for file in : $(find ./ -wholename '*.impl[./]*' -or -wholename './module-list.nix' -or -type f -name '*.nix' -print); do
|
||||
[ "$file" = ':' ] && continue;
|
||||
echo -n . 1>&2
|
||||
if test "$(is_module "$file" 2> /dev/null)" = "Bool(True)"; then
|
||||
echo " $file"
|
||||
else
|
||||
echo "##### $file"
|
||||
is_module "$file" 2>&1 | sed 's/^/# /'
|
||||
fi
|
||||
done
|
||||
echo ']';
|
||||
} > ./module-list.nix
|
||||
echo 1>&2
|
||||
cd - > /dev/null
|
||||
}
|
||||
|
||||
[ $# -eq 1 ] || usage;
|
||||
|
||||
generate_index "$1"
|
||||
Reference in New Issue
Block a user