Operating Systems
The four operating systems, the boot menu, accounts, Nimbus, files and the app store.
Every laptop has a serial number, such as ZL-7F3K-92QD, and an internal drive on its SSD. The drive holds the installed OS, its accounts, settings, home folders, browser history and system log. It is kept on the server in the zyke_laptop_drives table, created on start, and is keyed by the SSD's serial, so a drive goes wherever its SSD goes. See Hardware & Servicing.
Anyone who uses a laptop someone else put down works on that laptop's drive, not their own.
#The Four OSes
| OS | Boots from | What it keeps |
|---|---|---|
| Facade 11 Pro | The drive. New laptops come with it, set by os.default. | Everything, on the drive or in Nimbus: accounts, settings, wallpaper, device name, home folder and history. A password is all that protects it, and it is the easiest to crack. |
| Lumen | The drive, once installed from its USB stick. | The same, behind a password that is harder to crack. Its home folder and history stay locked to Crowbar until the password is cracked, and a strong one holds for good. |
| Solace | The drive, once installed from its USB stick. | The same as Facade, and just as easy to crack. Its installer stick can also reset the local password. |
| Veil | A USB stick, live. | Nothing on the drive. Like Tails it forgets everything when it shuts down, except its Persistent folder. Its settings stay on the player's client. Veil has no account. |
Each OS has its own browser, see Wi-Fi & Browsing. For how the OS behaves when the laptop is closed or put away, see Staying On.
boot in the config sets the startup sequence: bootloader and greeter show those screens, and speed multiplies every step, with 0 going straight to the desktop.
#Boot Menu
The laptop's startup screen shows F12 Boot Menu. Pressing F12, or clicking the hint, opens the boot menu: the internal drive with its OS, and every boot stick the player has. The server checks the sticks when the menu opens and again when one is picked. Without a choice the laptop boots its drive.
A laptop without an SSD leaves the internal drive out of the menu, but USB sticks still boot. A drive that was wiped without a new OS shows "No bootable device".
#USB Sticks & Installers
| Item | What it does |
|---|---|
veil_usb | Boots Veil live from the stick. Veil never reads or writes the drive. |
lumen_installer, solace_installer, facade_installer | Open the installer. It names the drive, warns that everything on it is erased, and installs only once the player confirms. The server wipes the drive, writes the new OS to the drive and the laptop item, and the laptop restarts into the new OS's first-run setup. |
recovery_usb | Boots Crowbar, the recovery toolkit. See Ownership & Recovery. |
The stick items are set in os.usb. Setting one to false offers that option to everyone without an item. The boot menu lists the sticks a player carries as well as those plugged into the laptop's USB-A port; os.carriedSticks = false makes players plug the stick in first. See Boot Sticks in the Port.
The stick a player boots or installs from shows in the laptop's USB-A port for everyone nearby, while Veil, Crowbar or the installer runs from it. It comes out when the laptop powers off, boots its drive or is put away, and when the player no longer carries the stick or can no longer use that laptop.
Reinstalling is also how a careful player gets rid of traces: the old OS, its accounts and everything they kept on the drive are gone for good. A worn-out SSD that turned read-only refuses an install.
On Facade and Solace, picking the installer of the OS already on the drive offers a choice: reset the local password, or erase and reinstall. See Repair Sticks.
#Accounts
Facade, Lumen and Solace start with one account, made by the OS's first-run setup. Passwords are hashed with bcrypt on the server, and an empty password is allowed for players who don't want one. A password hint is optional and may not contain the password.
- After
accounts.maxAttemptswrong passwords in a row the laptop refuses passwords foraccounts.lockoutSeconds. The count is kept per drive, so it carries over to the next player who tries. - The server remembers who signed in to which laptop until they power it off or leave.
- Every boot, sign-in, failed password, password change, install and network joined is written to the drive's system log.
luaaccounts = {
maxAttempts = 5,
lockoutSeconds = 60,
-- Accounts one drive keeps besides the one setup made, the Nimbus users who signed in as Other user included
maxUsers = 10,
},
#Users
A drive can have more accounts than the one setup made, such as a business's computer where the boss and each employee sign in to their own. Each user has their own password, home folder, settings and browser history, and a laptop left on keeps the windows of each user apart. The sign-in screen lists them: Facade in its bottom left corner, Lumen in its user list and Solace in a row of pictures. The lock screen switches to another user too.
- The account setup made is always an administrator. In Settings (Accounts on Facade, Users on Lumen and Solace) administrators add local users with a name and password, make another user an administrator or a standard user, set a new password for a local user who forgot theirs, and remove users. Removing a local user deletes their files, settings and history from the drive. Standard users only see the list.
- Guest lets anyone sign in without a password. Nothing they do is kept.
- Other user, only with
cloud.mode = "synced", lets anyone sign in with their own Nimbus account. Their files, settings and history stay in their Nimbus account and follow them; the drive only remembers that they signed in, so they are listed from then on. Their wrong passwords count towards the same lockouts. accounts.maxUserscaps the users a drive has besides the one setup made, Nimbus users included.- Crowbar, the repair sticks and Nimbus' devices list work on the account setup made and leave the other users as they are. Reinstalling the OS erases them all.
#Nimbus Cloud Accounts
By default a Facade, Lumen or Solace account is a Nimbus account ([email protected]) that belongs to the character, so losing a laptop loses nothing. Setup offers Continue as the character's own account, Use another account whose address and password the player knows, or a new account. The drive then keeps only a link to it.
The account's home folder, personal settings (theme, wallpaper, clock, language and the like) and browser history live in the cloud, once per OS, and show on every laptop linked to the account. The device name and volume stay with the laptop. One password signs in on every linked laptop. When two laptops save the same thing, the newest save wins.
luacloud = {
-- "synced" keeps accounts in the cloud, "drive" keeps everything on the laptop's SSD
mode = "synced",
-- Lets players pick a local account kept only on the drive while mode is "synced"
localAccounts = true,
-- Laptops one account can be signed in on at once
maxDevices = 10,
-- "phone" texts a reset code and works as "instant" without a phone resource, false turns resets off
reset = "phone",
-- Texts the account's character about new laptops, resets and sign-outs
alerts = true,
},
#Synced vs Drive Mode
mode = "synced"keeps accounts in Nimbus. WithlocalAccounts = truea player can still pick a local account kept only on the drive, the hardcore choice.mode = "drive"keeps everything on the SSD; losing the SSD loses it all. Switching to"drive"turns each linked drive into a local account with a copy of its data the first time it is read. Switching back moves nothing: local accounts stay local until their player moves them in.
The tables zyke_laptop_cloud_accounts, zyke_laptop_cloud_data and zyke_laptop_cloud_devices are created on start.
#Account Settings
- In Settings, Devices (Your devices on Facade) lists the account's laptops. Remove signs a lost or stolen one out at once and leaves nothing of the account on it. An account is on at most
cloud.maxDeviceslaptops. - Stop syncing turns this laptop's drive into a local account with a copy of the data.
- Sign in with Nimbus instead moves a local account into the character's own account, asking which files to keep when both sides have some.
- Your laptops lists the laptops the character owns, see Ownership.
#Forgot Password
Forgot password appears only for Nimbus accounts, and only the account's own character can finish it. With cloud.reset = "phone" a 6-digit code is texted to their phone, and a character without a phone has to get one first. Without a phone resource that takes texts, and with "instant", the reset is instant. false turns resetting off. Natter does not have to be on.
A reset clears the lockouts, and every other laptop on the account has to sign in again; the same goes for changing the password. Local accounts and "drive" mode have no reset: only the hint, a repair stick, Crowbar or a reinstall.
#Lockouts & Alerts
Besides the per-drive lockout, each character gets 10 wrong passwords per Nimbus account in 15 minutes before a 15 minute lockout, so a thief guessing on one laptop never locks the owner out. Sign-ins, account creation, resets and device actions are rate limited per player.
With cloud.alerts = true the character is texted when a new laptop signs in, someone else asks for a reset, a laptop is signed out or the password is reset, when a phone resource takes texts. Replace SendLaptopCloudAlert in server/unlocked/hooks.lua to send these another way.
#Crowbar on Linked Drives
Crowbar and the repair sticks still work on a linked drive, but they get a frozen copy: opening Crowbar on a linked Facade or Solace drive, finishing it on a linked Lumen drive, or the repair stick of Facade or Solace turns the drive into a local account with the account's data as it was then. The account itself is never touched, and the drive leaves its devices list. Reinstalling unlinks the drive, and signing in again brings everything back.
#Files & History on the Drive
Facade, Lumen and Solace keep each account's home folder and browser history on the drive, or in Nimbus for a linked account. Home loads when the account signs in and saves a second after each change, with a trash folder inside it. History holds the last 300 sites visited, each with its address, title and time.
Only a player signed in to a laptop booted from its drive can read or write them, and the server checks every save against the drive's 320 KiB cap per section; past it the OS tells the player the drive is full. Veil never touches either, and whoever cracks the laptop's password finds both.
#Persistent Folder
Like Tails, Veil forgets everything when it shuts down. Files and notes live in memory while it runs, and only the Persistent folder in the home folder is still there on the next boot. files in the config decides where it is kept:
storage = "character", the default, keeps it in the database per character. It follows the character to any PC and survives a cleared cache. Thezyke_laptop_filestable is created on start, one row per character.storage = "client"keeps it on the player's PC. Every character played there shares one folder, and it is gone when the player clears their FiveM cache.
maxBytes caps one player's folder, 256 KiB by default; past it the OS tells the player the storage is full. Client storage never goes over 120000 bytes and character storage never over 320 KiB, because every save sends the whole folder to the server.
The folder belongs to the player at the keyboard, so on someone else's laptop they still have their own files.
luafiles = {
storage = "character",
maxBytes = 262144,
},
#App Store
Facade, Lumen and Solace have an app store on the desktop: Storefront on Facade, Bazaar on Lumen and App Market on Solace. The system apps, such as the browser, Settings, Files and the terminal, come installed. The rest are downloaded from the store:
| App | Id |
|---|---|
Onion Connection, needed for .onion sites on these OSes | connection |
| Shroud | chat |
| Natter | messenger |
| Drawing | paint |
| Presentations | slides |
| Apps other resources register | The app's id |
- Downloading needs a network connection. A downloaded app puts a shortcut on the desktop.
- Remove closes the app's windows and takes its shortcuts away. Its data stays, so it picks up where it left off if the player gets it again.
- The installed apps are kept in the account's home folder, so a Nimbus account has them on every laptop it signs in on.
- An account from before the store keeps every app it had.
- Veil and Crowbar run live with every app and have no store.
luaappStore = {
-- false installs every app from the start
enabled = true,
-- Apps a new account starts with besides the system apps: "connection", "chat", "messenger", "paint",
-- "slides" or the id of a registered app
preinstalled = {},
},
A resource can register its app with preinstalled = true to skip the store: each account gets it the first time it sees the app. An account that removes it keeps it removed. See Apps & Sites.