nixos/hosts/vm/nextcloud/default.nix

100 lines
3.5 KiB
Nix

{ pkgs, config, ... }:
{
imports = [
./hardware-configuration.nix
./nextcloud.nix
];
networking.hostName = "nextcloud";
boot.loader.grub.devices = [ "/dev/sda" ];
services.autofs =
let
autoMaster = pkgs.writeScript "home-nextcloud" ''
#!/usr/bin/env bash
USER=$(echo $1 | sed "s/_[1-9]*$//")
UHOME=/home-adh/$USER
USERID=$(ldapsearch -LLL -b "dc=crans,dc=org" -H ldap://172.16.10.157 -D "cn=admin,dc=crans,dc=org" -y ${config.age.secrets.nextcloud_ldap_pass.path} "uid=$USER" uidNumber | grep uidNumber | awk '{print $2}')
UGROUP=$(ldapsearch -LLL -b "dc=crans,dc=org" -H ldap://172.16.10.157 -D "cn=admin,dc=crans,dc=org" -y ${config.age.secrets.nextcloud_ldap_pass.path} "uid=$USER" gidNumber | grep gidNumber | awk '{print $2}')
# On quitte si l'utilisateur $USER n'existe pas
if [ -z "$USERID" ]; then
logger -p local0.error -t autofs "user $USER n'existe pas"
exit 1
fi
# Rafraîchi les stats du dossier
ls ''\${UHOME}/NextCloud/ &>/dev/null || /bin/ls ''\${UHOME} &>/dev/null
# Création du lien symbolique Nextcloud s'il n'existe pas
if [ ! -e "''\${UHOME}/NextCloud" ] || ! (
find ''\${UHOME}/NextCloud/ -maxdepth 0 -user $USERID -group ''\${UGROUP} |
grep -q ''\${UHOME}/NextCloud/
); then
if [ ! -e "''\${UHOME}/NextCloud" ]; then
ln -fs OwnCloud ''\${UHOME}/NextCloud
fi
if [ ! -e "''\${UHOME}/NextCloud" ] || ! (
find ''\${UHOME}/NextCloud/ -maxdepth 0 -user $USERID -group ''\${UGROUP} |
grep -q ''\${UHOME}/NextCloud/
); then
logger -p local0.error -t autofs "impossible de créer le lien symbolique ''\${UHOME}/NextCloud"
exit 1
fi
logger -p local0.info -t autofs "Lien symbolique ''\${UHOME}/NextCloud -> ''\${UHOME}/OwnCloud créé"
fi
# Création du dossier OwnCloud s'il n'existe pas ou n'appartient pas a l'utilisateur
if [ ! -d "''\${UHOME}/OwnCloud" ] || ! (
find ''\${UHOME}/OwnCloud/ -maxdepth 0 -user $USERID -group ''\${UGROUP} |
grep -q ''\${UHOME}/OwnCloud/
); then
if [ ! -d "''\${UHOME}/OwnCloud" ]; then
mkdir ''\${UHOME}/OwnCloud
fi
chmod 700 ''\${UHOME}/OwnCloud &&
chown $USERID:''\${UGROUP} ''\${UHOME}/OwnCloud
if [ ! -d "''\${UHOME}/OwnCloud" ] || ! (
find ''\${UHOME}/OwnCloud/ -maxdepth 0 -user $USERID -group ''\${UGROUP} |
grep -q ''\${UHOME}/OwnCloud/
); then
logger -p local0.error -t autofs "impossible de créer le dossier ''\${UHOME}/OwnCloud"
exit 1
fi
logger -p local0.info -t autofs "Dossier ''\${UHOME}/OwnCloud créé"
fi
chmod 750 /home-nextcloud &&
chown nextcloud:nextcloud /home-nextcloud &&
echo "-fstype=fuse.bindfs,map=$USERID/nextcloud:@$UGROUP/@nextcloud,resolve-symlinks,allow_other :''\${UHOME}/NextCloud"
'';
in
{
enable = true;
autoMaster = ''
/home-nextcloud ${autoMaster} -t60
'';
};
programs.fuse.userAllowOther = true;
systemd.services.autofs = {
path = with pkgs; [
bash
bindfs
gawk
logger
openldap
];
};
environment.systemPackages = with pkgs; [ bindfs ];
system.stateVersion = "25.05";
}