aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmach12
-rw-r--r--python/servo/bootstrap.py6
2 files changed, 17 insertions, 1 deletions
diff --git a/mach b/mach
index bfee69d7326..e0073fc7ae7 100755
--- a/mach
+++ b/mach
@@ -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)
diff --git a/python/servo/bootstrap.py b/python/servo/bootstrap.py
index 9c94d7cfae9..21fcd967693 100644
--- a/python/servo/bootstrap.py
+++ b/python/servo/bootstrap.py
@@ -383,6 +383,7 @@ def get_linux_distribution():
'debian gnu/linux',
'fedora',
'void',
+ 'nixos',
]:
raise Exception('mach bootstrap does not support %s, please file a bug' % distrib)
@@ -398,6 +399,11 @@ def bootstrap(context, force=False, specific=None):
elif "linux-gnu" in host_triple():
distrib, version = get_linux_distribution()
+ if distrib.lower() == 'nixos':
+ print('NixOS does not need bootstrap')
+ print('just run ./mach build')
+ return
+
context.distro = distrib
context.distro_version = version
bootstrapper = LINUX_SPECIFIC_BOOTSTRAPPERS.get(specific, linux)