diff options
Diffstat (limited to '')
| -rwxr-xr-x | scripts/why-depends | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/scripts/why-depends b/scripts/why-depends new file mode 100755 index 00000000..ae1ac6f7 --- /dev/null +++ b/scripts/why-depends @@ -0,0 +1,56 @@ +#! /usr/bin/env sh + +main() { + use_running="$1" + host="$2" + package="$3" + + if [ "$use_running" = "true" ]; then + base="/run/current-system" + else + base=".#nixosConfigurations.$host.config.system.build.toplevel" + fi + + fd "[a-zA-Z0-9]{32}-$package" /nix/store --type directory --threads 1 --exec nix --option warn-dirty false why-depends "$base" +} + +running=false +host="$(hostname)" +packages="" +direct_packages="" + +while [ "$#" -ne 0 ]; do + case "$1" in + "--running") + running=true + ;; + "--host") + shift 1 + host="$1" + ;; + "--direct") + shift 1 + direct_packages="$direct_packages $1" + ;; + *) + # Treat everything else as a package to check + packages="$packages $1" + ;; + esac + + shift 1 +done + +if [ -n "$packages" ]; then + for package in $packages; do + main "$running" "$host" "$package-" + done +fi + +if [ -n "$direct_packages" ]; then + for package in $direct_packages; do + main "$running" "$host" "$package-[0-9]" + done +fi + +# vim: ft=sh |
