diff options
Diffstat (limited to '')
| -rwxr-xr-x | scripts/build.sh (renamed from build.sh) | 20 | ||||
| -rw-r--r-- | scripts/npins_to_unflake.jq | 34 | ||||
| -rwxr-xr-x | scripts/unflake.sh | 6 | ||||
| -rwxr-xr-x | scripts/why-depends | 56 |
4 files changed, 113 insertions, 3 deletions
diff --git a/build.sh b/scripts/build.sh index 0e574a3a..f3661978 100755 --- a/build.sh +++ b/scripts/build.sh @@ -1,6 +1,16 @@ #!/usr/bin/env sh -host="${1-tiamat}" +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +host="${1-$(hostname)}" [ "$#" -gt 0 ] && shift 1 root="$(git rev-parse --show-toplevel)" @@ -13,7 +23,9 @@ check() { if [ -s "$file" ]; then rm "$file" elif ! [ -e "$file" ]; then - : "Ignore not existing files" + rm "$file" || { + : "Ignore not existing files" + } else echo "ERROR: '$file' is not a symlink. Not removing it." 1>&2 exit 1 @@ -21,7 +33,7 @@ check() { } build_system() { - _val="$(nix build ".#nixosConfigurations.$host.config.system.build.toplevel" --print-out-paths --no-link "$@")" + _val="$(nix build ".#nixosConfigurations.$host.config.system.build.toplevel" --print-out-paths --no-link --option max-jobs 1 "$@")" exit_val="$?" if [ "$exit_val" -ne 0 ]; then @@ -42,4 +54,6 @@ home="$(grep ExecStart= "$SYSTEM_OUT/etc/systemd/system/home-manager-soispha.ser check "$HOME_OUT" ln --symbolic "$home" "$HOME_OUT" +nvd diff /run/current-system "$SYSTEM_OUT" + # vim: ft=sh diff --git a/scripts/npins_to_unflake.jq b/scripts/npins_to_unflake.jq new file mode 100644 index 00000000..80e6b5a3 --- /dev/null +++ b/scripts/npins_to_unflake.jq @@ -0,0 +1,34 @@ +def make_url(value): + value.repository as $repo | + if value.type == "Git" then + if $repo.type == "Git" then + "git+\($repo.url)?ref=\(value.branch)" + elif $repo.type == "GitHub" then + "github:\($repo.owner)/\($repo.repo)/\(value.branch)" + elif $repo.type == "Forgejo" then + "git+\($repo.server)/\($repo.owner)/\($repo.repo)?ref=\(value.branch)" + else + error("Invalid repository type: '\($repo.type)'") + end + elif value.type == "GitRelease" then + if $repo.type == "GitHub" then + "github:\($repo.owner)/\($repo.repo)/\(value.version)" + else + error("Invalid repository type: '\($repo.type)'") + end + elif value.type == "Channel" then + empty + else + error("Invalid value type: '\(value.type)'") + end + ; + +"{ +\( + .pins | to_entries | map( + " \"\(.key)\" = { + url = \"\(make_url(.value))\"; + };" + ) | join("\n") + ) +}" diff --git a/scripts/unflake.sh b/scripts/unflake.sh new file mode 100755 index 00000000..e4aa816d --- /dev/null +++ b/scripts/unflake.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env sh + +NIX_CONFIG="pure-eval = false" nix run -f https://codeberg.org/goldstein/unflake/archive/main.tar.gz unflake -- "$@" + + +# vim: ft=sh 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 |
