| 
									
										
										
										
											2016-07-21 00:55:36 +02:00
										 |  |  | # This module defines global configuration for the xonsh. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cfg = config.programs.xonsh; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   options = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     programs.xonsh = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       enable = mkOption { | 
					
						
							|  |  |  |         default = false; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							| 
									
										
										
										
											2017-09-21 00:47:57 +02:00
										 |  |  |           Whether to configure xonsh as an interactive shell. | 
					
						
							| 
									
										
										
										
											2016-07-21 00:55:36 +02:00
										 |  |  |         '';
 | 
					
						
							|  |  |  |         type = types.bool; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       package = mkOption { | 
					
						
							|  |  |  |         type = types.package; | 
					
						
							| 
									
										
										
										
											2019-07-31 23:28:13 +00:00
										 |  |  |         default = pkgs.xonsh; | 
					
						
							| 
									
										
										
										
											2016-07-21 00:55:36 +02:00
										 |  |  |         example = literalExample "pkgs.xonsh.override { configFile = \"/path/to/xonshrc\"; }"; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							|  |  |  |           xonsh package to use. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       config = mkOption { | 
					
						
							|  |  |  |         default = ""; | 
					
						
							|  |  |  |         description = "Control file to customize your shell behavior."; | 
					
						
							|  |  |  |         type = types.lines; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf cfg.enable { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-21 23:43:37 +02:00
										 |  |  |     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} | 
					
						
							|  |  |  |     '';
 | 
					
						
							| 
									
										
										
										
											2016-07-21 00:55:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-31 23:28:13 +00:00
										 |  |  |     environment.systemPackages = [ cfg.package ]; | 
					
						
							| 
									
										
										
										
											2016-07-21 00:55:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     environment.shells = | 
					
						
							|  |  |  |       [ "/run/current-system/sw/bin/xonsh" | 
					
						
							| 
									
										
										
										
											2019-07-31 23:28:13 +00:00
										 |  |  |         "${cfg.package}/bin/xonsh" | 
					
						
							| 
									
										
										
										
											2016-07-21 00:55:36 +02:00
										 |  |  |       ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |