mirror of
https://github.com/ryanccn/flake.git
synced 2025-12-06 08:10:43 +01:00
chore: update
This commit is contained in:
parent
26815c337f
commit
6c6f264768
19 changed files with 187 additions and 103 deletions
86
.github/workflows/install-nix.sh
vendored
Executable file
86
.github/workflows/install-nix.sh
vendored
Executable file
|
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env bash
|
||||
# SPDX-FileCopyrightText: 2025 Ryan Cao <hello@ryanccn.dev>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# Modified from https://github.com/cachix/install-nix-action/blob/9280e7aca88deada44c930f1e2c78e21c3ae3edd/install-nix.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if nix_path="$(type -p nix)" ; then
|
||||
echo "Aborting: Nix is already installed at ${nix_path}"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ ($OSTYPE =~ linux) ]]; then
|
||||
enable_kvm() {
|
||||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-install-nix-action-kvm.rules
|
||||
sudo udevadm control --reload-rules && sudo udevadm trigger --name-match=kvm
|
||||
}
|
||||
|
||||
echo '::group::Enabling KVM support'
|
||||
enable_kvm && echo 'Enabled KVM' || echo 'KVM is not available'
|
||||
echo '::endgroup::'
|
||||
fi
|
||||
|
||||
echo "::group::Installing Nix"
|
||||
|
||||
workdir=$(mktemp -d)
|
||||
trap 'rm -rf "$workdir"' EXIT
|
||||
|
||||
extra_conf=(
|
||||
"experimental-features = nix-command flakes"
|
||||
"show-trace = true"
|
||||
"max-jobs = auto"
|
||||
"trusted-users = root ${USER:-}"
|
||||
)
|
||||
|
||||
if [[ -n "${GITHUB_TOKEN:-}" && "${GITHUB_SERVER_URL:-}" == "https://github.com" ]]; then
|
||||
echo "::debug::Using the default GITHUB_TOKEN for github.com"
|
||||
extra_conf+=("access-tokens = github.com=$GITHUB_TOKEN")
|
||||
else
|
||||
echo "::debug::Continuing without a GitHub access token"
|
||||
fi
|
||||
|
||||
# Nix installer flags
|
||||
installer_args=(install)
|
||||
|
||||
case "$OSTYPE" in
|
||||
linux*) installer_args+=(linux) ;;
|
||||
darwin*) installer_args+=(macos) ;;
|
||||
*) echo "unknown: $OSTYPE" ;;
|
||||
esac
|
||||
|
||||
if [[ ! ($OSTYPE =~ darwin || -e /run/systemd/system) ]]; then
|
||||
installer_args+=(--init none)
|
||||
fi
|
||||
|
||||
installer_args+=(
|
||||
--no-confirm
|
||||
--extra-conf "$(printf $'%s\n' "${extra_conf[@]}")"
|
||||
)
|
||||
|
||||
echo "installer args: ${installer_args[*]}"
|
||||
|
||||
# There is --retry-on-errors, but only newer curl versions support that
|
||||
curl_retries=5
|
||||
while ! curl -o "$workdir/install" --proto '=https' --fail --tlsv1.2 -sSf -L https://artifacts.nixos.org/experimental-installer
|
||||
do
|
||||
sleep 1
|
||||
((curl_retries--))
|
||||
if [[ $curl_retries -le 0 ]]; then
|
||||
echo "curl retries failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
sh "$workdir/install" "${installer_args[@]}"
|
||||
|
||||
{
|
||||
echo "/nix/var/nix/profiles/default/bin"
|
||||
echo "${XDG_STATE_HOME:-"$HOME/.local/state"}/nix/profile"
|
||||
echo "$HOME/.nix-profile/bin"
|
||||
} >> "$GITHUB_PATH"
|
||||
|
||||
# Close the log message group which was opened above
|
||||
echo "::endgroup::"
|
||||
Loading…
Add table
Add a link
Reference in a new issue