{ 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"; }