add NixOS support to mach and automatically re-launch mach in nix-shell

This commit is contained in:
Maciej Krüger 2021-05-31 17:57:43 +02:00
parent 2cade89ede
commit 8e48b6fd74
No known key found for this signature in database
GPG key ID: 0D948CE19CF49C5F
2 changed files with 17 additions and 1 deletions

12
mach
View file

@ -106,4 +106,14 @@ if __name__ == '__main__':
orig_command_line = forking.get_command_line
forking.get_command_line = my_get_command_line
main(sys.argv)
if os.path.exists('/etc/NIXOS') and not 'IN_NIX_SHELL' in os.environ: # we're on a nixOS system, need to run mach in nix-shell
import subprocess
from shlex import quote
mach_dir = os.path.abspath(os.path.dirname(__file__))
try:
# sys argv already contains the ./mach part, so we just need to pass it as-is
subprocess.Popen(['nix-shell', mach_dir + '/etc/shell.nix', '--run', ' '.join(map(quote, sys.argv))]).wait()
except KeyboardInterrupt:
sys.exit(0)
else:
main(sys.argv)