nixos/xonsh: source NixOS environment

Without doing that, xonsh is unusable as login shell

Changed files
+26 -1
nixos
modules
programs
+26 -1
nixos/modules/programs/xonsh.nix
···
config = mkIf cfg.enable {
-
environment.etc.xonshrc.text = cfg.config;
environment.systemPackages = [ cfg.package ];
···
config = mkIf cfg.enable {
+
environment.etc.xonshrc.text = ''
+
# /etc/xonshrc: DO NOT EDIT -- this file has been generated automatically.
+
+
+
if not ''${...}.get('__NIXOS_SET_ENVIRONMENT_DONE'):
+
# The NixOS environment and thereby also $PATH
+
# haven't been fully set up at this point. But
+
# `source-bash` below requires `bash` to be on $PATH,
+
# so add an entry with bash's location:
+
$PATH.add('${pkgs.bash}/bin')
+
+
# Stash xonsh's ls alias, so that we don't get a collision
+
# with Bash's ls alias from environment.shellAliases:
+
_ls_alias = aliases.pop('ls', None)
+
+
# Source the NixOS environment config.
+
source-bash "${config.system.build.setEnvironment}"
+
+
# Restore xonsh's ls alias, overriding that from Bash (if any).
+
if _ls_alias is not None:
+
aliases['ls'] = _ls_alias
+
del _ls_alias
+
+
+
${cfg.config}
+
'';
environment.systemPackages = [ cfg.package ];