aboutsummaryrefslogtreecommitdiff
path: root/nix/nix.install
diff options
context:
space:
mode:
Diffstat (limited to 'nix/nix.install')
-rw-r--r--nix/nix.install97
1 files changed, 97 insertions, 0 deletions
diff --git a/nix/nix.install b/nix/nix.install
new file mode 100644
index 0000000..613cee6
--- /dev/null
+++ b/nix/nix.install
@@ -0,0 +1,97 @@
1
2pre_install () {
3 # Check that the group and users don't already exist
4 if [[ -n $(cut -d: -f1 /etc/group | grep -w nixbld) ]]; then
5 echo "The nixbld group already exists. This install cannot proceed."
6 exit 1
7 fi
8
9 for i in {1..10}; do
10 if [[ -n $(cut -d: -f1 /etc/passwd | grep -w nixbld$i) ]]; then
11 echo "The nixbld$i user already exists. This install cannot proceed."
12 exit 1
13 fi
14 done
15}
16
17create_users () {
18 # Create a nixbld group.
19 groupadd -r nixbld
20
21 # Create 10 nixbld{i} users
22 for i in {1..10}; do
23 useradd -g nixbld -G nixbld -r -N -M -d /var/empty -s /sbin/nologin nixbld$i
24 done
25}
26
27delete_users() {
28 # Remove the users
29 for i in {1..10}; do
30 userdel nixbld$i
31 done
32
33 # Remove the group
34 groupdel nixbld
35}
36
37create_store() {
38 # Create nix folders and set permissions
39 mkdir -p /nix/store
40 chown root.nixbld /nix/store
41 chmod 1775 /nix/store
42 mkdir -p -m 1777 /nix/var/nix/gcroots/per-user
43 mkdir -p -m 1777 /nix/var/nix/profiles/per-user
44}
45
46restore_store() {
47 # Restore folder permissions
48 chmod 755 /nix/store
49 chown root.root /nix/store
50}
51
52init_channels() {
53 # Initialize default nix channel
54 echo "Initializing default nix channel"
55 source /etc/profile.d/nix.sh
56 nix-channel --update
57}
58
59daemon_info() {
60 echo "To start the nix daemon, execute one of the following:"
61 echo
62 echo " systemctl enable nix-daemon.socket # Sets the daemon to start on next boot"
63 echo " systemctl enable --now nix-daemon.socket # Starts now and on next boot too"
64 echo
65 echo "Also, if this is a new install, you need to start a new login shell or otherwise"
66 echo
67 echo " source /etc/profile.d/nix.sh"
68 echo " source /etc/profile.d/nix-daemon.sh"
69 echo
70 echo "Once your environment is set-up, you will need to add some channels. You can see how"
71 echo "to do that here:"
72 echo " https://nixos.org/nix/manual/#sec-channels"
73}
74
75post_install() {
76 create_users
77 create_store
78 init_channels
79 daemon_info
80}
81
82pre_upgrade() {
83 systemctl stop nix-daemon.socket
84 systemctl stop nix-daemon
85}
86
87post_upgrade() {
88 delete_users
89 create_users
90 create_store
91 daemon_info
92}
93
94pre_remove() {
95 restore_store
96 delete_users
97}