Skip to main content

Alias de commande sur NixOS

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éthodePortéeUsage
environment.shellAliasesTous les shells, tous les utilisateursAlias généraux
programs.bash.shellAliasesBash uniquementAlias bash-spécifiques
programs.zsh.shellAliasesZsh uniquementAlias zsh-spécifiques
virtualisation.podman.dockerCompatSystème entier (symlink)Remplacement complet de Docker