2021-08-16 01:42:08 -07:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
# This script does the following:
|
|
|
|
# - Update all flake inputs, including nixpkgs
|
|
|
|
# - Print version updates of pinned pkgs like so:
|
|
|
|
# Pkg updates in nixpkgs unstable:
|
|
|
|
# bitcoin: 0.20.0 -> 0.21.1
|
|
|
|
# btcpayserver: 1.1.0 -> 1.1.2
|
|
|
|
# - Write ../pkgs/pinned.nix:
|
|
|
|
# Packages for which the stable und unstable versions are identical are
|
|
|
|
# pinned to stable.
|
|
|
|
# All other pkgs are pinned to unstable.
|
|
|
|
|
2022-12-18 04:13:41 -08:00
|
|
|
forceRun=
|
|
|
|
nixosVersion=
|
|
|
|
for arg in "$@"; do
|
|
|
|
case $arg in
|
|
|
|
-f)
|
|
|
|
forceRun=1
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
nixosVersion=$arg
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2021-08-16 01:42:08 -07:00
|
|
|
# cd to script dir
|
|
|
|
cd "${BASH_SOURCE[0]%/*}"
|
|
|
|
|
|
|
|
if [[ $(nix flake 2>&1) != *"requires a sub-command"* ]]; then
|
|
|
|
echo "Error. This script requires nix flake support."
|
|
|
|
echo "https://nixos.wiki/wiki/Flakes#Installing_flakes"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2022-12-18 04:13:41 -08:00
|
|
|
if [[ $forceRun ]] && ! git diff --quiet ../flake.{nix,lock}; then
|
2021-08-16 01:42:08 -07:00
|
|
|
echo "error: flake.nix/flake.lock have changes. Run with option -f to ignore."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2021-12-07 19:07:32 -08:00
|
|
|
echo "Updating flake 'nixos-search'"
|
|
|
|
nix flake update ../test/nixos-search
|
|
|
|
echo
|
|
|
|
|
2021-08-16 01:42:08 -07:00
|
|
|
versions=$(nix eval --json -f update-flake.nix versions)
|
|
|
|
|
|
|
|
## Uncomment the following to generate a version change message for testing
|
|
|
|
# versions=$(echo "$versions" | sed 's|1|0|g')
|
|
|
|
|
2021-12-07 19:07:32 -08:00
|
|
|
echo "Updating main flake"
|
2022-12-18 04:13:41 -08:00
|
|
|
if [[ $nixosVersion ]]; then
|
|
|
|
sed -Ei "s|(nixpkgs.url = .*nixos-)[^\"]+|\1$nixosVersion|" ../flake.nix
|
|
|
|
fi
|
2021-08-16 01:42:08 -07:00
|
|
|
nix flake update ..
|
|
|
|
|
|
|
|
echo
|
|
|
|
nix eval --raw -f update-flake.nix --argstr prevVersions "$versions" showUpdates; echo
|
|
|
|
|
|
|
|
pinned=../pkgs/pinned.nix
|
|
|
|
pinnedSrc=$(nix eval --raw -f update-flake.nix --argstr prevVersions "$versions" pinnedFile)
|
|
|
|
if [[ $pinnedSrc != $(cat "$pinned") ]]; then
|
|
|
|
echo "$pinnedSrc" > "$pinned"
|
|
|
|
echo
|
|
|
|
echo "Updated pinned.nix"
|
|
|
|
fi
|