--- /dev/null
+# Maintainer: Alastair Pharo <asppsa at gmail dot com>
+# Contributor: Felix Morgner <felix.morgner@gmail.com>
+# Contributor: Vlad M. <vlad@archlinux.net>
+# Contributor: Mario Rodas
+# Contributor: Oozyslug <oozyslug at gmail dot com>
+# Contributor: koral <koral at mailoo dot org>
+# Contributor: Anders Bennehag
+
+pkgname=nix
+pkgver=2.2.1
+pkgrel=1
+pkgdesc="A purely functional package manager"
+arch=('i686' 'x86_64' 'armv7h')
+url="https://nixos.org/nix"
+license=('LGPL')
+depends=('gc' 'libsodium' 'boost' 'brotli' 'readline')
+makedepends=('bzip2' 'gc' 'openssl')
+install=nix.install
+source=("https://nixos.org/releases/nix/nix-$pkgver/nix-$pkgver.tar.xz")
+sha256sums=('85f8d3518060803e44e51b1a9ada1a39cea904b36a632ba1844043a0b63be515')
+
+
+prepare() {
+ cd "$pkgname-$pkgver"
+}
+
+build () {
+ cd "$pkgname-$pkgver"
+ export EDITLINE_CFLAGS="-DREADLINE"
+ export EDITLINE_LIBS="/usr/lib/libreadline.so"
+ ./configure --prefix=/usr \
+ --libexecdir="/usr/lib/$pkgname" \
+ --sysconfdir=/etc \
+ --enable-gc
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
--- /dev/null
+
+pre_install () {
+ # Check that the group and users don't already exist
+ if [[ -n $(cut -d: -f1 /etc/group | grep -w nixbld) ]]; then
+ echo "The nixbld group already exists. This install cannot proceed."
+ exit 1
+ fi
+
+ for i in {1..10}; do
+ if [[ -n $(cut -d: -f1 /etc/passwd | grep -w nixbld$i) ]]; then
+ echo "The nixbld$i user already exists. This install cannot proceed."
+ exit 1
+ fi
+ done
+}
+
+create_users () {
+ # Create a nixbld group.
+ groupadd -r nixbld
+
+ # Create 10 nixbld{i} users
+ for i in {1..10}; do
+ useradd -g nixbld -G nixbld -r -N -M -d /var/empty -s /sbin/nologin nixbld$i
+ done
+}
+
+delete_users() {
+ # Remove the users
+ for i in {1..10}; do
+ userdel nixbld$i
+ done
+
+ # Remove the group
+ groupdel nixbld
+}
+
+create_store() {
+ # Create nix folders and set permissions
+ mkdir -p /nix/store
+ chown root.nixbld /nix/store
+ chmod 1775 /nix/store
+ mkdir -p -m 1777 /nix/var/nix/gcroots/per-user
+ mkdir -p -m 1777 /nix/var/nix/profiles/per-user
+}
+
+restore_store() {
+ # Restore folder permissions
+ chmod 755 /nix/store
+ chown root.root /nix/store
+}
+
+init_channels() {
+ # Initialize default nix channel
+ echo "Initializing default nix channel"
+ source /etc/profile.d/nix.sh
+ nix-channel --update
+}
+
+daemon_info() {
+ echo "To start the nix daemon, execute one of the following:"
+ echo
+ echo " systemctl enable nix-daemon.socket # Sets the daemon to start on next boot"
+ echo " systemctl enable --now nix-daemon.socket # Starts now and on next boot too"
+ echo
+ echo "Also, if this is a new install, you need to start a new login shell or otherwise"
+ echo
+ echo " source /etc/profile.d/nix.sh"
+ echo " source /etc/profile.d/nix-daemon.sh"
+ echo
+ echo "Once your environment is set-up, you will need to add some channels. You can see how"
+ echo "to do that here:"
+ echo " https://nixos.org/nix/manual/#sec-channels"
+}
+
+post_install() {
+ create_users
+ create_store
+ init_channels
+ daemon_info
+}
+
+pre_upgrade() {
+ systemctl stop nix-daemon.socket
+ systemctl stop nix-daemon
+}
+
+post_upgrade() {
+ delete_users
+ create_users
+ create_store
+ daemon_info
+}
+
+pre_remove() {
+ restore_store
+ delete_users
+}