summaryrefslogtreecommitdiffstats
path: root/krebs/4lib/infest/prepare.sh
blob: 07c00c3a5515cdf67faad36144d0a8d7e9e7002e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#! /bin/sh
set -efu

prepare() {(
  if test -e /etc/os-release; then
    . /etc/os-release
    case $ID in
      centos)
        case $VERSION_ID in
          7)
            prepare_centos7 "$@"
            exit
            ;;
        esac
        ;;
    esac
  fi
  echo "$0 prepare: unknown OS" >&2
  exit -1
)}

prepare_centos7() {
  type bzip2 2>/dev/null || yum install -y bzip2
  type git   2>/dev/null || yum install -y git
  type rsync 2>/dev/null || yum install -y rsync
  if ! getent group nixbld >/dev/null; then
    groupadd -g 30000 -r nixbld
  fi
  for i in `seq 1 10`; do
    if ! getent passwd nixbld$i 2>/dev/null; then
      useradd \
        -c "CentOS Nix build user $i" \
        -d /var/empty \
        -g 30000 \
        -G 30000 \
        -l \
        -M \
        -s /sbin/nologin \
        -u $(expr 30000 + $i) \
        nixbld$i
      rm -f /var/spool/mail/nixbld$i
    fi
  done

  #
  # mount install directory
  #

  if ! mount | grep -Fq '/dev/mapper/centos-root on /mnt type xfs'; then
    mkdir -p /newshit
    mount --bind /newshit /mnt
  fi

  if ! mount | grep -Fq '/dev/sda1 on /mnt/boot type xfs'; then
    mkdir -p /mnt/boot
    mount /dev/sda1 /mnt/boot
  fi

  mount | grep 'on /mnt\>' >&2

  #
  # prepare install directory
  #

  mkdir -p /mnt/etc/nixos
  mkdir -m 0555 -p /mnt/var/empty

  if ! mount | grep -Fq '/dev/mapper/centos-root on /mnt/root type xfs'; then
    mkdir -p /mnt/root
    mount --bind /root /mnt/root
  fi
}

prepare "$@"