{ pkgs, ... }: let yubikeyFirstLogin = pkgs.writeShellScript "yubikey-first-login" '' #!/usr/bin/env bash set -u # Ce mécanisme concerne uniquement Alice. current_user="$(${pkgs.coreutils}/bin/id -un)" if [ "$current_user" != "alice" ]; then exit 0 fi # Marqueur indiquant que le changement initial du PIN # a déjà été effectué avec succès. state_dir="$HOME/.local/state/nixos-workstations" marker="$state_dir/yubikey-pin-initialized" # Si Alice a déjà effectué l'initialisation, # il n'y a plus rien à faire. if [ -e "$marker" ]; then exit 0 fi echo echo "======================================================" echo " INITIALISATION DE VOTRE YUBIKEY" echo "======================================================" echo echo "Vous devez modifier le PIN temporaire de votre YubiKey." echo echo "Munissez-vous du PIN temporaire qui vous a été communiqué." echo echo "Vous allez devoir saisir :" echo echo " 1. le PIN actuel temporaire ;" echo " 2. votre nouveau PIN personnel ;" echo " 3. une confirmation de votre nouveau PIN." echo echo "Le nouveau PIN ne sera pas enregistré sur le poste." echo if ${pkgs.yubikey-manager}/bin/ykman fido access change-pin; then ${pkgs.coreutils}/bin/mkdir -p "$state_dir" ${pkgs.coreutils}/bin/touch "$marker" echo echo "======================================================" echo "Le PIN de votre YubiKey a été modifié avec succès." echo "======================================================" echo echo "Cette procédure ne sera plus affichée." echo sleep 5 exit 0 else echo echo "======================================================" echo "Le changement du PIN n'a pas été effectué." echo "======================================================" echo echo "Cette procédure sera reproposée lors de votre" echo "prochaine ouverture de session." echo echo "Appuyez sur Entrée pour fermer cette fenêtre." read -r exit 1 fi ''; in { # Lancement automatique après ouverture de la session graphique. environment.etc."xdg/autostart/yubikey-first-login.desktop".text = '' [Desktop Entry] Type=Application Name=Initialisation YubiKey Comment=Initialisation du PIN personnel de la YubiKey Exec=${pkgs.kdePackages.konsole}/bin/konsole -e ${yubikeyFirstLogin} OnlyShowIn=KDE; NoDisplay=true StartupNotify=false ''; }