update setup script
This commit is contained in:
+58
-6
@@ -7,12 +7,58 @@ accept-flake-config = false
|
|||||||
warn-dirty = false
|
warn-dirty = false
|
||||||
"
|
"
|
||||||
|
|
||||||
if ! command -v nix >/dev/null 2>&1; then
|
ensure_nix_profile() {
|
||||||
echo "Installing Nix in single-user mode..."
|
if [ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]; then
|
||||||
sh <(curl -L https://nixos.org/nix/install) --no-daemon
|
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||||
# shellcheck disable=SC1090
|
elif [ -f "$HOME/.nix-profile/etc/profile.d/nix.sh" ]; then
|
||||||
. "$HOME/.nix-profile/etc/profile.d/nix.sh"
|
. "$HOME/.nix-profile/etc/profile.d/nix.sh"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_nix_if_missing() {
|
||||||
|
if command -v nix >/dev/null 2>&1; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Nix not found. Installing Nix..."
|
||||||
|
|
||||||
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
|
echo "Running as root; preparing nixbld users for container/Codex environment..."
|
||||||
|
|
||||||
|
if ! getent group nixbld >/dev/null; then
|
||||||
|
groupadd -r nixbld
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in $(seq 1 10); do
|
||||||
|
if ! id "nixbld$i" >/dev/null 2>&1; then
|
||||||
|
useradd \
|
||||||
|
-r \
|
||||||
|
-g nixbld \
|
||||||
|
-G nixbld \
|
||||||
|
-d /var/empty \
|
||||||
|
-s /usr/sbin/nologin \
|
||||||
|
"nixbld$i" || true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p /etc/nix
|
||||||
|
cat > /etc/nix/nix.conf <<'EOF'
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
accept-flake-config = false
|
||||||
|
warn-dirty = false
|
||||||
|
build-users-group = nixbld
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sh <(curl -L https://nixos.org/nix/install) --no-daemon
|
||||||
|
else
|
||||||
|
sh <(curl -L https://nixos.org/nix/install) --no-daemon
|
||||||
|
fi
|
||||||
|
|
||||||
|
ensure_nix_profile
|
||||||
|
}
|
||||||
|
|
||||||
|
install_nix_if_missing
|
||||||
|
ensure_nix_profile
|
||||||
|
|
||||||
mkdir -p "$HOME/.config/nix"
|
mkdir -p "$HOME/.config/nix"
|
||||||
cat > "$HOME/.config/nix/nix.conf" <<'EOF'
|
cat > "$HOME/.config/nix/nix.conf" <<'EOF'
|
||||||
@@ -24,11 +70,17 @@ EOF
|
|||||||
echo "Nix version:"
|
echo "Nix version:"
|
||||||
nix --version
|
nix --version
|
||||||
|
|
||||||
|
echo "Installing jq if unavailable..."
|
||||||
|
if ! command -v jq >/dev/null 2>&1; then
|
||||||
|
nix profile install nixpkgs#jq
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Available NixOS hosts:"
|
echo "Available NixOS hosts:"
|
||||||
nix eval --json --no-accept-flake-config .#nixosConfigurations --apply builtins.attrNames | jq -r '.[]'
|
hosts="$(nix eval --json --no-accept-flake-config .#nixosConfigurations --apply builtins.attrNames | jq -r '.[]')"
|
||||||
|
echo "$hosts"
|
||||||
|
|
||||||
echo "Evaluating all host toplevel derivations..."
|
echo "Evaluating all host toplevel derivations..."
|
||||||
for host in $(nix eval --json --no-accept-flake-config .#nixosConfigurations --apply builtins.attrNames | jq -r '.[]'); do
|
for host in $hosts; do
|
||||||
echo "==> Evaluating $host"
|
echo "==> Evaluating $host"
|
||||||
nix eval --raw --no-accept-flake-config ".#nixosConfigurations.${host}.config.system.build.toplevel.drvPath"
|
nix eval --raw --no-accept-flake-config ".#nixosConfigurations.${host}.config.system.build.toplevel.drvPath"
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user