summaryrefslogtreecommitdiff
path: root/StartupItems
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-11-28 17:31:34 +0100
committerMinteck <contact@minteck.org>2022-11-28 17:31:34 +0100
commit7923aa8942b55884320ef2428417e3ee4b121613 (patch)
tree7993632f2898b1998f25b11ce40a8d2eb3d44730 /StartupItems
downloadmistyos-og-mane.tar.gz
mistyos-og-mane.tar.bz2
mistyos-og-mane.zip
Initial commitHEADmane
Diffstat (limited to 'StartupItems')
-rw-r--r--StartupItems/001--MistyOSRoot.js3
-rw-r--r--StartupItems/002--Logs.js13
-rw-r--r--StartupItems/100--Preferences.js15
-rw-r--r--StartupItems/200--Hostname.js6
-rw-r--r--StartupItems/201--Keyboard.js3
-rw-r--r--StartupItems/999--Shell.js8
6 files changed, 48 insertions, 0 deletions
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