Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32509158
D4844.1767097422.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D4844.1767097422.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D4844: [Nix] Add nix installation script
Attached
Detach File
Event Timeline
Log In to Comment