perl -pne 's%(?:(COMP_CONFIGURE_HINTS|COMP_TAR_INTERNAL_PATHS)=1?)%${1}=1%' -i "$PWD/root/etc/sysconfig/bash-completion"
#Disable gpg agent
-perl -pne 's%(?:(START_GPGAGENT|START_GPGAGENT_SH)=(?:"?(no|yes)"?)?)%${1}="no"%' -i "$PWD/root/etc/sysconfig/gnupg2"
+#XXX: moved to a user systemd service
+#perl -pne 's%(?:(START_GPGAGENT|START_GPGAGENT_SH)=(?:"?(no|yes)"?)?)%${1}="no"%' -i "$PWD/root/etc/sysconfig/gnupg2"
#Locale config
cat << EOF > "$PWD/root/etc/vconsole.conf"
EOF
fi
+#Mysql
+mkdir -p "$PWD/root/var/lib/mysql"
+
+#Mail
+mkdir -p "$PWD/root/var/spool/mail"
+
#Fstab
-#XXX: grub-legacy don't support ext4 and xfs V5 file format for /boot
cat << EOF > "$PWD/root/etc/fstab"
-UUID=${BOOTUUID} /boot ext3 defaults,noatime 1 2
-UUID=${SLASHUUID} / btrfs defaults,relatime 1 1
-UUID=${SWAPAUUID} none swap sw 0 0
-UUID=${SWAPBUUID} none swap sw 0 0
-UUID=${DATAUUID} /media btrfs defaults,relatime,nofail 1 2
+UUID=${BOOTUUID} /boot ext3 defaults,noatime 1 2
+UUID=${DATAUUID} / btrfs subvol=/slash,defaults,relatime 1 1
+UUID=${SWAPAUUID} none swap sw 0 0
+UUID=${SWAPBUUID} none swap sw 0 0
+UUID=${DATAUUID} /home btrfs subvol=/home,defaults,relatime 1 1
+UUID=${DATAUUID} /var/lib/mysql btrfs subvol=/mysql,defaults,relatime 1 1
+UUID=${DATAUUID} /var/spool/mail btrfs subvol=/mail,defaults,relatime 1 1
proc /proc proc defaults 0 0
EOF
-# Copy grub files
-cp -f $PWD/root/lib/grub/${ARCH}-mageia/{e2fs_stage1_5,stage{1,2}} $PWD/root/boot/grub/
-
#Crypttab
+#XXX: Don't forget to add option nofail,noauto for every devices requiring manual unlocking
cat << EOF > "$PWD/root/etc/crypttab"
-${SLASHNAME} UUID=${LUKSSLASHUUID}
-${DATANAME} UUID=${LUKSDATAUUID} - nofail,noauto
+${DATANAME} UUID=${LUKSDATAUUID}
EOF
#Set resolv.conf
chroot $PWD/root adduser -m "$USERLOGIN"
echo -n "$USERPASS" | chroot $PWD/root passwd "$USERLOGIN" --stdin
-#Grub file
-cat << EOF > $PWD/root/boot/grub/menu.lst
-timeout 5
-color black/cyan yellow/cyan
-gfxmenu (hd0,0)/gfxmenu
-default 0
-
-title linux
-root (hd0,0)
-kernel /vmlinuz-server BOOT_IMAGE=linux root=UUID=$SLASHUUID PROFILE=default splash=verbose vga=793
-initrd /initrd-server.img
-
-title failsafe
-root (hd0,0)
-kernel /vmlinuz-server BOOT_IMAGE=failsafe root=UUID=$SLASHUUID rd.luks.uuid=$LUKSSLASHUUID failsafe
-initrd /initrd-server.img
-EOF
-#Update grub fx menu
-chroot $PWD/root grub-gfxmenu --lang fr --update-theme --update-gfxmenu
-
-#Grub device.map
-cat << EOF > $PWD/root/boot/grub/device.map
-(hd0) /dev/sda
-EOF
+# Fix grub config
+perl -pne 's/^GRUB_TIMEOUT=[0-9]+$/GRUB_TIMEOUT=1/' -i $PWD/root/etc/default/grub
#Shorewall
cat << EOF >> $PWD/root/etc/shorewall/zones
#XXX: forced because msec decides otherwise
perl -pne 's%^PermitRootLogin .*%PermitRootLogin yes%' -i "$PWD/root/etc/ssh/sshd_config"
-# Add rsa key if available
-#XXX: dsa is unsupported anymore
-if [ -e "$HOME/.ssh/id_rsa.pub" ]; then
- [ ! -d "$PWD/root/root/.ssh" ] && mkdir -m 0700 "$PWD/root/root/.ssh"
- cp -f "$HOME/.ssh/id_rsa.pub" "$PWD/root/root/.ssh/authorized_keys"
+# Prevent btmp warning
+cat << EOF > "$PWD/root/etc/tmpfiles.d/var.conf"
+# See tmpfiles.d(5) for details
+
+# Prevent msec warning about enforcing permissions
+f /var/log/btmp 0600 root utmp -
+EOF
+
+# Authorized keys
+if [ -e "$HOME/.ssh/id_rsa.pub" -o -e "$HOME/.ssh/id_ed25519.pub" ]; then
+ mkdir -m 0700 "$PWD/root/root/.ssh"
+ touch "$PWD/root/root/.ssh/authorized_keys"
+ chmod u=rw,go=r "$PWD/root/root/.ssh/authorized_keys"
+
+ # Add rsa key if available
+ if [ -e "$HOME/.ssh/id_rsa.pub" ]; then
+ cat "$HOME/.ssh/id_rsa.pub" >> "$PWD/root/root/.ssh/authorized_keys"
+ fi
+
+ # Add ed25519 key if available
+ if [ -e "$HOME/.ssh/id_ed25519.pub" ]; then
+ cat "$HOME/.ssh/id_ed25519.pub" >> "$PWD/root/root/.ssh/authorized_keys"
+ fi
fi
#TODO ntp /etc/systemd/timesyncd.conf
+# Force enable systemd-networkd.service
+chroot "$PWD/root" /usr/bin/systemctl enable systemd-networkd.service
+
+# Force enable systemd-resolved.service
+chroot "$PWD/root" /usr/bin/systemctl enable systemd-resolved.service
+
# Cleanup tmp and run
rm -fr $PWD/root/tmp/* $PWD/root/run/*