mach-nix/mach_nix/ensure_nix.py

39 lines
1.1 KiB
Python
Raw Permalink Normal View History

import os
import subprocess as sp
import sys
import urllib.request
def is_nix_available():
nix_installed = False
try:
sp.run(['nix', '--version'], check=True, capture_output=True)
nix_installed = True
except FileNotFoundError:
pass
return nix_installed
def ensure_nix():
if is_nix_available():
return
print("The nix package manager is required! Install it now? [Y/n]: ", end='')
try:
answer = input()
if not answer or answer[0].lower() != 'y':
exit(1)
except KeyboardInterrupt:
exit(1)
with urllib.request.urlopen('https://nixos.org/nix/install') as f:
install_script = f.read()
read, write = os.pipe()
os.write(write, install_script)
os.close(write)
proc = sp.run('bash', stdin=read)
if proc.returncode:
print("Error while installing nix. Please check https://nixos.org/download.html for manual installation.",
file=sys.stderr)
exit(1)
print('Please activate nix like described above, then re-run mach-nix.')
exit(0)