# NOSE:pluto ## Installation 1. Make a fresh RPi image with a "nose" user. 2. Clone this repo 3. From the root of this repo, run: bun remote:install 4. When it's done (it'll reboot) visit: http://nose-pluto.local And to make sure DNS is working: http://ping.nose-pluto.local/ 5. Have fun! ## Local Dev Running the server will create `~/nose` for you to play with. # setup git w/ two `origin` remotes + pre-commit hook git config --unset-all remote.origin.pushurl git remote set-url --push origin https://github.com/defunkt/nose-pluto git remote set-url --add --push origin https://git.nose.space/defunkt/nose-pluto git config core.hooksPath .githooks # go about your business bun install bun dev open localhost:3000 ## Production Dev Make sure you bundle the JS: bun run bundle If you want to test (or run) production with DNS features, use `NO_DNS`: env NO_DNS=1 NODE_ENV=production bun start You can also use the package commands: # run without DNS bun prod-nodns # run normally bun prod ## Commands Commands can return one of these types: - `string` - `{ error: string }` - `{ html: string }` - `{ text: string }` They can also `throw` to display an error. Additionally, you can return JS that gets immediately run in the browser using `script:`: - `{ html: string, script: string }` - `{ text: string, script: string }` - `{ script: string }` ## Fonts Use this to examine what's inside the C64 .woff2 font file in public/vendor: https://wakamaifondue.com/ ## Pluto Goals: Phase 1 - [x] Hosts valtown-style Bun apps (for your home network) - [x] Provides a NOSE terminal/shell GUI - [x] Runs one-shot TypeScript commands (via NOSE terminal) - [x] Has a 960x540 (16:9) virtual screen size that scales to the actual size of the display - [x] Runs on a Raspberry Pi 5 ## Pluto Goals: Phase 2 - [ ] `nose` CLI - [ ] game/bin/www cartridges - [x] public tunnel for your NOSE webapps - [x] public tunnel lives through reboots - [o] tunnel to the terminal -- Not doing this for now! - [x] web browser - [x] browser commands - [x] remember your "mode" - [x] status bar on terminal UX - [x] quickly open the current webapp - [x] "project"-based rehaul - [x] self updating NOSE server - [x] `pub/` static hosting in webapps - [x] upload files to projects - [-] pico8-style games - [x] init/update/draw - [x] simple drawing api - [x] gamepad support - [ ] sounds - [ ] maps - [ ] etc...? ## Future Goals (need to be split into Phases) - [ ] `nose` can find your NOSEputer via mDNS/Bonjour - [ ] Shrimp! - [ ] CodeMirror Editor - [ ] cron tasks - [ ] prompt() - [ ] confirm() - [ ] faster boot (turn off stuff like CUPS) - [ ] SSD - [ ] NOSE App Store -- "There's an app for that" (browse + install carts) - [ ] System dashboard (CPU, memory) - [ ] Write Your Own Daemons (MUD? FTPd?) - [ ] Daemon Dashboard - [ ] cloud backup for projects - [ ] "sleep" / "wake" (disable monitor) - [ ] themes - [ ] pixel art boot animation