Files
nixos-workstations/modules/yubikey-first-login.nix
T

93 lines
2.6 KiB
Nix

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