diff --git a/src/core/mainloop.nim b/src/core/mainloop.nim index 8c44972..214362c 100644 --- a/src/core/mainloop.nim +++ b/src/core/mainloop.nim @@ -29,7 +29,6 @@ proc mainLoop*(logger: Logger) = logger.info("System initialization complete, going idle") logger.switchToFile() try: - discard execShellCmd("/bin/login -f root") # TODO: Use a service while true: sleepSeconds(30) except: diff --git a/src/core/services.nim b/src/core/services.nim index 8d836bb..1883088 100644 --- a/src/core/services.nim +++ b/src/core/services.nim @@ -292,7 +292,7 @@ proc startService(logger: Logger, service: Service) = var arguments = split.words let progName = arguments[0] arguments = arguments[1..^1] - process = startProcess(progName, workingDir=service.workDir, args=arguments) + process = startProcess(progName, workingDir=service.workDir, args=arguments, options={poParentStreams}) if service.supervised and service.kind != Oneshot: var pid = posix.fork() if pid == 0: diff --git a/src/main.nim b/src/main.nim index 3f9448f..f3cc8e4 100644 --- a/src/main.nim +++ b/src/main.nim @@ -59,10 +59,16 @@ proc addStuff = exec="/bin/true", supervised=true, restart=Always, restartDelay=5, runlevel=Boot, workDir="/", kind=Simple, depends=(@[newDependency(Other, errorer)]), provides=(@[])) + var shell = newService(name="login", description="A simple login shell", kind=Simple, + getCurrentDir(), runlevel=Boot, exec="/bin/login -f root", + supervised=true, restart=Always, restartDelay=0, depends=(@[]), provides=(@[]) + ) addService(errorer) addService(echoer) addService(exiter) addService(test) + addService(shell) + proc main(logger: Logger, mountDisks: bool = true, fstab: string = "/etc/fstab", setHostname: bool = true, workerCount: int = 1) =