From 7923aa8942b55884320ef2428417e3ee4b121613 Mon Sep 17 00:00:00 2001 From: Minteck Date: Mon, 28 Nov 2022 17:31:34 +0100 Subject: Initial commit --- StartupItems/001--MistyOSRoot.js | 3 +++ StartupItems/002--Logs.js | 13 +++++++++++++ StartupItems/100--Preferences.js | 15 +++++++++++++++ StartupItems/200--Hostname.js | 6 ++++++ StartupItems/201--Keyboard.js | 3 +++ StartupItems/999--Shell.js | 8 ++++++++ 6 files changed, 48 insertions(+) create mode 100644 StartupItems/001--MistyOSRoot.js create mode 100644 StartupItems/002--Logs.js create mode 100644 StartupItems/100--Preferences.js create mode 100644 StartupItems/200--Hostname.js create mode 100644 StartupItems/201--Keyboard.js create mode 100644 StartupItems/999--Shell.js (limited to 'StartupItems') diff --git a/StartupItems/001--MistyOSRoot.js b/StartupItems/001--MistyOSRoot.js new file mode 100644 index 0000000..2e000b3 --- /dev/null +++ b/StartupItems/001--MistyOSRoot.js @@ -0,0 +1,3 @@ +log("MistyCore-Startup-MistyOSRoot", "Attempting to mount root read-write..."); +require('child_process').execFileSync("/System/Binaries/mount", [ "-o", "remount,rw", "/" ]); +log("MistyCore-Startup-MistyOSRoot", "Mounted root read-write"); \ No newline at end of file diff --git a/StartupItems/002--Logs.js b/StartupItems/002--Logs.js new file mode 100644 index 0000000..fccd1d5 --- /dev/null +++ b/StartupItems/002--Logs.js @@ -0,0 +1,13 @@ +log("MistyCore-Startup-Logs", "Rotating journal..."); +const fs = require('fs'); + +let date = new Date().toISOString().replaceAll(":", "-"); +if (!fs.existsSync(systemRoot + "/Logs")) fs.mkdirSync(systemRoot + "/Logs"); +if (!fs.existsSync(systemRoot + "/Logs/LaunchDaemons")) fs.mkdirSync(systemRoot + "/Logs/LaunchDaemons"); +_originalSystemLog = systemLog; +if (fs.existsSync(systemLog)) fs.copyFileSync(systemLog, systemRoot + "/Logs/" + date + ".log"); +global.systemLog = systemRoot + "/Logs/" + date + ".log"; +if (!fs.existsSync(systemLog)) fs.writeFileSync(systemLog, ""); +fs.writeFileSync(systemRoot + "/../Volumes/VM/SystemLog", systemLog); + +log("MistyCore-Startup-Logs", "Done rotating journal"); \ No newline at end of file diff --git a/StartupItems/100--Preferences.js b/StartupItems/100--Preferences.js new file mode 100644 index 0000000..3c8a79b --- /dev/null +++ b/StartupItems/100--Preferences.js @@ -0,0 +1,15 @@ +log("MistyCore-Startup-Preferences", "Verifying system preferences..."); +const fs = require('fs'); + +if (!fs.existsSync(systemRoot + "/Preferences")) fs.mkdirSync(systemRoot + "/Preferences"); +if (!fs.existsSync(systemRoot + "/Preferences/Hostname")) fs.writeFileSync(systemRoot + "/Preferences/Hostname", "MistyOS"); +if (!fs.existsSync(systemRoot + "/Preferences/Keyboard")) fs.writeFileSync(systemRoot + "/Preferences/Keyboard", "qwerty"); +fs.writeFileSync(systemRoot + "/Preferences/os-release", ` +NAME="MistyOS" +VERSION="${fs.readFileSync(systemRoot + "/MistyOSVersion").toString().trim()}" +PRETTY_NAME="MistyOS ${fs.readFileSync(systemRoot + "/MistyOSVersion").toString().trim()}" +ID=mistyos +LOGO=mistyos-icon +`); + +log("MistyCore-Startup-Preferences", "System preferences are OK"); \ No newline at end of file diff --git a/StartupItems/200--Hostname.js b/StartupItems/200--Hostname.js new file mode 100644 index 0000000..9148c7d --- /dev/null +++ b/StartupItems/200--Hostname.js @@ -0,0 +1,6 @@ +const fs = require("fs"); +log("MistyCore-Startup-Hostname", "Setting hostname to " + require('fs').readFileSync(systemRoot + "/Preferences/Hostname").toString().trim()); +require('child_process').execFileSync("/System/Binaries/hostname", [ "--", require('fs').readFileSync(systemRoot + "/Preferences/Hostname").toString().trim() ]); +global.hostname = require('fs').readFileSync(systemRoot + "/Preferences/Hostname").toString().trim(); +fs.writeFileSync(systemRoot + "/../Volumes/VM/Hostname", hostname); +log("MistyCore-Startup-Hostname", "Set hostname successfully"); \ No newline at end of file diff --git a/StartupItems/201--Keyboard.js b/StartupItems/201--Keyboard.js new file mode 100644 index 0000000..7e3dbcd --- /dev/null +++ b/StartupItems/201--Keyboard.js @@ -0,0 +1,3 @@ +log("MistyCore-Startup-Keyboard", "Installing keyboard layout..."); +require('child_process').execFileSync("/System/Binaries/sh", [ "-c", "loadkeys < /System/Library/Keyboards/" + require('fs').readFileSync(systemRoot + "/Preferences/Keyboard").toString().trim().replace(/[^a-z\d]/gm, "") + ".kmap" ]); +log("MistyCore-Startup-Keyboard", "Installed keyboard layout: " + require('fs').readFileSync(systemRoot + "/Preferences/Keyboard").toString().trim().replace(/[^a-z\d]/gm, "")); \ No newline at end of file diff --git a/StartupItems/999--Shell.js b/StartupItems/999--Shell.js new file mode 100644 index 0000000..ee33c6a --- /dev/null +++ b/StartupItems/999--Shell.js @@ -0,0 +1,8 @@ +const fs = require('fs'); + +log("MistyCore-Startup-Shell", "Starting user interface..."); +if (!fs.existsSync("/User")) fs.mkdirSync("/User"); +process.env.HOME = "/User"; +global.uiProcess = require('child_process').spawn("/System/Library/Frameworks/NodeJS/MistyRuntime", [ "/System/Library/MistyCore/shell.js" ], { stdio: "inherit", cwd: "/User" }); + +log("MistyCore-Startup-Shell", "Started user interface"); \ No newline at end of file -- cgit