{"id":40748942,"url":"https://github.com/karlek/lappis","last_synced_at":"2026-01-21T15:38:56.656Z","repository":{"id":39880145,"uuid":"453641084","full_name":"karlek/lappis","owner":"karlek","description":"Toy operating system","archived":false,"fork":false,"pushed_at":"2024-04-04T22:02:00.000Z","size":11250,"stargazers_count":3,"open_issues_count":7,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-05T21:28:22.575Z","etag":null,"topics":["operating-system"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karlek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-01-30T09:48:09.000Z","updated_at":"2024-04-14T23:43:56.748Z","dependencies_parsed_at":"2024-04-14T23:43:50.935Z","dependency_job_id":"c2c1702e-1c47-4c70-8965-07c9f128a427","html_url":"https://github.com/karlek/lappis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/karlek/lappis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlek%2Flappis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlek%2Flappis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlek%2Flappis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlek%2Flappis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karlek","download_url":"https://codeload.github.com/karlek/lappis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karlek%2Flappis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28635919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T15:01:31.228Z","status":"ssl_error","status_checked_at":"2026-01-21T14:42:58.942Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["operating-system"],"created_at":"2026-01-21T15:38:55.841Z","updated_at":"2026-01-21T15:38:56.648Z","avatar_url":"https://github.com/karlek.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"logo/transparent-logo.png\" width=\"400\" alt=\"Lappis\"\u003e\n\n[![Compile][compile-badge]][compile]\n\nA toy 64-bit operating system.\u003cbr\u003e\n\n\n[Features](#features) •\n[Getting started](#getting-started)\n\n\u003c/div\u003e\n\n## Features\n\n* Featuring a unique file system: **zipfs**. Your whole file system is mapped in\n  memory from a single zip archive :kissing_smiling_eyes::ok_hand:\n* Re-live your glory days with keyboard and mouse drivers from the PS2 era.\n* Run RIP relative executables in userland with support for a whopping **1**\n  system call(s)!\n* The kernel is written in nasm, C, Rust and Zig for maximum spaghetti!\n* Feel protected by SMEP and SMAP. Now you only have to worry about performance!\n* NoTakeBack heap-allocator, don't worry about `free()`'s, you can't anyway!\n* And of course: you can render a **mandelbrot**!\n\n## Getting started\n\nA little appetizer of what you'll experience before we begin.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"notes/screenshots/first-dog.png\"\u003e\n\u003c/div\u003e\n\n### Docker\n\n```\n# Build in docker.\n$ docker build -t lappis-builder .\n\n# We set --user to create build artifacts as our user.\n$ docker run --rm -it --user \"$(id -u):$(id -g)\" -v $PWD:/lappis lappis-builder\n\n# Run on host.\n$ ./run.sh\n```\n### Dependencies\n\nWe need a few dependencies before we can compile and run lappis.\n\n\u003cdetails\u003e\n\u003csummary\u003eArch\u003c/summary\u003e\n\n```\n# Arch\n# Build\npacman -S nasm mtools clang rustup zig libisoburn\n\n# Dev\npacman -S bear\n\n# Run\npacman -S qemu-full\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eUbuntu\u003c/summary\u003e\n\n```\napt install -y nasm clang mtools\n\n# Can't believe this is the recommended way to install rustup...\ncurl https://sh.rustup.rs -sSf | sh\n\nsnap install zig --classic --beta\n```\n\n\u003c/details\u003e\n\n### Configure Rust\n\nWe need to tell Rust to use the nightly channel and configure it so that we can\nbuild freestanding targets.\n\n```\nrustup toolchain install nightly\nrustup override set nightly\nrustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu\n```\n\nNow we are good to go!\n\n### Running\n\nJust run!\n```\nmake run\n```\n\n## Roadmap\n\nIn the near future:\n\n* Scheduling\n* shell / pid 0 aka init\n\n## Naming\n\nThe name original name was lapis, which means stone in latin since an operating\nsystem acts as the foundation for what's to come. However, it fits even better\nthan we imagined since this OS is as dumb as a bag of rocks.\n\nLater, the name affectionately became Lappis.\n\n\n## Acknowledgments\n\n* https://os.phil-opp.com/\n* https://wiki.osdev.org/\n* https://github.com/SerenityOS/serenity\n\n\n[logo]: logo/transparent-logo.png\n[compile-badge]: https://github.com/karlek/lappis/actions/workflows/build.yml/badge.svg?branch=main\n[compile]: https://github.com/karlek/lappis/actions/workflows/build.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarlek%2Flappis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarlek%2Flappis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarlek%2Flappis/lists"}