]> git.immae.eu Git - perso/Immae/Config/AUR.git/blobdiff - nix/nix.install
Add 'nix/' from commit 'ed04b08b9b4e7c4b8c882450536895592341edcc'
[perso/Immae/Config/AUR.git] / nix / nix.install
diff --git a/nix/nix.install b/nix/nix.install
new file mode 100644 (file)
index 0000000..613cee6
--- /dev/null
@@ -0,0 +1,97 @@
+
+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
+}