diff options
| -rwxr-xr-x | scripts/why-depends | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/scripts/why-depends b/scripts/why-depends index 1afe9150..61f40c5d 100755 --- a/scripts/why-depends +++ b/scripts/why-depends @@ -1,23 +1,43 @@ #! /usr/bin/env sh -search_string="$1-" -shift 1 +main() { + use_running="$1" + host="$2" + package="$3" -if [ "$1" != "" ]; then - # Add the version - search_string="${search_string}${1}$" - shift 1 -fi + if [ "$use_running" = "true" ]; then + base="/run/current-system" + else + base=".#nixosConfigurations.$host.config.system.build.toplevel" + fi -if [ "$1" = "--running" ]; then - shift 1 - base="/run/current-system" -else - host="$(hostname)" - base=".#nixosConfigurations.$host.config.system.build.toplevel" -fi + fd "[a-zA-Z0-9]{32}-$package-" /nix/store --type directory --threads 1 --exec nix why-depends "$base" +} + +running=false +host="$(hostname)" +packages="" +while [ "$#" -ne 0 ]; do + case "$1" in + "--running") + running=true + ;; + "--host") + shift 1 + host="$1" + ;; + *) + # Treat everything else as a package to check + packages="$packages $1" + ;; + esac + + shift 1 +done -fd "$search_string" /nix/store --type directory --threads 1 --exec nix why-depends "$@" "$base" +for package in $packages; do + main "$running" "$host" "$package" +done # vim: ft=sh |
