210 lines
14 KiB
HTML
210 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Miasma OS</title>
|
||
<link rel="icon" href="https://git.miasma-os.com/miasma/miasma-site/src/commit/589e0e52f7c99af8c70275a04f98d3fce036f971/assets/miasma-cyber.png">
|
||
<style>
|
||
/* ── Kanagawa‑Dragon palette ──────────────────────────────────────── */
|
||
:root {
|
||
--bg : #1f1f28; /* background */
|
||
--fg : #c0c0d0; /* foreground (text) */
|
||
--blue : #7aa2f7;
|
||
--cyan : #7dcfff;
|
||
--green : #9ece6a;
|
||
--orange : #ff9e64;
|
||
--purple : #bb9af7;
|
||
--red : #e27878;
|
||
--yellow : #e0af68;
|
||
}
|
||
|
||
/* ── Fake tiling (add later) ─────────────────────────────────────────────────── */
|
||
/* .page {
|
||
position: absolute;
|
||
inset: 0;
|
||
padding: 4rem 2rem;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
align-items: center;
|
||
background: #222;
|
||
opacity: 0;
|
||
transform: scale(0.95);
|
||
transition:
|
||
opacity 0.45s cubic-bezier(0.22, 1, 0.36, 1),
|
||
transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
|
||
pointer-events: none;
|
||
} */
|
||
/*
|
||
.page.active {
|
||
opacity: 1;
|
||
transform: scale(1);
|
||
pointer-events: auto;
|
||
} */
|
||
|
||
/* ── Global layout ─────────────────────────────────────────────────── */
|
||
html,body{margin:0;height:100%;font-family:monospace;background:var(--bg);color:var(--fg);}
|
||
#container{display:flex;flex-direction:column;height:100%;}
|
||
header{padding:0.8rem 1rem;background:var(--bg);border-bottom:1px solid var(--blue);}
|
||
h1{margin:0;font-size:1.2rem;color:var(--blue);}
|
||
nav{display:flex;background:var(--bg);border-bottom:1px solid var(--blue);}
|
||
nav button{
|
||
flex:1;padding:0.6rem 0;background:none;border:none;color:var(--fg);
|
||
cursor:pointer;transition:background .2s;
|
||
}
|
||
nav button.active{background:var(--blue);color:#fff;}
|
||
nav button:hover:not(.active){background:rgba(122,162,247,.2);}
|
||
|
||
/* ── Terminal‑style window ───────────────────────────────────────────── */
|
||
#terminal{
|
||
flex:1;padding:1rem;overflow:auto;
|
||
background:var(--bg);
|
||
box-shadow: inset 0 0 0 2px var(--blue);
|
||
}
|
||
.prompt{color:var(--cyan);}
|
||
.cmd{color:var(--green);}
|
||
.link{color:var(--yellow);text-decoration:none;}
|
||
.link:hover{text-decoration:underline;}
|
||
pre.ascii-art {
|
||
font-family: "Courier New", monospace;
|
||
font-size: 14px;
|
||
line-height: 1.2;
|
||
white-space: pre;
|
||
margin: 0;
|
||
color:var(--yellow);
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div id="container">
|
||
<header><h1>Miasma OS</h1></header>
|
||
<nav>
|
||
<button id="tab-home" class="active">Home</button>
|
||
<button id="tab-git">User Repository</button>
|
||
<button id="tab-wiki">Wiki</button>
|
||
<button id="tab-about">About</button>
|
||
</nav>
|
||
<div id="terminal">
|
||
<pre class=ascii-art>
|
||
|
||
.
|
||
t ;W
|
||
.. : Ej .. f#E .. : ..
|
||
,W, .Et E#, ;W, .E#f ,W, .Et ;W,
|
||
t##, ,W#t E#t j##, iWW; t##, ,W#t j##,
|
||
L###, j###t E#t G###, L##Lffi L###, j###t G###,
|
||
.E#j##, G#fE#t E#t :E####, tLLG##L .E#j##, G#fE#t :E####,
|
||
;WW; ##,:K#i E#t E#t ;W#DG##, ,W#i ;WW; ##,:K#i E#t ;W#DG##,
|
||
j#E. ##f#W, E#t E#t j###DW##, j#E. j#E. ##f#W, E#t j###DW##,
|
||
.D#L ###K: E#t E#t G##i,,G##, .D#j .D#L ###K: E#t G##i,,G##,
|
||
:K#t ##D. E#t E#t :K#K: L##, ,WK, :K#t ##D. E#t :K#K: L##,
|
||
... #G .. E#t ;##D. L##, EG. ... #G .. ;##D. L##,
|
||
j ,;. ,,, .,, , j ,,, .,,
|
||
</pre>
|
||
|
||
<div id="content-home">
|
||
<p><span class="prompt">➜</span> <span class="cmd">~/coming-soon</span></p>
|
||
<p>Welcome to <strong>Miasma OS</strong> - An immutable, security first, Arch based distribution. Designed to be secure by default but modern and user friendly.</p>
|
||
<p><strong>Overview:</strong></p>
|
||
<p>MiasmaOS aims at being a security hardened, immutable Linux distribution built on top of Arch Linux. Whilst this distribution takes inspiration from GrapheneOS, Secureblue, DivestOS, and many others hardened systems, the goal here is to make a hardened distribution that is also modern and easy to use without much configuration. It is an attempt to break the privacy/security paradox where the common belief is that if it is secure and private, it is not user friendly.
|
||
</p>
|
||
<p><strong>Security features</strong></p>
|
||
<ul>
|
||
<li>Custom kernel that adds additional security to the hardened-linux kernel</li>
|
||
<li> Applications run with hardened_malloc by GrapheneOS</li>
|
||
<li> Flatpak app store for installing GUI applications</li>
|
||
<li> Immutable base, so root files cannot be tampered with</li>
|
||
<li> Firejail and Apparmor for additional containerization for non Flatpak applications</li>
|
||
<li> XWayland-Satellite for rather than XWayland for X11 apps (this uses a fake root so X11 can't break containment)</li>
|
||
<li> Cosmic desktop. Whilst I can acknowledge the Cosmic desktop is still in beta, it is written in Rust (memory safety) and does not contain the amount of unsafe X11 code that other desktop environments like Gnome and KDE Plasma have. Its both a logical choice and good futureproofing.</li>
|
||
<li> Opendoas to replace sudo. This distro doesn't completely remove elevated privileges (by default) but it does replace sudo with doas. doas was ported from OpenBSD and has a smaller codebase so it has a smaller attack surface and is easier to maintain.</li>
|
||
<li> doas has also been limited. If you must run higher privilege commands that are out of scope for doas, please use run0. The distribution does attempt to treat you like an adult, and you can use elevated permissions, but this is made somewhat inconvenient purposely to discourage/minimize it.</li>
|
||
<li> Blacklisted module - copied from Secureblue</li>
|
||
<li> Brace scripts by DivestOS to add hardened policies to certain applications.</li>
|
||
<li> Boot and System Integrity:<br>
|
||
MiasmaOS boots through systemd‑boot with Secure Boot enabled on UEFI firmware. The boot chain is measured with the TPM 2.0, guaranteeing that every component—from the bootloader to the kernel and initramfs—is cryptographically verified before execution.</li>
|
||
<li> Btrfs root with a dedicated @snapshots subvolume for rollback.</li>
|
||
<li> Optional LUKS2 encryption (AES‑XTS, 512‑bit key) on install.</li>
|
||
</ul>
|
||
<p><strong>Additional Features</strong></p>
|
||
<ul> <li>The default browser is a slightly modified version of Ungoogled-Chromium. Ungoogled-Chromium needs certain flags switched on for full Wayland support, and since avoiding anything X11 is a top priority of this distribution, that needs to be on by default. Additionally the Chromium-Web-Store extension by NeverDecaf comes preinstalled, so users can access their favorite browser extensions. Note that browser extensions can be a big security risk and by default, only a handful of extensions are approved in the modified Brace policy (located at /etc/chromium/policies).
|
||
<br>
|
||
<i>Additional note on this: Ungoogled-Chromium is not simply "Chromium without Google". There are many privacy and security features that have been added to the browser that allow it to stand on its on amongst other browsers like Brave, Librewolf, Mullvad etc.</i></li>
|
||
<li> Neovim is the default text editor and Vim is not installed. Additionally this is preconfigured with LazyVim. This is what I use and I don't really see a purpose for Vim in a modern desktop environment.</li>
|
||
<li> Kanagawa Dragon theme everywhere.</li>
|
||
<li> Alacritty is the default terminal. I prefer Ghostty but with memory safety in mind, I went with as many Rust apps as I could. Why not Wezterm? For now, Alacritty feels like more of a stable longterm project to me. I may be wrong but that is the vibe I get.</li>
|
||
<li> Zsh is the default shell. Bash is still included as it is required for root processes, but Zsh is the default shell here as we are attempting to build a modern and convenient distribution that also happens to be extremely secure.</li>
|
||
<li> The 'MiasmaAUR' user repository is also available for additional packages. All these packages have been signed, and are available for auditing. Keeping this repository small makes it easier to vet the packages rather than using yay or paru and downloading from the entire AUR catelog. Please audit these packages yourself and send any requests for packages you would like to be added to the repository.</li>
|
||
</ul>
|
||
</p></div>
|
||
<div id="content-git" style="display:none;">
|
||
<p><span class="prompt">➜</span> <span class="cmd">~/git.miasma-os.com</span></p>
|
||
<p>Welcome to the <strong>MiasmaAUR</strong> instance.</p>
|
||
<p>Git links:</p>
|
||
<ul>
|
||
<li><a class="link" href="https://git.miasma-os.com/miasma/miasma-aur">User package repository</a></li>
|
||
<li><a class="link" href="https://git.miasma-os.com/miasma/miasma-os">Miasma OS repo</a></li>
|
||
<li><a class="link" href="https://git.miasma-os.com/miasma/miasma-site" >Miasma website</a></li>
|
||
</ul>
|
||
</div>
|
||
<div id="content-wiki" style="display:none;">
|
||
<p><span class="prompt">➜</span> <span class="cmd">~/wiki.miasma-os.com</span></p>
|
||
<p>Welcome to the <strong>Wiki</strong></p>
|
||
<p>Useful links:</p>
|
||
<ul>
|
||
<li><a class="link" href="https://wiki.miasma-os.com/" target="_blank">Home</a></li>
|
||
<li><a class="link" href="https://wiki.miasma-os.com/login" target="_blank">Login</a></li>
|
||
<li><a class="link" href="https://wiki.miasma-ls.com/pages" target="_blank">Pages</a></li>
|
||
</ul>
|
||
</div>
|
||
<div id="content-about" style="display:none;">
|
||
<p><span class="prompt">➜</span> <span class="cmd">~/about_us</span></p>
|
||
<p style="color:#ff9e64"><strong>Coming soon - Miasma OS is still in development</strong></p>
|
||
<p>The inspiration for building Miasma OS is simply that I have done so much hardening to Arch Linux on my desktop, and while all the policies, tools,
|
||
have made my desktop secure, the usability is still excellent. There is very little tradeoff between security and usability in my configuration.<br>
|
||
The problem was that I also had to maintain this on other devices such as my laptop. I was wishing that there was a pre-configured desktop that matched all my needs
|
||
that I could install on a laptop and not have to maintain it with the same time and frequency that I maintain my desktop. I tried other options but did not find anything
|
||
that checked all the boxes: </p>
|
||
<ul>
|
||
<li> Arch based</li>
|
||
<li> Immutable so I don't have to worry about it</li>
|
||
<li> Security focused defaults</li>
|
||
<li> Modern desktop environments and window managers</li></ul>
|
||
<p>So the goal was personal but I really do think this is something missing despite all the custom isos out there.</p>
|
||
<p>Miasma OS at the end of the day Arch with a bunch of post install scripts, similar to something like Omarchy, but the philosophy and goal of the project is its distinguishing factor.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
const tabHome = document.getElementById('tab-home');
|
||
const tabGit = document.getElementById('tab-git');
|
||
const tabWiki = document.getElementById('tab-wiki');
|
||
const tabAbout = document.getElementById('tab-about');
|
||
const cntHome = document.getElementById('content-home');
|
||
const cntGit = document.getElementById('content-git');
|
||
const cntWiki = document.getElementById('content-wiki');
|
||
const cntAbout = document.getElementById('content-about');
|
||
|
||
tabHome.addEventListener('click',()=>{
|
||
tabHome.classList.add('active'); tabWiki.classList.remove('active'); tabGit.classList.remove('active');tabAbout.classList.remove('active');
|
||
cntHome.style.display='block'; cntWiki.style.display='none'; cntGit.style.display='none';cntAbout.style.display='none';
|
||
});
|
||
tabGit.addEventListener('click',()=>{
|
||
tabGit.classList.add('active'); tabWiki.classList.remove('active');tabHome.classList.remove('active');tabAbout.classList.remove('active');
|
||
cntGit.style.display='block'; cntWiki.style.display='none';cntHome.style.display='none';cntAbout.style.display='none';
|
||
});
|
||
tabWiki.addEventListener('click',()=>{
|
||
tabWiki.classList.add('active'); tabGit.classList.remove('active');tabHome.classList.remove('active');tabAbout.classList.remove('active');
|
||
cntWiki.style.display='block'; cntGit.style.display='none';cntHome.style.display='none';cntAbout.style.display='none';
|
||
});
|
||
tabAbout.addEventListener('click',()=>{
|
||
tabAbout.classList.add('active'); tabWiki.classList.remove('active'); tabGit.classList.remove('active');tabHome.classList.remove('active');
|
||
cntAbout.style.display='block'; cntWiki.style.display='none'; cntGit.style.display='none';cntHome.style.display='none';
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|
||
|
||
|