Page MenuHomePhorge

D4844.1767097422.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D4844.1767097422.diff

diff --git a/scripts/install_nix.sh b/scripts/install_nix.sh
new file mode 100755
--- /dev/null
+++ b/scripts/install_nix.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+
+# Do initial nix install if nix is not available in PATH
+if ! command -v nix > /dev/null; then
+ sh <(curl -L https://nixos.org/nix/install) --daemon
+
+ # Source nix-daemon.sh to add nix to PATH
+ if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
+ . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
+ fi
+fi
+
+# Figure out how many cores the system has, and set cache default
+if [[ "$OSTYPE" == 'darwin'* ]]; then
+ NPROC=$(sysctl -n hw.physicalcpu)
+ ADMIN_GROUP="@admin"
+elif [[ "$OSTYPE" == 'linux'* ]]; then
+ NPROC=$(nproc)
+ ADMIN_GROUP="@wheel @sudo"
+fi
+
+# Ask user if they would like to use powerline for bash prompt
+SCRIPT_DIR=$(cd "$(dirname "$0")" || true; pwd -P)
+# Build the nixified script which is aware of powerline and dependencies
+nix build "$SCRIPT_DIR"/..#better-prompt
+# Source file to apply powerline bootstrap logic
+# shellcheck source=/dev/null
+. "$(nix eval --raw "$SCRIPT_DIR"'/..#better-prompt.outPath')/bin/better-prompt"
+
+# This has the potential of over-subscribing cores by a factor of 2. (n/2)*4=2n
+# However, this is probably the best compromise as most builds are largely
+# single threaded, with a few exceptions which are massively parrallel.
+#
+# Jobs = The number of different nix packages able to be built at the same time
+# Cores = How many cores an individual job may use. This value is
+# assigned to $NIX_BUILD_CORES within a nix build environment.
+jobs=$((NPROC / 2)) # Use only half of cores for individual jobs
+cores=4 # Just a good default for consumer hardware
+
+# Check if nix.conf contains a value, append a default if missing.
+add_if_missing_in_nix_conf() {
+ local key="$1"
+ local value="$2"
+
+ if ! grep "$key" /etc/nix/nix.conf &> /dev/null && \
+ [[ -w /etc/nix/nix.conf ]]; then
+ echo "${key} = ${value}" | sudo tee -a /etc/nix/nix.conf &> /dev/null
+ fi
+}
+
+# Check if nix.conf is already configured for a given value.
+add_if_missing_in_nix_conf "trusted-users" "${ADMIN_GROUP} ${USER}"
+add_if_missing_in_nix_conf \
+ "experimental-features" "flakes nix-command"
+add_if_missing_in_nix_conf "cores" "${cores}"
+add_if_missing_in_nix_conf "max-jobs" "${jobs}"

File Metadata

Mime Type
text/plain
Expires
Tue, Dec 30, 12:23 PM (1 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5867170
Default Alt Text
D4844.1767097422.diff (2 KB)

Event Timeline