7a3745b076
Fixes #183, #110, #116. The default flake-registry option becomes 'vendored', and refers to a vendored flake-registry.json file in the install path. Vendored copy of the flake-registry is from github:NixOS/flake-registry at commit 9c69f7bd2363e71fe5cd7f608113290c7614dcdd. Change-Id: I752b81c85ebeaab4e582ac01c239d69d65580f37
72 lines
2.1 KiB
Bash
72 lines
2.1 KiB
Bash
source ./common.sh
|
|
|
|
# remove the flake registry from nix.conf, to set to default ("vendored")
|
|
sed -i '/flake-registry/d' "$NIX_CONF_DIR/nix.conf"
|
|
|
|
# Make sure the vendored registry contains the correct amount.
|
|
[[ $(nix registry list | wc -l) == 37 ]]
|
|
# sanity check, contains the important ones
|
|
nix registry list | grep '^global flake:nixpkgs'
|
|
nix registry list | grep '^global flake:home-manager'
|
|
|
|
|
|
# it should work the same if we set to vendored directly.
|
|
echo 'flake-registry = vendored' >> "$NIX_CONF_DIR/nix.conf"
|
|
[[ $(nix registry list | wc -l) == 37 ]]
|
|
# sanity check, contains the important ones
|
|
nix registry list | grep '^global flake:nixpkgs'
|
|
nix registry list | grep '^global flake:home-manager'
|
|
|
|
|
|
# the online flake registry should still work, but it is deprecated.
|
|
set -m
|
|
# port 0: auto pick a free port, unbufferred output
|
|
python3 -u -m http.server 0 --bind 127.0.0.1 > server.out &
|
|
# wait for the http server to admit it is working
|
|
while ! grep -qP 'port \d+' server.out ; do
|
|
echo 'waiting for python http' >&2
|
|
sleep 0.2
|
|
done
|
|
|
|
port=$(awk 'match($0,/port ([[:digit:]]+)/, ary) { print ary[1] }' server.out)
|
|
|
|
sed -i '/flake-registry/d' "$NIX_CONF_DIR/nix.conf"
|
|
echo "flake-registry = http://127.0.0.1:$port/flake-registry.json" >> "$NIX_CONF_DIR/nix.conf"
|
|
cat <<EOF > flake-registry.json
|
|
{
|
|
"flakes": [
|
|
{
|
|
"from": {
|
|
"type": "indirect",
|
|
"id": "nixpkgs"
|
|
},
|
|
"to": {
|
|
"type": "github",
|
|
"owner": "NixOS",
|
|
"repo": "nixpkgs"
|
|
}
|
|
},
|
|
{
|
|
"from": {
|
|
"type": "indirect",
|
|
"id": "private-flake"
|
|
},
|
|
"to": {
|
|
"type": "github",
|
|
"owner": "fancy-enterprise",
|
|
"repo": "private-flake"
|
|
}
|
|
}
|
|
],
|
|
"version": 2
|
|
}
|
|
EOF
|
|
|
|
[[ $(nix registry list | wc -l) == 2 ]]
|
|
nix registry list | grep '^global flake:nixpkgs'
|
|
nix registry list | grep '^global flake:private-flake'
|
|
|
|
# make sure we have a warning:
|
|
nix registry list 2>&1 | grep "config option flake-registry referring to a URL is deprecated and will be removed"
|
|
|
|
kill %1
|