mirror of https://gitlab.crans.org/nounous/nixos
100 lines
3.5 KiB
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";
|
|
}
|