Alias de commande sur NixOS
NixOS permet de déclarer des alias de commande directement dans configuration.nix, de façon reproductible et versionnée.
Ces options s’ajoutent à l’intérieur du bloc principal de configuration.nix, comme toute autre option.
environment.shellAliases
Disponibles dans tous les shells, pour tous les utilisateurs :
{ config, pkgs, ... }:
{
# ... reste de la configuration ...
environment.shellAliases = {
docker = "podman";
docker-compose = "podman-compose";
dc = "podman-compose";
};
}
Alias par shell
Pour des alias spécifiques à un shell uniquement :
{ config, pkgs, ... }:
{
# ... reste de la configuration ...
programs.bash.shellAliases = {
docker = "podman";
docker-compose = "podman-compose";
};
programs.zsh.shellAliases = {
docker = "podman";
docker-compose = "podman-compose";
};
}
Cas d’usage 1 : Podman à la place de Docker
NixOS propose une option native qui crée automatiquement la compatibilité Docker → Podman au niveau du binaire, sans alias shell :
{ config, pkgs, ... }:
{
# ... reste de la configuration ...
virtualisation.podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
environment.systemPackages = with pkgs; [
podman-compose
];
environment.shellAliases = {
docker-compose = "podman-compose";
dc = "podman-compose";
};
}
dockerCompat = true génère un symlink docker → podman dans le PATH système. C’est la méthode recommandée car elle s’applique aussi aux scripts qui cherchent le binaire docker directement.
Cas d’usage 2 : Komodo à la place de Portainer
Komodo est une alternative à Portainer pour la gestion des conteneurs. Des alias sur les commandes de gestion du service permettent de garder les mêmes réflexes :
{ config, pkgs, ... }:
{
# ... reste de la configuration ...
environment.shellAliases = {
komodo-logs = "journalctl -u komodo -f";
komodo-status = "systemctl status komodo";
};
}
Appliquer les modifications
sudo nixos-rebuild switch
Vérifier les alias actifs
Dans un nouveau shell après rebuild :
alias
Vérifier le binaire utilisé :
which docker
# -> /run/current-system/sw/bin/docker (symlink vers podman avec dockerCompat)
type docker
# -> docker is aliased to 'podman'
Résumé
| Méthode | Portée | Usage |
|---|---|---|
environment.shellAliases | Tous les shells, tous les utilisateurs | Alias généraux |
programs.bash.shellAliases | Bash uniquement | Alias bash-spécifiques |
programs.zsh.shellAliases | Zsh uniquement | Alias zsh-spécifiques |
virtualisation.podman.dockerCompat | Système entier (symlink) | Remplacement complet de Docker |