From b46cf2175d7bc545fe4c969f2b982ed8f0cc14c6 Mon Sep 17 00:00:00 2001
From: Geoff Murphy <murphy@fake.onl>
Date: Sat, 21 Oct 2023 19:10:43 +1100
Subject: [PATCH] Initial commit

---
 README.md                                     |  66 +++++++++
 setup.sh                                      | 132 ++++++++++++++++++
 .../assets/configs/initrc/initrc_ash.sh       |   5 +
 .../assets/configs/initrc/initrc_bash.sh      |   5 +
 .../assets/configs/issue/issue-net.txt        |   4 +
 src/fake-os/assets/configs/issue/issue.txt    |   4 +
 src/fake-os/assets/logos/logo.txt             |   9 ++
 src/fake-os/assets/logos/logo_full.txt        |   9 ++
 src/fake-os/assets/logos/logo_text.txt        |   7 +
 src/fake-os/assets/other/demo.png             | Bin 0 -> 47942 bytes
 src/fake-os/fake_init.sh                      |  99 +++++++++++++
 src/fake-os/modules/debug/fake_debug.sh       |  13 ++
 .../modules/debug/fake_debug_error_pause.sh   |  12 ++
 .../modules/environment/hw_bootloader.sh      |  10 ++
 .../modules/environment/hw_cpu_arch.sh        |   6 +
 .../modules/environment/hw_cpu_make.sh        |  11 ++
 .../modules/environment/hw_gpu_make.sh        |  12 ++
 .../modules/environment/hw_mb_chipset.sh      |  32 +++++
 src/fake-os/modules/environment/hw_memory.sh  |   6 +
 .../modules/environment/hw_network_type.sh    |   9 ++
 src/fake-os/modules/environment/hw_virtual.sh |  24 ++++
 src/fake-os/modules/environment/os_distro.sh  |  16 +++
 .../modules/environment/os_fake_version.sh    |   6 +
 .../modules/environment/os_hostname.sh        |   6 +
 .../modules/environment/os_init_system.sh     |   9 ++
 .../modules/environment/os_login_type.sh      |  10 ++
 .../modules/environment/os_package_manager.sh |  12 ++
 src/fake-os/modules/environment/os_shell.sh   |   6 +
 src/fake-os/modules/environment/os_users.sh   |   6 +
 .../modules/layout/fake_layout_heading.sh     |  14 ++
 .../modules/layout/fake_layout_message.sh     |  51 +++++++
 .../modules/layout/fake_layout_subheading.sh  |  10 ++
 .../modules/layout/fake_layout_submessage.sh  |   8 ++
 src/fake-os/modules/manager/fake_manager.sh   |  53 +++++++
 .../modules/manager/fake_manager_help.sh      |  30 ++++
 .../modules/manager/fake_manager_upgrade.sh   |   8 ++
 .../fake_manager_package_automation.sh        |  44 ++++++
 .../package/fake_manager_package_install.sh   | 120 ++++++++++++++++
 .../package/fake_manager_package_remove.sh    |  46 ++++++
 .../package/fake_manager_package_search.sh    |  45 ++++++
 .../package/fake_manager_package_update.sh    |  61 ++++++++
 .../system/fake_manager_system_disable.sh     |  38 +++++
 .../system/fake_manager_system_enable.sh      |  38 +++++
 .../system/fake_manager_system_restart.sh     |  34 +++++
 .../system/fake_manager_system_start.sh       |  41 ++++++
 .../system/fake_manager_system_status.sh      |  41 ++++++
 .../system/fake_manager_system_stop.sh        |  41 ++++++
 .../modules/utils/alias/fake_alias_ls.sh      |  10 ++
 .../utils/config/fake_utils_config_add.sh     |  36 +++++
 .../utils/config/fake_utils_config_backup.sh  |  14 ++
 .../utils/config/fake_utils_config_pull.sh    |  39 ++++++
 .../utils/config/fake_utils_config_regex.sh   |  47 +++++++
 .../utils/config/fake_utils_config_replace.sh |  35 +++++
 .../utils/config/fake_utils_config_restore.sh |  21 +++
 .../environment/fake_environment_print.sh     |  26 ++++
 .../gnome/fake_utils_gnome_extensions.sh      |  13 ++
 .../utils/gnome/fake_utils_gnome_settings.sh  |  22 +++
 .../utils/linux/fake_utils_linux_appdata.sh   |  15 ++
 .../linux/fake_utils_linux_flushcache.sh      |  26 ++++
 .../linux/fake_utils_linux_shellstrap.sh      |  15 ++
 .../utils/linux/fake_utils_linux_status.sh    |  34 +++++
 61 files changed, 1622 insertions(+)
 create mode 100755 README.md
 create mode 100755 setup.sh
 create mode 100755 src/fake-os/assets/configs/initrc/initrc_ash.sh
 create mode 100755 src/fake-os/assets/configs/initrc/initrc_bash.sh
 create mode 100644 src/fake-os/assets/configs/issue/issue-net.txt
 create mode 100644 src/fake-os/assets/configs/issue/issue.txt
 create mode 100644 src/fake-os/assets/logos/logo.txt
 create mode 100644 src/fake-os/assets/logos/logo_full.txt
 create mode 100644 src/fake-os/assets/logos/logo_text.txt
 create mode 100644 src/fake-os/assets/other/demo.png
 create mode 100755 src/fake-os/fake_init.sh
 create mode 100755 src/fake-os/modules/debug/fake_debug.sh
 create mode 100755 src/fake-os/modules/debug/fake_debug_error_pause.sh
 create mode 100755 src/fake-os/modules/environment/hw_bootloader.sh
 create mode 100755 src/fake-os/modules/environment/hw_cpu_arch.sh
 create mode 100755 src/fake-os/modules/environment/hw_cpu_make.sh
 create mode 100755 src/fake-os/modules/environment/hw_gpu_make.sh
 create mode 100755 src/fake-os/modules/environment/hw_mb_chipset.sh
 create mode 100755 src/fake-os/modules/environment/hw_memory.sh
 create mode 100755 src/fake-os/modules/environment/hw_network_type.sh
 create mode 100755 src/fake-os/modules/environment/hw_virtual.sh
 create mode 100755 src/fake-os/modules/environment/os_distro.sh
 create mode 100755 src/fake-os/modules/environment/os_fake_version.sh
 create mode 100755 src/fake-os/modules/environment/os_hostname.sh
 create mode 100755 src/fake-os/modules/environment/os_init_system.sh
 create mode 100755 src/fake-os/modules/environment/os_login_type.sh
 create mode 100755 src/fake-os/modules/environment/os_package_manager.sh
 create mode 100755 src/fake-os/modules/environment/os_shell.sh
 create mode 100755 src/fake-os/modules/environment/os_users.sh
 create mode 100755 src/fake-os/modules/layout/fake_layout_heading.sh
 create mode 100755 src/fake-os/modules/layout/fake_layout_message.sh
 create mode 100755 src/fake-os/modules/layout/fake_layout_subheading.sh
 create mode 100644 src/fake-os/modules/layout/fake_layout_submessage.sh
 create mode 100755 src/fake-os/modules/manager/fake_manager.sh
 create mode 100755 src/fake-os/modules/manager/fake_manager_help.sh
 create mode 100755 src/fake-os/modules/manager/fake_manager_upgrade.sh
 create mode 100755 src/fake-os/modules/manager/package/fake_manager_package_automation.sh
 create mode 100755 src/fake-os/modules/manager/package/fake_manager_package_install.sh
 create mode 100755 src/fake-os/modules/manager/package/fake_manager_package_remove.sh
 create mode 100755 src/fake-os/modules/manager/package/fake_manager_package_search.sh
 create mode 100755 src/fake-os/modules/manager/package/fake_manager_package_update.sh
 create mode 100755 src/fake-os/modules/manager/system/fake_manager_system_disable.sh
 create mode 100755 src/fake-os/modules/manager/system/fake_manager_system_enable.sh
 create mode 100755 src/fake-os/modules/manager/system/fake_manager_system_restart.sh
 create mode 100755 src/fake-os/modules/manager/system/fake_manager_system_start.sh
 create mode 100755 src/fake-os/modules/manager/system/fake_manager_system_status.sh
 create mode 100755 src/fake-os/modules/manager/system/fake_manager_system_stop.sh
 create mode 100755 src/fake-os/modules/utils/alias/fake_alias_ls.sh
 create mode 100755 src/fake-os/modules/utils/config/fake_utils_config_add.sh
 create mode 100755 src/fake-os/modules/utils/config/fake_utils_config_backup.sh
 create mode 100755 src/fake-os/modules/utils/config/fake_utils_config_pull.sh
 create mode 100644 src/fake-os/modules/utils/config/fake_utils_config_regex.sh
 create mode 100755 src/fake-os/modules/utils/config/fake_utils_config_replace.sh
 create mode 100755 src/fake-os/modules/utils/config/fake_utils_config_restore.sh
 create mode 100755 src/fake-os/modules/utils/environment/fake_environment_print.sh
 create mode 100755 src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh
 create mode 100755 src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh
 create mode 100755 src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh
 create mode 100755 src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh
 create mode 100755 src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh
 create mode 100755 src/fake-os/modules/utils/linux/fake_utils_linux_status.sh

diff --git a/README.md b/README.md
new file mode 100755
index 0000000..c6da2f0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,66 @@
+# FAKE // OS 
+FAKE//OS system utilities and scripts.
+
+![demo](src/fake-os/assets/other/demo.png)
+
+# Philosophy
+1. **Standardised:** Functions should work consistently across multiple Operating System Distrobutions.
+2. **Repeatable:** Functions should be able to re-run (for ugrade purposes) without destroying already modified system configurations.
+3. **Modularity:** Functions should be simple and modular for easy additions and modifications.
+3. **Error Handeling:** Functions should have good error handeling for use in automated scripts.
+
+# Supported Operating Systems
+FAKE//OS aims to be system agnostic, and provide a consistent set of functions (especially for scripting) across a variety of Linux distrobutions, which otherwise don't play well togehter. Currently supported distrobutions include:
+- Arch Linux _[bash + systemd + pacman/paru]_
+- Artix Linux _[bash + openrc + pacman/paru]_
+- Alpine Linux _[ash + openrc + apk]_
+- Debian Linux _[bash/dash + systemd + apt]_
+
+# Basic Ussage
+``` bash
+FAKE//OS Package and System Manager
+-----------------------------------
+usage: fake <command> <arguments>
+
+Package management commands:
+  install    Install new software packages
+  update     Update installed software packages
+  remove     Remove/Uninstall software packages
+  search     Search repository for software packages
+
+Init/System management commands
+  start      Start system daemons
+  stop       Stop system daemons
+  restart    Restart system daemons
+  enable     Add system daemons to default startup PID
+  disable    Remove system daemons from default startup PID
+  flush      Clear syste caches
+
+FAKE//OS commands:
+  upgrade    Upgrade FAKE//OS to latest git version
+  help       Display this help screen
+```
+
+# Install FAKE // OS
+### Automatic Install 
+Copy and paste the folloing into you're commandline terminal:
+
+``` bash
+curl https://git.fake.onl/fake/fake-os/raw/branch/master/setup.sh | sh
+```
+
+### Manual Install
+For manual installation and access to the source-code run the following commands:
+
+``` bash
+git clone https://git.fake.onl/fake/fake-os.git
+cd fake-os
+./setup.sh
+```
+
+### Upgrade Install
+Once installed FAKE//OS can be upgraded (install the latest version from git.fake.onl) by running the following command:
+
+``` bash
+fake upgrade
+```
diff --git a/setup.sh b/setup.sh
new file mode 100755
index 0000000..8b5d153
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,132 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Bootstrap Correct Shell ]--------#
+if [ "$(command -v bash)" ] && [ -z "$BASH_VERSION" ]; then bash setup.sh $@; fi
+if [ "$(command -v bash)" ] && [ -z "$BASH_VERSION" ]; then exit; fi
+
+
+
+#--------[ Check Root ]--------#
+if [ $(whoami) != "root" ]; then
+    echo ""
+    echo "FAKE//OS setup must be run as 'root'"
+    echo ""
+    exit 1
+fi
+
+
+
+#--------[ Check Install Method ]--------#
+if [ ! -d "src/fake-os" ]; then
+    rm -rf /tmp/fake-os
+    git clone --depth 1 https://git.fake.onl/fake/fake-os.git /tmp/fake-os
+    cd /tmp/fake-os
+fi
+
+
+
+#--------[ Check Version ]--------#
+if [ -f "/var/cache/fake-os/fake_version.txt" ]; then
+    export TMP_VERSION_LOCAL="$(cat /var/cache/fake-os/fake_version.txt)"
+    export TMP_VERSION_REMOTE="$(git rev-parse HEAD | head -c 10)"
+    if [ "$TMP_VERSION_LOCAL" == "$TMP_VERSION_REMOTE" ]; then
+        if [ "$(command -v _fake_layout_message)" ]; then
+            _fake_layout_message "Version" "$ENV_FAKE_VERSION" "upgrade" "Already up to date..."
+        else
+            echo ""
+            echo "FAKE//OS: Already up to date..."
+            echo ""
+        fi
+        exit 0
+    fi
+    unset TMP_VERSION_LOCAL
+    unset TMP_VERSION_REMOTE
+else
+    echo ""
+    cat src/fake-os/assets/logos/logo_full.txt
+    echo ""
+    sleep 1
+fi
+
+
+
+#--------[ CLI Flag Arguments ]--------#
+for ARGV in $@; do
+  case $ARGV in
+    -d|--debug) export FAKE_MODE_DEBUG="TRUE" ;;
+    -v|--quiet) export FAKE_MODE_QUIET="TRUE" ;;
+  esac
+done
+
+
+
+#--------[ Copy FAKE//OS Files ]--------#
+echo "Copy FAKE//OS Files"
+rm -rf /usr/share/fake-os
+cp -rv src/fake-os /usr/share
+mkdir -p /var/cache/fake-os
+echo ""
+
+
+
+#--------[ Log FAKE//OS Version Variable ]--------#
+echo "$(git rev-parse HEAD | head -c 10)" > /var/cache/fake-os/fake_version.txt
+
+
+
+#--------[ Install Dependencies ]--------#
+echo "Install FAKE//OS Dependencies"
+if [ "$(command -v paru)" ]; then
+    paru --noconfirm -S curl figlet git lolcat rsync perl sudo vim
+elif [ "$(command -v pacman)" ]; then
+    pacman --noconfirm -S curl figlet git lolcat rsync perl sudo vim
+elif [ "$(command -v apt)" ]; then
+    apt -y install curl figlet git lolcat rsync perl sudo vim
+elif [ "$(command -v apk)" ]; then
+    apk add curl figlet git rsync perl sudo vim
+fi
+
+
+
+#--------[ Load FAKE//OS Init Script ]--------#
+. src/fake-os/fake_init.sh --quiet
+
+
+
+#--------[ Copy User RC Init Script ]--------#
+mkdir -p /etc/skel
+
+_fake_layout_heading "Copy InitRC Script"
+cp -rv src/fake-os/assets/configs/initrc/initrc_$ENV_SHELL.sh /etc/skel/.bashrc
+cp -rv src/fake-os/assets/configs/initrc/initrc_$ENV_SHELL.sh /etc/skel/.profile
+
+cp -rv /etc/skel/. /root
+for TMP_USER in $(ls /home); do
+    if [ ! "$(grep -e fake_init /home/$TMP_USER/.bashrc)" ]; then
+        cp -rv /etc/skel/. /home/$TMP_USER/
+    fi
+done
+unset TMP_USER
+
+
+
+#--------[ Clean Up Junk Files ]--------#
+_fake_layout_heading "Clean-Up Distro OS Files"
+
+_fake_utils_config_replace src/fake-os/assets/configs/issue/issue.txt /etc/issue
+_fake_utils_config_regex "%ENV_DISTRO" "$ENV_DISTRO" "/etc/issue"
+_fake_utils_config_regex "%ENV_FAKE_VERSION" "$ENV_FAKE_VERSION" "/etc/issue"
+
+_fake_utils_config_replace src/fake-os/assets/configs/issue/issue-net.txt /etc/issue.net
+_fake_utils_config_regex "%ENV_DISTRO" "$ENV_DISTRO" "/etc/issue.net"
+_fake_utils_config_regex "%ENV_FAKE_VERSION" "$ENV_FAKE_VERSION" "/etc/issue.net"
+
+rm -rf /etc/motd
+echo 'rm -rf /etc/motd'
+
+
+
+#--------[ Setup Complete ]--------#
+_fake_layout_heading "FAKE//OS Setup Complete!"
diff --git a/src/fake-os/assets/configs/initrc/initrc_ash.sh b/src/fake-os/assets/configs/initrc/initrc_ash.sh
new file mode 100755
index 0000000..ac3043f
--- /dev/null
+++ b/src/fake-os/assets/configs/initrc/initrc_ash.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env ash
+
+
+#--------[ FAKE//OS Init Bootstrap ]--------#
+. /usr/share/fake-os/fake_init.sh $@
diff --git a/src/fake-os/assets/configs/initrc/initrc_bash.sh b/src/fake-os/assets/configs/initrc/initrc_bash.sh
new file mode 100755
index 0000000..5ff8494
--- /dev/null
+++ b/src/fake-os/assets/configs/initrc/initrc_bash.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+
+#--------[ FAKE//OS Init Bootstrap ]--------#
+. /usr/share/fake-os/fake_init.sh $@
diff --git a/src/fake-os/assets/configs/issue/issue-net.txt b/src/fake-os/assets/configs/issue/issue-net.txt
new file mode 100644
index 0000000..f150dc1
--- /dev/null
+++ b/src/fake-os/assets/configs/issue/issue-net.txt
@@ -0,0 +1,4 @@
+
+%ENV_DISTRO: \r (\l) [remote]
+FAKE//OS Version: %ENV_FAKE_VERSION
+
diff --git a/src/fake-os/assets/configs/issue/issue.txt b/src/fake-os/assets/configs/issue/issue.txt
new file mode 100644
index 0000000..8b6bd00
--- /dev/null
+++ b/src/fake-os/assets/configs/issue/issue.txt
@@ -0,0 +1,4 @@
+
+%ENV_DISTRO: \r (\l)
+FAKE//OS Version: %ENV_FAKE_VERSION
+
diff --git a/src/fake-os/assets/logos/logo.txt b/src/fake-os/assets/logos/logo.txt
new file mode 100644
index 0000000..39d1522
--- /dev/null
+++ b/src/fake-os/assets/logos/logo.txt
@@ -0,0 +1,9 @@
+     .^!?JJ?7^.
+   ^YB#GPYYYPGG?:
+ .5&&J^      .~Y5!
+ Y@&~           !P~
+:#@B            .GP.
+ P@&?           !GY
+ :P@@B5J?!:   .7P5.
+   7G&@@@@@7 :!?~
+     ^7JYJ7. .
diff --git a/src/fake-os/assets/logos/logo_full.txt b/src/fake-os/assets/logos/logo_full.txt
new file mode 100644
index 0000000..48ea8ba
--- /dev/null
+++ b/src/fake-os/assets/logos/logo_full.txt
@@ -0,0 +1,9 @@
+        ..        
+   .:xKX0O00d,       _____ _    _  _______      ____   ___  ____
+  dNKc.     'od'    |  ___/ \  | |/ / ____|    / / /  / _ \/ ___|
+ kWO          .d,   | |_ / _ \ | ' /|  _|     / / /  | | | \___ \
+.WWc           oO   |  _/ ___ \| . \| |___   / / /   | |_| |___) |
+ 0WX.         .kx   |_|/_/   \_\_|\_\_____| /_/_/     \___/|____/
+  xWWKOxo;   'xd    ---------------------------------------------
+   'oKWWWX' ..                Fake Operating System
+       ..
diff --git a/src/fake-os/assets/logos/logo_text.txt b/src/fake-os/assets/logos/logo_text.txt
new file mode 100644
index 0000000..cdf67b3
--- /dev/null
+++ b/src/fake-os/assets/logos/logo_text.txt
@@ -0,0 +1,7 @@
+ _____ _    _  _______      ____   ___  ____  
+|  ___/ \  | |/ / ____|    / / /  / _ \/ ___| 
+| |_ / _ \ | ' /|  _|     / / /  | | | \___ \ 
+|  _/ ___ \| . \| |___   / / /   | |_| |___) |
+|_|/_/   \_\_|\_\_____| /_/_/     \___/|____/ 
+---------------------------------------------
+          Fake Operating System setup
diff --git a/src/fake-os/assets/other/demo.png b/src/fake-os/assets/other/demo.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d4be022bdac652a9ec8f8fa2b81dc13db748ba4
GIT binary patch
literal 47942
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
C`?9$J

literal 0
HcmV?d00001

diff --git a/src/fake-os/fake_init.sh b/src/fake-os/fake_init.sh
new file mode 100755
index 0000000..abe5f6c
--- /dev/null
+++ b/src/fake-os/fake_init.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Master Paths ]--------#
+if ! [ "$(echo $PATH | grep sbin)" ]; then
+  export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
+fi
+if ! [ "$(echo $PATH | grep games)" ]; then
+  export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/games"
+fi
+
+
+
+#--------[ System Variables ]--------#
+export VISUAL=emacs
+export EDITOR=vim
+
+
+
+#--------[ CLI Flag Arguments ]--------#
+for ARGV in $@; do
+  case $ARGV in
+    -d|--degub) export FAKE_MODE_DEBUG="TRUE" ;;
+    -q|--quiet) export FAKE_MODE_QUIET="TRUE" ;;
+  esac
+done
+
+
+
+#--------[ Terminal Colours ]--------#
+FCOL0="\e[0m"
+FCOL1="\e[37m\033[38;5;166m"
+FCOL2="\e[37m\033[38;5;204m"
+FCOL3="\e[37m\033[38;5;170m"
+FCOLGRAD="lolcat -p 4 -S 6 -F 0.1"
+FCOLBOLD="\e[1m"
+FCOLITAL="\e[2;3m"
+
+
+
+#--------[ Load Core Modules ]--------#
+for MODULE in $(find /usr/share/fake-os/modules -name "*.sh"); do
+  . $MODULE
+done
+unset MODULE
+
+
+
+#--------[ Load User Modules ]--------#
+if [ ! -d ~/.local/share/fake-os/modules ]; then
+  mkdir -p ~/.local/share/fake-os/modules;
+fi
+for MODULE in $(find ~/.local/share/fake-os/modules -name "*.sh"); do
+  . $MODULE
+done
+unset MODULE
+
+
+
+#--------[ CLI Prompt ]--------#
+if [ $(whoami) != "root" ]; then
+  PS1="\[${FCOL0}\]\[[${FCOL3}\]\u\[${FCOL0}\]@\[${FCOL3}\]\h\[${FCOL0}\]] \W \$ "
+else
+  PS1="\[${FCOL0}\]\[[${FCOL1}\]\u\[${FCOL0}\]@\[${FCOL1}\]\h\[${FCOL0}\]] \W \$ "
+fi
+
+
+
+
+#--------[ Login Display ]--------#
+echo ""
+if [ ! "$FAKE_MODE_QUIET" ]; then
+
+
+#--------[ Local Login ]--------#
+  if [ "$ENV_LOGIN" ==  "local" ]; then
+    if [ "$(command -v lolcat)" ]; then
+      cat /usr/share/fake-os/assets/logos/logo_full.txt | $FCOLGRAD
+    else
+      cat /usr/share/fake-os/assets/logos/logo_full.txt
+    fi
+
+
+  #--------[ SSH Login ]--------#
+  else
+     if [ "$(command -v figlet)" ]; then
+      figlet -w 1000 $(cat /etc/hostname)
+    else
+      echo "FAKE//OS Login: $(cat /etc/hostname)"
+    fi
+  fi
+
+
+  #--------[ Login Info ]--------#
+  echo ""
+  echo -e "${FCOL1}user:${FCOL0} $(whoami)    ${FCOL2}login:${FCOL0} $ENV_LOGIN    ${FCOL3}system:${FCOL0} $ENV_ARCH $ENV_DISTRO $ENV_VTAG"
+  echo ""
+fi
diff --git a/src/fake-os/modules/debug/fake_debug.sh b/src/fake-os/modules/debug/fake_debug.sh
new file mode 100755
index 0000000..df2721c
--- /dev/null
+++ b/src/fake-os/modules/debug/fake_debug.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env sh
+
+
+
+#---------[ Fake Debug Pause Function ]--------#
+_fake_debug () {
+    if [ "$FAKE_MODE_DEBUG" ]; then
+        echo ""
+        read -n 1 -p "Debug Break: Press key to continue..." VOID && echo ""
+    elif [ "$FAKE_MODE_SLOW" ]; then
+        sleep 3
+    fi
+}
diff --git a/src/fake-os/modules/debug/fake_debug_error_pause.sh b/src/fake-os/modules/debug/fake_debug_error_pause.sh
new file mode 100755
index 0000000..b486ced
--- /dev/null
+++ b/src/fake-os/modules/debug/fake_debug_error_pause.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Error Basic Message Function ]--------#
+_fake_debug_error_pause () {
+    if [ "$FAKE_MODE_DEBUG" ]; then
+        read -n 1 -p "Error: Press any key to continue..." VOID && echo ""
+    elif [ "$FAKE_MODE_SLOW" ]; then
+        sleep 3
+    fi
+}
diff --git a/src/fake-os/modules/environment/hw_bootloader.sh b/src/fake-os/modules/environment/hw_bootloader.sh
new file mode 100755
index 0000000..0efacb0
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_bootloader.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Bootloader Type ]--------#
+if [ -d "/sys/firmware/efi" ]; then
+    export ENV_BOOTLOADER="UEFI"
+else
+    export ENV_BOOTLOADER="BIOS"
+fi
diff --git a/src/fake-os/modules/environment/hw_cpu_arch.sh b/src/fake-os/modules/environment/hw_cpu_arch.sh
new file mode 100755
index 0000000..983ec55
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_cpu_arch.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect CPU Architecture ]--------#
+export ENV_ARCH=$(uname -m)
diff --git a/src/fake-os/modules/environment/hw_cpu_make.sh b/src/fake-os/modules/environment/hw_cpu_make.sh
new file mode 100755
index 0000000..70ab467
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_cpu_make.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect CPU Make ]--------#
+if [ "$(command -v lscpu)" ]; then
+    if [ "$(lscpu | grep Intel)" ]; then export ENV_CPU="intel";
+    elif [ "$(lscpu | grep AMD)" ]; then export ENV_CPU="amd";
+    elif [ "$(lscpu | grep ARM)" ]; then export ENV_CPU="arm";
+    else export ENV_CPU="unkown"; fi
+else export ENV_CPU="unkown"; fi
diff --git a/src/fake-os/modules/environment/hw_gpu_make.sh b/src/fake-os/modules/environment/hw_gpu_make.sh
new file mode 100755
index 0000000..983e454
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_gpu_make.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect GPU Make ]--------#
+if [ -d "/proc/bus/pci" ] && [ "$(command -v lspci)" ]; then
+    if [ "$(lspci | grep VGA | grep Intel)" ]; then export ENV_GPU="intel";
+    elif [ "$(lspci | grep VGA | grep GeForce)" ]; then export ENV_GPU="nvidia";
+    elif [ "$(lspci | grep VGA | grep AMD)" ]; then export ENV_GPU="amd";
+    else export ENV_GPU="unkown"
+    fi
+else export ENV_GPU="unknown"; fi
diff --git a/src/fake-os/modules/environment/hw_mb_chipset.sh b/src/fake-os/modules/environment/hw_mb_chipset.sh
new file mode 100755
index 0000000..8a7103b
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_mb_chipset.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Motherboard Chipset ]--------#
+if [ -d "/sys/devices/virtual/dmi/id" ]; then
+    export ENV_MAKE=$(cat /sys/devices/virtual/dmi/id/sys_vendor)
+    export ENV_MODEL=$(cat /sys/devices/virtual/dmi/id/product_family)
+elif [ -f "/proc/device-tree/model" ]; then
+    if [ "$(tr -d '\0' < /proc/device-tree/model | grep -a PineTab)" ]; then
+        export ENV_MAKE="Pine64"
+        export ENV_MODEL="PineTab"
+    elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a PinePhone)" ]; then
+        export ENV_MAKE="Pine64"
+        export ENV_MODEL="PinePhonePro"
+    elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a 'Zero W')" ]; then
+        export ENV_MAKE="RaspberryPi"
+        export ENV_MODEL="RPi-Zero-W"
+    elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a 'Pi 2')" ]; then
+        export ENV_MAKE="RaspberryPi"
+        export ENV_MODEL="RPi-2"
+    elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a 'Pi 4')" ]; then
+        export ENV_MAKE="RaspberryPi"
+        export ENV_MODEL="RPi-4"
+    else
+        export ENV_MAKE="unknown"
+        export ENV_MODEL="unknown"
+    fi
+else
+    export ENV_MAKE="unknown"
+    export ENV_MODEL="unknown"
+fi
diff --git a/src/fake-os/modules/environment/hw_memory.sh b/src/fake-os/modules/environment/hw_memory.sh
new file mode 100755
index 0000000..27e0ae6
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_memory.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Memory Amount ]--------#
+export ENV_MEMORY=$(free -h | grep 'Mem\|Speicher' | awk '{print $2}')
diff --git a/src/fake-os/modules/environment/hw_network_type.sh b/src/fake-os/modules/environment/hw_network_type.sh
new file mode 100755
index 0000000..02ef7c5
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_network_type.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Network Type ]--------#
+export ENV_NETWORK="none"
+if [ "$(ip addr | grep inet | grep wlan)" ]; then export ENV_NETWORK="wlan"; fi
+if [ "$(ip addr | grep inet | grep eth)" ]; then export ENV_NETWORK="eth"; fi
+if [ "$(ip addr | grep inet | grep enp)" ]; then export ENV_NETWORK="eth"; fi
diff --git a/src/fake-os/modules/environment/hw_virtual.sh b/src/fake-os/modules/environment/hw_virtual.sh
new file mode 100755
index 0000000..80f2d04
--- /dev/null
+++ b/src/fake-os/modules/environment/hw_virtual.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Virtual/Container Environment ]--------#
+if [ ! "$(cat /proc/1/environ 2>&1 | tr -d '\0' | grep denied)" ]; then
+    if [ "$(cat /proc/1/environ | tr -d '\0' | grep lxc)" ]; then
+        export ENV_VIRTUAL="LXC"
+        export ENV_VTAG="[LXC]"
+    elif [ "$ENV_MAKE" == "QEMU" ]; then
+        export ENV_VIRTUAL="VM"
+        export ENV_VTAG='[QEMU]'
+    else
+        export ENV_VIRTUAL="REAL"
+    fi
+    echo $ENV_VIRTUAL > /var/cache/fake-os/env_virtual.txt
+else
+    if [ -f /var/cache/fake-os/env_virtual.txt ]; then
+        export ENV_VIRTUAL="$(cat /var/cache/fake-os/env_virtual.txt)"
+        if [ "$ENV_VIRTUAL" != "REAL" ]; then ENV_VTAG="[$ENV_VIRTUAL]"; fi
+    else
+        export ENV_VIRTUAL="UNKNOWN"
+    fi
+fi
diff --git a/src/fake-os/modules/environment/os_distro.sh b/src/fake-os/modules/environment/os_distro.sh
new file mode 100755
index 0000000..4921752
--- /dev/null
+++ b/src/fake-os/modules/environment/os_distro.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Operating System Distro ]--------#
+export ENV_DISTRO=$(cat /etc/os-release | grep "^NAME=" | sed 's/^NAME="\(.*\)"$/\1/g')
+if [ "$(command -v proxmox-boot-tool)" ]; then export ENV_DISTRO="Proxmox (Debian)"; fi
+if [ "$(command -v raspi-config)" ]; then export ENV_DISTRO="RaspberryOS (Debian)"; fi
+
+
+# "Arch Linux"
+# "Artix Linux"
+# "Debian GNU/Linux"
+# "Fedora Linux"
+# "Proxmox (Debian)"
+# "RaspberryOS (Debian)"
diff --git a/src/fake-os/modules/environment/os_fake_version.sh b/src/fake-os/modules/environment/os_fake_version.sh
new file mode 100755
index 0000000..84561af
--- /dev/null
+++ b/src/fake-os/modules/environment/os_fake_version.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Fake Version ]--------#
+export ENV_FAKE_VERSION="$(cat /var/cache/fake-os/fake_version.txt)"
diff --git a/src/fake-os/modules/environment/os_hostname.sh b/src/fake-os/modules/environment/os_hostname.sh
new file mode 100755
index 0000000..c015822
--- /dev/null
+++ b/src/fake-os/modules/environment/os_hostname.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect System Hostname ]--------#
+export ENV_HOSTNAME=$(uname -n)
diff --git a/src/fake-os/modules/environment/os_init_system.sh b/src/fake-os/modules/environment/os_init_system.sh
new file mode 100755
index 0000000..12846f1
--- /dev/null
+++ b/src/fake-os/modules/environment/os_init_system.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Init System ]--------#
+if [ "$(command -v systemctl)" ]; then export ENV_INIT="systemd";
+elif [ "$(command -v rc-service)" ]; then export ENV_INIT="openrc";
+else export ENV_INIT="unknown";
+fi
diff --git a/src/fake-os/modules/environment/os_login_type.sh b/src/fake-os/modules/environment/os_login_type.sh
new file mode 100755
index 0000000..4eddc82
--- /dev/null
+++ b/src/fake-os/modules/environment/os_login_type.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Dettect Session Login Type ]--------#
+if [ "$SSH_TTY" ]; then
+    ENV_LOGIN="ssh";
+else
+    ENV_LOGIN="local";
+fi
diff --git a/src/fake-os/modules/environment/os_package_manager.sh b/src/fake-os/modules/environment/os_package_manager.sh
new file mode 100755
index 0000000..9cd1f50
--- /dev/null
+++ b/src/fake-os/modules/environment/os_package_manager.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Package Manager ]--------#
+if [ "$(command -v paru)" ]; then export ENV_MANAGER="paru";
+elif [ "$(command -v pacman)" ]; then export ENV_MANAGER="pacman";
+elif [ "$(command -v apt)" ]; then export ENV_MANAGER="apt";
+elif [ "$(command -v apk)" ]; then export ENV_MANAGER="apk";
+elif [ "$(command -v dnf)" ]; then export ENV_MANAGER="dnf";
+elif [ "$(command -v yum)" ]; then export ENV_MANAGER="yum";
+else export ENV_MANAGER="unknown"; fi
diff --git a/src/fake-os/modules/environment/os_shell.sh b/src/fake-os/modules/environment/os_shell.sh
new file mode 100755
index 0000000..d0c0da7
--- /dev/null
+++ b/src/fake-os/modules/environment/os_shell.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect Shell ]--------#
+export ENV_SHELL="$(echo $SHELL | sed 's/^\/.*\///g')"
diff --git a/src/fake-os/modules/environment/os_users.sh b/src/fake-os/modules/environment/os_users.sh
new file mode 100755
index 0000000..83b08d0
--- /dev/null
+++ b/src/fake-os/modules/environment/os_users.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Detect System Users ]--------#
+export ENV_USERS=$( echo root $(ls /home/))
diff --git a/src/fake-os/modules/layout/fake_layout_heading.sh b/src/fake-os/modules/layout/fake_layout_heading.sh
new file mode 100755
index 0000000..a2b6eb8
--- /dev/null
+++ b/src/fake-os/modules/layout/fake_layout_heading.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Fake Layout Heading ]--------#
+_fake_layout_heading () {
+	PADDING=$(perl -E "say \"─\" x $(echo $1 | wc -c)")
+	echo ""
+	echo "┌──$PADDING─┐"
+	echo -e "│  ${FCOLBOLD}$1${FCOL0}  │"
+	echo "└──$PADDING─┘"
+	echo ""
+    if [ "$FAKE_MODE_SLOW" ]; then sleep 2; fi
+}
diff --git a/src/fake-os/modules/layout/fake_layout_message.sh b/src/fake-os/modules/layout/fake_layout_message.sh
new file mode 100755
index 0000000..fbd083a
--- /dev/null
+++ b/src/fake-os/modules/layout/fake_layout_message.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Fake Layout Message ]--------#
+_fake_layout_message () {
+    echo ""
+
+
+
+    #--------[ 6 Arg Message ]--------#
+    if [ "$8" ]; then
+        echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1: $2"
+        echo -e "[$3]:${FCOLITAL} $4 ${FCOL0}";
+        echo -e "[$5]:${FCOLITAL} $6 ${FCOL0}";
+        echo -e "[$7]:${FCOLITAL} $8 ${FCOL0}";
+        echo ""
+
+
+
+    #--------[ 6 Arg Message ]--------#
+    elif [ "$6" ]; then
+        echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1: $2"
+        echo -e "[$3]:${FCOLITAL} $4 ${FCOL0}";
+        echo -e "[$5]:${FCOLITAL} $6 ${FCOL0}";
+        echo ""
+
+
+
+    #--------[ 4 Arg Message ]--------#
+    elif [ "$4" ]; then
+        echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1: $2"
+        echo -e "[$3]:${FCOLITAL} $4 ${FCOL0}";
+        echo ""
+
+
+    #--------[ 2 Argument Message ]--------#
+    elif [ "$2" ]; then
+        echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1:${FCOLITAL} $2 ${FCOL0}"
+
+
+    #--------[ 1 Argument Message ]--------#
+    else
+        echo -e "${FCOLBOLD}FAKE//OS${FCOL0}: $1"
+    fi
+
+
+
+    #--------[ Debug Mode ]--------#
+    if [ "$1" == "Error" ] && [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+}
diff --git a/src/fake-os/modules/layout/fake_layout_subheading.sh b/src/fake-os/modules/layout/fake_layout_subheading.sh
new file mode 100755
index 0000000..f5f3b20
--- /dev/null
+++ b/src/fake-os/modules/layout/fake_layout_subheading.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Fake Layout Sub-Heading ]--------#
+_fake_layout_subheading () {
+    echo ""
+    echo -e "--------[${FCOLBOLD} $1 ${FCOL0}]--------"
+    if [ "$FAKE_MODE_DEBUG" ]; then sleep 1; fi
+}
diff --git a/src/fake-os/modules/layout/fake_layout_submessage.sh b/src/fake-os/modules/layout/fake_layout_submessage.sh
new file mode 100644
index 0000000..0943936
--- /dev/null
+++ b/src/fake-os/modules/layout/fake_layout_submessage.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Fake Layout Message ]--------#
+_fake_layout_submessage () {
+    echo -e "[$1]:${FCOLITAL} $2 ${FCOL0}";
+}
diff --git a/src/fake-os/modules/manager/fake_manager.sh b/src/fake-os/modules/manager/fake_manager.sh
new file mode 100755
index 0000000..ebd32a6
--- /dev/null
+++ b/src/fake-os/modules/manager/fake_manager.sh
@@ -0,0 +1,53 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Determin Base Distro Package Manager ]--------#
+if [ $(command -v apt) ]; then FAKE_MANAGER=apt; fi
+if [ $(command -v apk) ]; then FAKE_MANAGER=apk; fi
+if [ $(command -v dnf) ]; then FAKE_MANAGER=dnf; fi
+if [ $(command -v pacman) ]; then FAKE_MANAGER=pacman; fi
+if [ $(command -v paru) ] && [ "$(whoami)" != "root" ]; then FAKE_MANAGER=paru; fi
+
+
+
+#--------[ FAKE//OS Package/System Manager ]--------#
+fake () {
+
+
+
+    #--------[ Package Management ]--------#
+    if   [ "$1" == "update" ];  then _fake_manager_package_update  $@;
+    elif [ "$1" == "install" ]; then _fake_manager_package_install $@;
+    elif [ "$1" == "remove" ];  then _fake_manager_package_remove  $@;
+    elif [ "$1" == "search" ];  then _fake_manager_package_search  $@;
+
+
+
+    #--------[ Init/System Management ]--------#
+    elif [ "$1" == "status" ];  then _fake_manager_system_status  $@;
+    elif [ "$1" == "start" ];   then _fake_manager_system_start   $@;
+    elif [ "$1" == "stop" ];    then _fake_manager_system_stop    $@;
+    elif [ "$1" == "restart" ]; then _fake_manager_system_restart $@;
+    elif [ "$1" == "enable" ];  then _fake_manager_system_enable  $@;
+    elif [ "$1" == "disable" ]; then _fake_manager_system_disable $@;
+    elif [ "$1" == "flush" ];   then _fake_utils_linux_flushcache $@;
+
+
+
+    #--------[ FAKE//OS Commandes ]--------#
+    elif [ "$1" == "upgrade" ]; then _fake_manager_upgrade $@;
+    elif [ "$1" == "help" ];    then _fake_manager_help    $@;
+
+
+
+    #--------[ Error Catch-All ]--------#
+    else
+        _fake_layout_message "$1" "Unrecognised command..."
+    fi
+
+
+
+    #--------[ Debug Pause ]--------#
+    if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+}
diff --git a/src/fake-os/modules/manager/fake_manager_help.sh b/src/fake-os/modules/manager/fake_manager_help.sh
new file mode 100755
index 0000000..543abd7
--- /dev/null
+++ b/src/fake-os/modules/manager/fake_manager_help.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Help ]--------#
+_fake_manager_help () {
+    echo ""
+    echo "FAKE//OS [version] $ENV_FAKE_VERSION"
+    echo "-----------------------------------"
+    echo "usage: fake <command> <arguments>"
+    echo ""
+    echo "Package management commands:"
+    echo "  install    Install new software packages"
+    echo "  update     Update installed software packages"
+    echo "  remove     Remove/Uninstall software packages"
+    echo "  search     Search repository for software packages"
+    echo ""
+    echo "Init/System management commands"
+    echo "  start      Start system daemons"
+    echo "  stop       Stop system daemons"
+    echo "  restart    Restart system daemons"
+    echo "  enable     Add system daemons to default startup PID"
+    echo "  disable    Remove system daemons from default startup PID"
+    echo "  flush      Clear system caches"
+    echo ""
+    echo "FAKE//OS commands:"
+    echo "  upgrade    Upgrade FAKE//OS to latest git version"
+    echo "  help       Display this help screen"
+    echo ""
+}
diff --git a/src/fake-os/modules/manager/fake_manager_upgrade.sh b/src/fake-os/modules/manager/fake_manager_upgrade.sh
new file mode 100755
index 0000000..4fd7370
--- /dev/null
+++ b/src/fake-os/modules/manager/fake_manager_upgrade.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Upgrade FAKE//OS ]--------#
+_fake_manager_upgrade () {
+    curl https://git.fake.onl/fake/fake-os/raw/branch/master/setup.sh | sudo $ENV_SHELL
+}
diff --git a/src/fake-os/modules/manager/package/fake_manager_package_automation.sh b/src/fake-os/modules/manager/package/fake_manager_package_automation.sh
new file mode 100755
index 0000000..f12b2c0
--- /dev/null
+++ b/src/fake-os/modules/manager/package/fake_manager_package_automation.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Automation Function ]--------#
+_fake_manager_package_automation () {
+
+
+
+    #--------[ Parse Input Command ]--------#
+    FAKE_CMD="$@"
+
+
+
+    #--------[ 4x Automatic Attmepts ]--------#
+    FAKE_RETRY=0
+    until $FAKE_CMD; do
+        ((FAKE_RETRY=FAKE_RETRY+1))
+        if [ $FAKE_RETRY -eq 4 ]; then break; fi
+        _fake_layout_message "Error" "Auto-Retry -> Attempt $FAKE_RETRY..." "retry" "$FAKE_CMD"
+    done
+
+
+
+    #--------[ 1x Manual Attempt ]--------#
+    if [ $FAKE_RETRY -eq 4 ]; then
+        FAKE_CMD=$(echo $FAKE_CMD | sed -e 's/--noconfirm//g')
+        FAKE_CMD=$(echo $FAKE_CMD | sed -e 's/-y//g')
+        _fake_layout_message "Error" "Auto-Retry -> Attempt 4 [FINAL]..." "retry" "$FAKE_CMD"
+        $FAKE_CMD
+
+
+
+        #--------[ Autmation Failure ]--------#
+        if [ $? -ne 0 ]; then
+            ((FAKE_RETRY=FAKE_RETRY+1))
+            _fake_layout_message "Error" "$FAKE_CMD" "message" "Failed after 4x Auto and 1x Manual attempts..."
+            __fake_debug_error_pause
+        fi
+    fi
+
+
+
+}
diff --git a/src/fake-os/modules/manager/package/fake_manager_package_install.sh b/src/fake-os/modules/manager/package/fake_manager_package_install.sh
new file mode 100755
index 0000000..856d0b3
--- /dev/null
+++ b/src/fake-os/modules/manager/package/fake_manager_package_install.sh
@@ -0,0 +1,120 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Install Software ]--------#
+_fake_manager_package_install () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify packages..."
+
+
+
+    #--------[ Parse Package Arguments ]--------#
+    else
+        FAKE_PACKAGES=$(echo "$@" | sed -e 's/^install\ //g')
+
+
+
+        #--------[ Get Pre-Installed System Pacakges ]--------#
+        SYS_PACKAGES=""
+        case $FAKE_MANAGER in
+            apt) SYS_PACKAGES="$(apt list --installed 2>/dev/null)" ;;
+            apk) SYS_PACKAGES="$(apk list --installed)" ;;
+            dnf) SYS_PACKAGES="$(dnf list --installed)" ;;
+            pacman) SYS_PACKAGES="$(pacman -Qq)" ;;
+            paru) SYS_PACKAGES="$(paru -Qq)" ;;
+        esac
+
+
+
+        #--------[ Sort Packages Already Pre-Installed ]--------#
+        FAKE_PACKAGES_NEW=""
+        FAKE_PACKAGES_OLD=""
+        for TMP_PACKAGE in $FAKE_PACKAGES; do
+            if [ "$(echo $SYS_PACKAGES | grep $TMP_PACKAGE)" ]; then
+                FAKE_PACKAGES_OLD="$FAKE_PACKAGES_OLD $TMP_PACKAGE"
+            else
+                FAKE_PACKAGES_NEW="$FAKE_PACKAGES_NEW $TMP_PACKAGE"
+            fi
+        done
+
+
+
+        #--------[ Determin Available Packages ]--------#
+        FAKE_PACKAGES_UNAVAILABLE=""
+        FAKE_PACKAGES_INSTALL=""
+        for TMP_PACKAGE in $FAKE_PACKAGES_NEW; do
+            TMP_FOUND=FALSE
+            case $FAKE_MANAGER in
+                apk)
+                    if [ "$(apk search --exact $TMP_PACKAGE)" ];then TMP_FOUND=TRUE; fi
+                    ;;
+                apt)
+                    if [ "$(apt-cache search --names-only $TMP_PACKAGE | grep ^$TMP_PACKAGE\ )" ];then TMP_FOUND=TRUE; fi
+                    ;;
+                pacman)
+                    if [ "$(pacman -Ssq $TMP_PACKAGE | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi
+                    if [ "$(pacman -Sg $TMP_PACKAGE | awk '{print $1}' | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi
+                    ;;
+                paru)
+                    if [ "$(paru -Ssq $TMP_PACKAGE | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi
+                    if [ "$(paru -Sg $TMP_PACKAGE | awk '{print $1}' | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi
+                    ;;
+            esac
+            if [ "$TMP_FOUND" == "TRUE" ]; then
+                FAKE_PACKAGES_INSTALL="$FAKE_PACKAGES_INSTALL $TMP_PACKAGE"
+            else
+                FAKE_PACKAGES_UNAVAILABLE="$FAKE_PACKAGES_UNAVAILABLE $TMP_PACKAGE"
+            fi
+        done
+
+
+
+        #--------[ Build Install Command ]--------#
+        FAKE_CMD=""
+        case $FAKE_MANAGER in
+            apt) FAKE_CMD="sudo apt -y install $FAKE_PACKAGES_INSTALL" ;;
+            apk) FAKE_CMD="sudo apk add $FAKE_PACKAGES_INSTALL" ;;
+            dnf) FAKE_CMD="sudo dnf -y install $FAKE_PACKAGES_INSTALL" ;;
+            pacman) FAKE_CMD="sudo pacman --noconfirm -S $FAKE_PACKAGES_INSTALL" ;;
+            paru) FAKE_CMD="paru --noconfirm -S $FAKE_PACKAGES_INSTALL" ;;
+        esac
+
+
+
+        #--------[ Skip Pre-Installed Pacakges ]--------#
+        if [ ! "$FAKE_PACKAGES_INSTALL" ]; then
+            _fake_layout_message "Install" "No new packages..."
+            if [ "$FAKE_PACKAGES_UNAVAILABLE" ]; then
+                _fake_layout_submessage "unavailable" "$FAKE_PACKAGES_UNAVAILABLE";
+                _fake_debug_error_pause
+            fi
+            if [ "$FAKE_PACKAGES_OLD" ]; then _fake_layout_submessage "up to date" "$FAKE_PACKAGES_OLD"; fi
+            echo ""
+        fi
+
+
+
+        #--------[ Install New Packages ]--------#
+        if [ "$FAKE_PACKAGES_INSTALL" ]; then
+            _fake_layout_message "Install" "$FAKE_CMD"
+            if [ "$FAKE_PACKAGES_UNAVAILABLE" ]; then
+                _fake_layout_submessage "unavailable" "$FAKE_PACKAGES_UNAVAILABLE"
+                _fake_debug_error_pause
+            fi
+            if [ "$FAKE_PACKAGES_OLD" ]; then _fake_layout_submessage "up to date" "$FAKE_PACKAGES_OLD"; fi
+            _fake_layout_submessage "installing" "$FAKE_PACKAGES_INSTALL"
+            echo ""
+            if [ "$FAKE_MODE_DEBUG" ] || [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+            _fake_manager_package_automation "$FAKE_CMD"
+            _fake_debug
+        fi
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/package/fake_manager_package_remove.sh b/src/fake-os/modules/manager/package/fake_manager_package_remove.sh
new file mode 100755
index 0000000..e986145
--- /dev/null
+++ b/src/fake-os/modules/manager/package/fake_manager_package_remove.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Remove/Uninstall Software ]--------#
+_fake_manager_package_remove () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify packages..."
+
+
+
+    #--------[ Parse Package Arguments ]--------#
+    else
+        FAKE_PACKAGES=$(echo "$@" | sed -e 's/^remove\ //g')
+
+
+
+        #--------[ Compile Command ]--------#
+        FAKE_CMD=""
+        case $FAKE_MANAGER in
+            apt) FAKE_CMD="sudo apt -y remove $FAKE_PACKAGES" ;;
+            apk) FAKE_CMD="sudo apk del $FAKE_PACKAGES" ;;
+            yum) FAKE_CMD="sudo yum -y remove $FAKE_PACKAGES" ;;
+            pacman) FAKE_CMD="sudo pacman --noconfirm -R $FAKE_PACKAGES" ;;
+            paru) FAKE_CMD="paru --noconfirm -R $FAKE_PACKAGES" ;;
+        esac
+
+
+
+        #--------[ Print Info ]--------#
+        _fake_layout_message "Remove" "$FAKE_CMD" "remove" "$FAKE_PACKAGES"
+
+
+
+
+        #--------[ Run Command ]--------#
+        $FAKE_CMD
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/package/fake_manager_package_search.sh b/src/fake-os/modules/manager/package/fake_manager_package_search.sh
new file mode 100755
index 0000000..a3c1dc3
--- /dev/null
+++ b/src/fake-os/modules/manager/package/fake_manager_package_search.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Search Packages ]--------#
+_fake_manager_package_search () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify packages..."
+
+
+
+    #--------[ Parse Package Arguments ]--------#
+    else
+        FAKE_PACKAGES=$(echo "$@" | sed -e 's/^search\ //g')
+
+
+
+        #--------[ Compile Command ]--------#
+        FAKE_CMD=""
+        case $FAKE_MANAGER in
+            apt) FAKE_CMD="apt-cache search $FAKE_PACKAGES" ;;
+            apk) FAKE_CMD="sudo apk search $FAKE_PACKAGES" ;;
+            dnf) FAKE_CMD="sudo dnf search $FAKE_PACKAGES" ;;
+            pacman) FAKE_CMD="pacman -Ss $FAKE_PACKAGES" ;;
+            paru) FAKE_CMD="paru -Ss $FAKE_PACKAGES" ;;
+        esac
+
+
+
+        #--------[ Print Info ]--------#
+        _fake_layout_message "Search" "$FAKE_CMD" "search" "$FAKE_PACKAGES"
+
+
+
+        #--------[ Run Command ]--------#
+        $FAKE_CMD
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/package/fake_manager_package_update.sh b/src/fake-os/modules/manager/package/fake_manager_package_update.sh
new file mode 100755
index 0000000..97df590
--- /dev/null
+++ b/src/fake-os/modules/manager/package/fake_manager_package_update.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ FAKE//OS Manager: Update Software ]--------#
+_fake_manager_package_update () {
+
+
+
+    #--------[ Configure Packages And Command ]--------#
+    FAKE_PACKAGES=""
+    FAKE_CMD=""
+    if [ "$(whoami)" != "root" ]; then echo && echo -n -e "${FCOLBOLD}FAKE//OS${FCOL0} Update "; fi
+    case $FAKE_MANAGER in
+        apt)
+            sudo apt -y update
+            FAKE_CMD="sudo apt -y upgrade"
+            FAKE_PACKAGES="$(apt list --upgradable 2>/dev/null | grep -v 'Listing' | sed -e 's/\/.*$//g' | tr '\n' ' ')"
+            ;;
+        apk)
+            sudo apk update
+            FAKE_CMD="sudo apk upgrade"
+            FAKE_PACKAGES="$(apk list --upgradable | awk '{print $1}' | tr '\n' ' ')"
+            ;;
+        dnf)
+            sudo dnf -y update
+            FAKE_CMD="sudo yum -y upgrade"
+            ;;
+        pacman)
+            sudo pacman -Syyy
+            FAKE_CMD="sudo pacman --noconfirm -Su"
+            FAKE_PACKAGES="$(pacman -Quq | tr '\n' ' ')"
+            ;;
+        paru)
+            paru -Syyy
+            FAKE_CMD="paru --noconfirm -Su"
+            FAKE_PACKAGES="$(paru -Quq | tr '\n' ' ')"
+            ;;
+    esac
+
+
+
+    #--------[ Run Command ]--------#
+    if [ "$FAKE_PACKAGES" ]; then
+        _fake_layout_message "Update" "$FAKE_CMD" "update" "$FAKE_PACKAGES"
+        _fake_manager_package_automation "$FAKE_CMD"
+    else
+        _fake_layout_message "Update" "$FAKE_CMD" "update" "No package updates available..."
+    fi
+
+
+
+    #--------[ Update Other Non-Managed Software ]--------#
+    if [ "$(command -v pihole)" ]; then
+        pihole -up
+    fi
+
+
+
+    echo ""
+}
diff --git a/src/fake-os/modules/manager/system/fake_manager_system_disable.sh b/src/fake-os/modules/manager/system/fake_manager_system_disable.sh
new file mode 100755
index 0000000..0137265
--- /dev/null
+++ b/src/fake-os/modules/manager/system/fake_manager_system_disable.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Disable Default System Daemons ]--------#
+_fake_manager_system_disable () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify system daemon(s)..."
+
+
+
+    #--------[ Parse System Daemons ]--------#
+    else
+        TMP_DAEMONS=$(echo "$@" | sed -e 's/^disable\ //g')
+
+
+
+        #--------[ Print Command information ]--------#
+        _fake_layout_message "Disable Default Init Deamon(s)" "$TMP_DAEMONS"
+
+
+
+        #--------[ Loop Through Daemons ]--------#
+        for TMP_DAEMON in $TMP_DAEMONS; do
+            case $ENV_INIT in
+                "systemd") sudo systemctl disable $TMP_DAEMON ;;
+                "openrc") sudo rc-update del $TMP_DAEMON ;;
+            esac
+        done
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/system/fake_manager_system_enable.sh b/src/fake-os/modules/manager/system/fake_manager_system_enable.sh
new file mode 100755
index 0000000..883a95e
--- /dev/null
+++ b/src/fake-os/modules/manager/system/fake_manager_system_enable.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Enable Default System Daemons ]--------#
+_fake_manager_system_enable () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify system daemon(s)..."
+
+
+
+    #--------[ Parse System Daemons ]--------#
+    else
+        TMP_DAEMONS=$(echo "$@" | sed -e 's/^enable\ //g')
+
+
+
+        #--------[ Print Command information ]--------#
+        _fake_layout_message "Enable Default Init Deamon(s)" "$TMP_DAEMONS"
+
+
+
+        #--------[ Loop Through Daemons ]--------#
+        for TMP_DAEMON in $TMP_DAEMONS; do
+            case $ENV_INIT in
+                "systemd") sudo systemctl enable $TMP_DAEMON ;;
+                "openrc") sudo rc-update add $TMP_DAEMON ;;
+            esac
+        done
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/system/fake_manager_system_restart.sh b/src/fake-os/modules/manager/system/fake_manager_system_restart.sh
new file mode 100755
index 0000000..0eff478
--- /dev/null
+++ b/src/fake-os/modules/manager/system/fake_manager_system_restart.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Restart System Daemons ]--------#
+_fake_manager_system_restart () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify system daemon(s)..."
+
+
+
+    #--------[ Parse System Daemons ]--------#
+    else
+        TMP_DAEMONS=$(echo "$@" | sed -e 's/^restart\ //g')
+
+
+
+        #--------[ Print Command information ]--------#
+        _fake_layout_message "Restart System Deamon(s)" "$TMP_DAEMONS"
+
+
+
+        #--------[ Run Restart ]--------#
+        _fake_manager_system_stop "$@"
+        _fake_manager_system_start "$@"
+        echo ""
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/system/fake_manager_system_start.sh b/src/fake-os/modules/manager/system/fake_manager_system_start.sh
new file mode 100755
index 0000000..aa276dd
--- /dev/null
+++ b/src/fake-os/modules/manager/system/fake_manager_system_start.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Start System Daemons ]--------#
+_fake_manager_system_start () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify system daemon(s)..."
+
+
+
+    #--------[ Parse System Daemons ]--------#
+    else
+        TMP_DAEMONS=$(echo "$@")
+        TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^start\ //g')
+        TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^restart\ //g')
+
+
+
+        #--------[ Print Command information ]--------#
+        if [ "$1" == "start" ]; then _fake_layout_message "Start Deamon(s)" "$TMP_DAEMONS"; fi
+
+
+
+        #--------[ Loop Through Daemons ]--------#
+        for TMP_DAEMON in $TMP_DAEMONS; do
+            case $ENV_INIT in
+                "systemd") sudo systemctl start $TMP_DAEMON ;;
+                "openrc") sudo rc-service $TMP_DAEMON start ;;
+            esac
+        done
+        if [ "$1" == "start" ]; then echo ""; fi
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/system/fake_manager_system_status.sh b/src/fake-os/modules/manager/system/fake_manager_system_status.sh
new file mode 100755
index 0000000..07c7596
--- /dev/null
+++ b/src/fake-os/modules/manager/system/fake_manager_system_status.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Start System Daemons ]--------#
+_fake_manager_system_status () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify system daemon(s)..."
+        echo ""
+
+
+
+    #--------[ Parse System Daemons ]--------#
+    else
+        TMP_DAEMONS=$(echo "$@")
+        TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^status\ //g')
+
+
+
+        #--------[ Print Command information ]--------#
+
+
+
+        #--------[ Loop Through Daemons ]--------#
+        for TMP_DAEMON in $TMP_DAEMONS; do
+            _fake_layout_message "Daemon Status" "$TMP_DAEMON"
+            case $ENV_INIT in
+                "systemd") systemctl status $TMP_DAEMON ;;
+                "openrc") rc-service $TMP_DAEMON status ;;
+            esac
+            echo ""
+        done
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/manager/system/fake_manager_system_stop.sh b/src/fake-os/modules/manager/system/fake_manager_system_stop.sh
new file mode 100755
index 0000000..077f852
--- /dev/null
+++ b/src/fake-os/modules/manager/system/fake_manager_system_stop.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Stop System Daemons ]--------#
+_fake_manager_system_stop () {
+
+
+
+    #--------[ Basic Error Handeling ]--------#
+    if [ ! "$2" ]; then
+        _fake_layout_message "Error" "Must specify system daemon(s)..."
+
+
+
+    #--------[ Parse System Daemons ]--------#
+    else
+        TMP_DAEMONS=$(echo "$@")
+        TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^stop\ //g')
+        TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^restart\ //g')
+
+
+
+        #--------[ Print Command information ]--------#
+        if [ "$1" == "stop" ]; then _fake_layout_message "Stop System Deamon(s)" "$TMP_DAEMONS"; fi
+
+
+
+        #--------[ Loop Through Daemons ]--------#
+        for TMP_DAEMON in $TMP_DAEMONS; do
+            case $ENV_INIT in
+                "systemd") sudo systemctl stop $TMP_DAEMON ;;
+                "openrc") sudo rc-service $TMP_DAEMON stop ;;
+            esac
+        done
+        if [ "$1" == "stop" ]; then echo ""; fi
+
+
+
+    fi
+}
diff --git a/src/fake-os/modules/utils/alias/fake_alias_ls.sh b/src/fake-os/modules/utils/alias/fake_alias_ls.sh
new file mode 100755
index 0000000..f7d3684
--- /dev/null
+++ b/src/fake-os/modules/utils/alias/fake_alias_ls.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ LS Alias ]--------#
+if [ ! "$(command -v busybox)" ]; then
+    alias ls='ls --color=auto'      # Colorise LS
+    alias ll="ls -alh"              # LL functionality
+    alias ip="ip -c"                # Colorise IP
+fi
diff --git a/src/fake-os/modules/utils/config/fake_utils_config_add.sh b/src/fake-os/modules/utils/config/fake_utils_config_add.sh
new file mode 100755
index 0000000..13a2cb1
--- /dev/null
+++ b/src/fake-os/modules/utils/config/fake_utils_config_add.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - New FAKE//OS config file
+# $2 - System config file location
+
+
+
+#--------[ Add To Config File ]--------#
+_fake_utils_config_add () {
+
+
+
+    #--------[ Bakup Original Config ]--------#
+    _fake_utils_config_backup ${2}
+
+
+
+    #--------[ Message Output ]--------#
+    _fake_layout_message "Append Config" "${2}" "new" "${1}" "cat" "${2}.original + ${2}.fake > ${2}"
+
+
+
+    #--------[ Append Config ]--------#
+    mkdir -p $(dirname $2)
+    cp -r "${1}" "${2}.fake"
+    cat "${2}.original" > "${2}"
+    cat "${2}.fake" >> "${2}"
+    echo ""
+
+
+
+    #--------[ Debugging ]--------#
+    if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+}
diff --git a/src/fake-os/modules/utils/config/fake_utils_config_backup.sh b/src/fake-os/modules/utils/config/fake_utils_config_backup.sh
new file mode 100755
index 0000000..a81ab9d
--- /dev/null
+++ b/src/fake-os/modules/utils/config/fake_utils_config_backup.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - System config file location
+
+
+
+#--------[ Backup Config File ]--------
+_fake_utils_config_backup () {
+    if [ -f "${1}" ] && [ ! -f "${1}.original" ]; then
+        cp -rv "${1}" "${1}.original"
+    fi
+}
diff --git a/src/fake-os/modules/utils/config/fake_utils_config_pull.sh b/src/fake-os/modules/utils/config/fake_utils_config_pull.sh
new file mode 100755
index 0000000..8bfcce7
--- /dev/null
+++ b/src/fake-os/modules/utils/config/fake_utils_config_pull.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - New FAKE//OS config file
+# $2 - System config file location
+
+
+
+#--------[ Pull Remote Config Files ]--------#
+_fake_utils_config_pull () {
+
+
+
+    #--------[ Git Clone ]--------#
+    if [ "$(echo $1 | grep 'git')" ]; then
+        rm -rf $2
+        mkdir -p $2
+        git clone --depth 1 $1 $2
+        _fake_layout_message "Git Pull" "$1 -> $2" "output" "$(ls $2 | tr '\n' ' ')"
+
+
+
+    #--------[ Curl Tar.Gz Pull ]--------#
+    elif [ "$(echo $1 | grep 'tar.gz')" ]; then
+        if [ ! "$(curl -Is $1 | grep '200 OK')" ]; then
+            _fake_layout_message "Error" "Remote file missing..." "missing" "$1"
+        else
+            mkdir -p $2
+            curl $1 | tar xzf - -C $2/
+            _fake_layout_message "Curl Pull" "$1 -> $2" "output"  "$(ls $2 | tr '\n' ' ')"
+        fi
+    fi
+
+
+
+    #--------[ Debugging ]--------#
+    if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+}
diff --git a/src/fake-os/modules/utils/config/fake_utils_config_regex.sh b/src/fake-os/modules/utils/config/fake_utils_config_regex.sh
new file mode 100644
index 0000000..8c621a9
--- /dev/null
+++ b/src/fake-os/modules/utils/config/fake_utils_config_regex.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - Search String
+# $2 - Replace String
+# $3 - System config file location
+
+
+
+#--------[ Regex Find/Replace Config File ]--------#
+_fake_utils_config_regex () {
+
+
+
+    #--------[ Backup Original Config ]--------#
+    _fake_utils_config_backup ${3}
+
+
+
+    #--------[ Message Output ]--------#
+    _fake_layout_message "Regex Find and Repalce" "${3}" "search" "${1}" "replace" "${2}"
+
+
+
+    #--------[ Parse and Clean Variables ]--------#
+    TMP_SEARCH="$1"
+    TMP_SEARCH="$(echo $TMP_SEARCH | sed 's/\//\\\//g' )"
+    TMP_SEARCH="$(echo $TMP_SEARCH | sed 's/\%/\\\%/g' )"
+
+    TMP_REPLACE="$2"
+    TMP_REPLACE="$(echo $TMP_REPLACE | sed 's/\//\\\//g' )"
+    TMP_REPLACE="$(echo $TMP_REPLACE | sed 's/\%/\\\%/g' )"
+
+    TMP_PATH="$3"
+
+
+
+    #--------[ Regex Find/Replace Config ]--------#
+    sed -i "s/$TMP_SEARCH/$TMP_REPLACE/g" $TMP_PATH
+    echo ""
+
+
+
+    #--------[ Debugging ]--------#
+    if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+}
diff --git a/src/fake-os/modules/utils/config/fake_utils_config_replace.sh b/src/fake-os/modules/utils/config/fake_utils_config_replace.sh
new file mode 100755
index 0000000..784b26c
--- /dev/null
+++ b/src/fake-os/modules/utils/config/fake_utils_config_replace.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - New FAKE//OS config file
+# $2 - System config file location
+
+
+
+#--------[ Replace Config File ]--------#
+_fake_utils_config_replace () {
+
+
+
+    #--------[ Backup Original Config ]--------#
+    _fake_utils_config_backup ${2}
+
+
+
+    #--------[ Message Output ]--------#
+    _fake_layout_message "Replace Config" "${2}" "new" "${1}"
+
+
+
+    #--------[ Replace Config ]--------#
+    mkdir -p $(dirname $2)
+    cp -rv "${1}" "${2}.fake"
+    cp -rv "${1}" "${2}"
+    echo ""
+
+
+
+    #--------[ Debugging ]--------#
+    if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi
+}
diff --git a/src/fake-os/modules/utils/config/fake_utils_config_restore.sh b/src/fake-os/modules/utils/config/fake_utils_config_restore.sh
new file mode 100755
index 0000000..5ecf77c
--- /dev/null
+++ b/src/fake-os/modules/utils/config/fake_utils_config_restore.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - New FAKE//OS config file
+# $2 - System config file location
+
+
+
+#--------[ Restore Config File ]--------
+_fake_utils_config_restore () {
+    if [ -f "${1}.original" ]; then
+        cp -r "${1}" "${1}.original"
+        if [ $? == 0 ]; then
+          _fake_layout_message "Restore Config" "${1}" "backup" "${1}.original"
+          cp -rv "${1}.original" "${1}"
+        fi
+    else
+        _fake_layout_message "Error" "No backup avaiable" "missing" "${1}.original"
+    fi
+}
diff --git a/src/fake-os/modules/utils/environment/fake_environment_print.sh b/src/fake-os/modules/utils/environment/fake_environment_print.sh
new file mode 100755
index 0000000..f1d6a60
--- /dev/null
+++ b/src/fake-os/modules/utils/environment/fake_environment_print.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Print Environment Variables ]--------#
+_fake_environment_print () {
+    echo ""
+    echo "$ENV_DISTRO [$ENV_INIT] $ENV_MANAGER"
+    echo "-------------------------------------"
+    echo "$ENV_MAKE $ENV_MODEL"
+    echo ""
+    if [ "$FAKE_MODE_DEBUG" ]; then echo "MODE_DEBUG"; fi
+    if [ "$FAKE_MODE_FAST" ]; then echo "MODE_FAST"; fi
+    if [ "$FAKE_MODE_SLOW" ]; then echo "MODE_SLOW"; fi
+    echo ""
+    if [ "$ENV_VIRTUAL" == "LXC" ]; then
+        echo "cpu: $ENV_CPU $ENV_ARCH $ENV_VTAG"
+    elif [ "$ENV_VIRTUAL" == "VM" ]; then
+        echo "cpu: $ENV_CPU $ENV_ARCH $ENV_VTAG"
+    else
+        echo "cpu: $ENV_CPU $ENV_ARCH"
+    fi
+    echo "mem: $ENV_MEMORY"
+    echo "gpu: $ENV_GPU"
+    echo "net: $ENV_NETWORK"
+}
diff --git a/src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh b/src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh
new file mode 100755
index 0000000..ecc605e
--- /dev/null
+++ b/src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Gnome Extensions ]--------#
+_fake_utils_gnome_extensions () {
+    echo " - enable [$1]"
+    if [ "$(_fake_utils_linux_status gdm | grep started)" ]; then
+        gnome-extensions enable "$1"
+    else
+        dbus-launch --exit-with-session gnome-extensions enable "$1"
+    fi
+}
diff --git a/src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh b/src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh
new file mode 100755
index 0000000..b131709
--- /dev/null
+++ b/src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Gnome Settings ]--------#
+_fake_utils_gnome_settings () {
+    if [ "$(_fake_utils_linux_status gdm | grep started)" ]; then
+        if [ "$3" ]; then
+            gsettings set "$1" "$2" "$3"
+            echo " - set [$2] $3"
+        else
+            echo "Graphical"
+        fi
+    else
+        if [ "$3" ]; then
+            dbus-launch --exit-with-session gsettings set "$1" "$2" "$3"
+            echo " - set [$2] $3"
+        else
+            echo "Terminal"
+        fi
+    fi
+}
diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh
new file mode 100755
index 0000000..562cbda
--- /dev/null
+++ b/src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Cache Clear ]--------#
+_fake_utils_linux_appdata () {
+    if [ ! -L $1 ]; then
+        _fake_layout_message "Move and link" "$1 -> /data/$2"
+        mv -v $1 /data/$2
+        ln -sfv /data/$2 $1
+        echo ""
+    else
+        _fake_layout_message "$1" "Symlink already exists..."
+    fi
+}
diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh
new file mode 100755
index 0000000..3771245
--- /dev/null
+++ b/src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env sh
+
+
+
+#--------[ Cache Clear ]--------#
+_fake_utils_linux_flushcache () {
+
+
+
+    #--------[ Flush System Cache In Memory ]--------#
+    TMP_MEM_PRE=$(free -h | grep 'Mem:' |  awk '{ print $4}')
+    echo ""
+    sudo -u root $ENV_SHELL -c "sync; echo 3 > /proc/sys/vm/drop_caches"
+    TMP_MEM_POST=$(free -h | grep 'Mem:' |  awk '{ print $4}')
+    _fake_layout_message "Clear Cache" "echo 3 > /proc/sys/vm/drop_caches" "free memory" "$TMP_MEM_PRE -> $TMP_MEM_POST"
+
+
+
+    #--------[ Flush DNS Cache ]--------#
+    if [ "$(command -v systemctl)" ]; then
+        sudo systemd-resolve --flush-caches
+        sudo resolvectl flush-caches
+    elif [ "$(command -v ndsmasq)" ]; then
+        sudo killall -HUP dnsmasq
+    fi
+}
diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh
new file mode 100755
index 0000000..93ce80a
--- /dev/null
+++ b/src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - System user
+# $2 - Command
+
+
+
+#--------[ Bootstrap User Shell ]--------#
+_fake_utils_linux_shellstrap () {
+
+    sudo -u "$1" $ENV_SHELL -c ". /usr/share/fake-os/fake_init.sh --quiet && $2"
+
+}
diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_status.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_status.sh
new file mode 100755
index 0000000..15b2771
--- /dev/null
+++ b/src/fake-os/modules/utils/linux/fake_utils_linux_status.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env sh
+
+
+
+# $1 - Init System Daemon
+
+
+
+#--------[ Cache Clear ]--------#
+_fake_utils_linux_status () {
+
+
+
+    #--------[ Get SystemD Data ]--------#
+    if [ "$ENV_INIT" == "systemd" ]; then
+        TMP_ENABLED="$(systemctl status $1 | grep -e 'Loaded' | grep -e 'enabled;')"
+        TMP_STARTED="$(systemctl status $1 | grep -e 'Active' | grep -e 'running')"
+
+
+
+    #--------[ Get OpenRC Data ]--------#
+    elif [ "$ENV_INIT" == "openrc" ]; then
+        TMP_ENABLED="$(rc-update -a | grep gdm | grep -e 'boot' -e 'default' -e 'sysinit')"
+        TMP_STARTED="$(rc-service $1 status | grep started)"
+    fi
+
+
+
+    #--------[ Output Data ]--------#
+    if [ "$TMP_ENABLED" ]   && [ "$TMP_STARTED" ];   then echo "enabled started";  fi
+    if [ ! "$TMP_ENABLED" ] && [ "$TMP_STARTED" ];   then echo "disabled started"; fi
+    if [ "$TMP_ENABLED" ]   && [ ! "$TMP_STARTED" ]; then echo "enabled stopped";  fi
+    if [ ! "$TMP_ENABLED" ] && [ ! "$TMP_STARTED" ]; then echo "disabled stopped"; fi
+}