mdevuan/oobe

109 lines
2.6 KiB
Python

#!/usr/bin/env python3
# This script is ran when booting into the OS, and the setup isn't finished
import os
import traceback
import subprocess
debug = False
os.environ["PATH"] = "/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
def procWait(proc):
rtn = proc.wait()
if debug: print(rtn)
if rtn != 0: raise processError
def call(*args,**kwargs):
if debug: print(str(args[0]))
proc = subprocess.Popen(*args,**kwargs)
procWait(proc)
def mchoice(choices):
while True:
choice = input("Choice: ").lower()
if not choice in choices: continue
return choice
def main():
while True:
print("Welcome to Devuan Linux.")
print("1: Finish installation")
print("2: Clone to other device")
print("3: Open bash")
print("4: Shut down")
choice = mchoice(["1","2","3","4"])
if choice == "1":
call(["apt","install","keyboard-configuration","console-setup","locales","tzdata","--yes"])
#call(["dpkg-reconfigure","keyboard-configuration"])
#call(["setupcon"])
#call(["dpkg-reconfigure","console-setup"])
#call(["setupcon"])
call(["dpkg-reconfigure","locales"])
call(["dpkg-reconfigure","tzdata"])
print("")
hostname = input("Hostname: ")
with open("/etc/hosts","w",encoding="utf-8") as fh:
fh.write("""\
127.0.0.1 localhost
127.0.1.1 $HOSTNAME
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters\
""".replace("$HOSTNAME",hostname)
)
with open("/etc/hostname","w",encoding="utf-8") as fh:
fh.write(hostname)
os.environ["HOSTNAME"] = hostname
print("")
print("Configure your network now, using nmtui? (y/n)")
if mchoice(["y","n"]) == "y": call(["nmtui"])
print("")
call(["groupadd","-f","sudo"])
username = False
while True:
username = input("First user (Administrator): ").lower().strip(" ")
if username == "root": continue
try:
call(["id","-u",username])
except:
try:
call(["adduser",username])
except:
try:
call(["deluser","--remove-home",username])
except:
continue
try:
call(["usermod","-a","-G","sudo",username])
except:
print("Warning: Couldn't add user to sudo group!")
break
print("")
print("Booting into new environment ...")
os.remove("/bin/login")
os.rename("/bin/login.bak","/bin/login")
return
if choice == "2":
print("Not implemented.")
continue
if choice == "3":
call(["bash"])
return
if choice == "4":
call(["poweroff"])
return
try:
main()
except:
print(traceback.format_exc())
input("Press RETURN to quit.")