diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2019-02-14 14:23:37 +0100 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2019-02-14 14:23:37 +0100 |
commit | 0e3d6dde1abc6a21490653ae17bf43c047c4b3c0 (patch) | |
tree | 0c0c40c55dfcc12f0bf807cf9e288f1d17020b3c /nix/nix.install | |
parent | 9ee19ca18f89e649f8c6500079b86bd3b6912014 (diff) | |
parent | ed04b08b9b4e7c4b8c882450536895592341edcc (diff) | |
download | AUR-0e3d6dde1abc6a21490653ae17bf43c047c4b3c0.tar.gz AUR-0e3d6dde1abc6a21490653ae17bf43c047c4b3c0.tar.zst AUR-0e3d6dde1abc6a21490653ae17bf43c047c4b3c0.zip |
Add 'nix/' from commit 'ed04b08b9b4e7c4b8c882450536895592341edcc'
git-subtree-dir: nix
git-subtree-mainline: 9ee19ca18f89e649f8c6500079b86bd3b6912014
git-subtree-split: ed04b08b9b4e7c4b8c882450536895592341edcc
Diffstat (limited to 'nix/nix.install')
-rw-r--r-- | nix/nix.install | 97 |
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 | |||
2 | pre_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 | |||
17 | create_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 | |||
27 | delete_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 | |||
37 | create_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 | |||
46 | restore_store() { | ||
47 | # Restore folder permissions | ||
48 | chmod 755 /nix/store | ||
49 | chown root.root /nix/store | ||
50 | } | ||
51 | |||
52 | init_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 | |||
59 | daemon_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 | |||
75 | post_install() { | ||
76 | create_users | ||
77 | create_store | ||
78 | init_channels | ||
79 | daemon_info | ||
80 | } | ||
81 | |||
82 | pre_upgrade() { | ||
83 | systemctl stop nix-daemon.socket | ||
84 | systemctl stop nix-daemon | ||
85 | } | ||
86 | |||
87 | post_upgrade() { | ||
88 | delete_users | ||
89 | create_users | ||
90 | create_store | ||
91 | daemon_info | ||
92 | } | ||
93 | |||
94 | pre_remove() { | ||
95 | restore_store | ||
96 | delete_users | ||
97 | } | ||