Skip to content

Instantly share code, notes, and snippets.

@jozko
Created January 20, 2016 18:24
Show Gist options
  • Save jozko/05741de96f5966d8be3b to your computer and use it in GitHub Desktop.
Save jozko/05741de96f5966d8be3b to your computer and use it in GitHub Desktop.
#!/bin/sh
# This script installs the Nix package manager on your system by
# downloading a binary distribution and running its installer script
# (which in turn creates and populates /nix).
{ # Prevent execution if this script was only partially downloaded
unpack=nix-binary-tarball-unpack
require_util() {
type "$1" > /dev/null 2>&1 || which "$1" > /dev/null 2>&1 ||
oops "you do not have \`$1' installed, which i need to $2"
}
oops() {
echo "$0: $@" >&2
rm -rf "$unpack"
exit 1
}
case "$(uname -s).$(uname -m)" in
Linux.x86_64) system=x86_64-linux;;
Linux.i?86) system=i686-linux;;
Darwin.x86_64) system=x86_64-darwin;;
*) oops "sorry, there is no binary distribution of Nix for your platform";;
esac
tarball="nix-1.11.1-$system.tar.bz2"
url="https://nixos.org/releases/nix/nix-1.11.1/$tarball"
checksum="f040bd0b093ca8eb42b15057683f566c21425f90"
require_util curl "download the binary tarball"
require_util bzcat "decompress the binary tarball"
require_util tar "unpack the binary tarball"
require_util bash "run the installation script from the binary tarball"
echo "Downloading Nix binary tarball for $system from \`$url'..."
curl "$url" -o $tarball
echo "Checking checksum of $tarball"
tarballsha=$(shasum nix-1.11.1-x86_64-darwin.tar.bz2 | cut -d ' ' -f1)
if [ ! "$tarballsha" == "$checksum" ]; then
echo "$tarball checksum mismatch, exiting!"
exit 1
else
echo "$tarball checksum fine"
fi
echo "unpacking Nix binary tarball for $system from \`$url'..."
mkdir "$unpack" || oops "failed to create \`$unpack' directory"
tar xjf "$tarball" -C "$unpack" || oops "failed to unpack \`$url'"
[ -e "$unpack"/*/install ] ||
oops "installation script is missing from the binary tarball!"
"$unpack"/*/install
rm -rf "$unpack"
} # End of wrapping
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment