aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/why-depends
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xscripts/why-depends56
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