repositories / bugabinga.net
bugabinga.net
personal infrastructure for bugabinga!
owned by admin
sites/pkg/index.html
Raw<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>pkg.bugabinga.net</title>
<link rel="icon" href="/bugabinga.min.svg" type="image/svg+xml">
<link rel="stylesheet" href="/nugu.css">
<style>
* { box-sizing: border-box; }
:root { color-scheme: light dark; }
body {
margin: 0;
min-height: 100svh;
padding: clamp(1.25rem, 6vw, 6rem);
background:
linear-gradient(90deg, color-mix(in srgb, var(--nugu-ui-normal) 7%, transparent) 1px, transparent 1px),
linear-gradient(color-mix(in srgb, var(--nugu-ui-normal) 7%, transparent) 1px, transparent 1px),
var(--nugu-content-backdrop);
background-size: 24px 24px;
color: var(--nugu-content-normal);
font: 16px/1.5 system-ui, sans-serif;
}
main {
max-width: 72rem;
margin: auto;
}
.brand {
display: block;
width: clamp(7rem, 18vw, 12rem);
height: auto;
margin-block-end: clamp(2rem, 6vw, 4rem);
}
header {
margin-block-end: clamp(2.5rem, 8vw, 7rem);
}
h1 {
max-width: 10ch;
margin: 0;
font-size: clamp(3rem, 11vw, 8rem);
line-height: .92;
letter-spacing: -.06em;
}
p {
max-width: 52rem;
margin: 1.5rem 0 0;
color: var(--nugu-content-normal);
font-size: clamp(1.05rem, 2vw, 1.35rem);
}
section {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
gap: clamp(1.25rem, 3vw, 2rem);
margin-block: 1rem;
}
.card {
display: block;
min-height: 10rem;
padding: clamp(1.5rem, 4vw, 2.5rem);
border: 2px solid var(--nugu-ui-normal);
background: var(--nugu-ui-backdrop);
color: var(--nugu-content-normal);
text-decoration: none;
box-shadow: 8px 8px 0 var(--nugu-ui-accent);
}
a.card::after {
content: "open →";
display: inline-block;
margin-block-start: 1.5rem;
color: var(--nugu-ui-accent);
font: 800 .8rem/1 ui-monospace, monospace;
letter-spacing: .08em;
text-transform: uppercase;
}
a.card:hover,
a.card:focus-visible,
button:hover,
button:focus-visible {
border-color: var(--nugu-ui-accent);
outline: 3px solid var(--nugu-ui-focus);
outline-offset: 2px;
}
h2 {
margin: 0 0 .75rem;
font-size: clamp(1.5rem, 4vw, 2.25rem);
line-height: 1;
letter-spacing: -.04em;
}
.cmds {
margin-block-start: clamp(2.5rem, 7vw, 5rem);
}
pre {
overflow-x: auto;
margin: 1rem 0 0;
padding: 1rem;
border: 2px solid var(--nugu-ui-normal);
background: var(--nugu-content-backdrop);
color: var(--nugu-content-normal);
font: .95rem/1.45 ui-monospace, monospace;
}
button {
margin-block-start: 1rem;
padding: .9rem 1.1rem;
border: 2px solid var(--nugu-ui-normal);
background: var(--nugu-content-backdrop);
color: var(--nugu-content-normal);
font: 800 .85rem/1 system-ui, sans-serif;
letter-spacing: .08em;
text-transform: uppercase;
cursor: pointer;
}
strong { color: var(--nugu-ui-accent); }
@media (prefers-color-scheme: dark) {
.brand { filter: invert(1); }
}
@media (max-width: 700px) {
body { padding: 2rem; }
main { padding-inline-end: .25rem; }
.brand { margin-block-start: .25rem; margin-block-end: 3rem; }
header { margin-block-end: 2.75rem; }
h1 {
max-width: 100%;
font-size: clamp(2.15rem, 9.5vw, 3.25rem);
line-height: 1;
overflow-wrap: anywhere;
}
p { margin-block-start: 1.9rem; }
section { gap: 2.35rem; }
.card {
min-height: 0;
padding: 2rem;
box-shadow: 6px 6px 0 var(--nugu-ui-accent);
}
a.card::after { margin-block-start: 2rem; font-size: .9rem; }
}
</style>
</head>
<body>
<main>
<header>
<img class="brand" src="/bugabinga.min.svg" alt="bugabinga" width="352" height="88">
<h1>pkg.<br>bugabinga.net</h1>
<p>Public package routes, release artifacts, and container registry entry points. Auth is only for publishing.</p>
</header>
<section aria-label="Package routes">
<a class="card" href="/arch/">
<h2>arch</h2>
<p>Static Arch Linux package repo.</p>
</a>
<a class="card" href="/releases/">
<h2>releases</h2>
<p>Static release artifacts.</p>
</a>
<a class="card" href="https://registry.bugabinga.net/home">
<h2>registry</h2>
<p>zot OCI registry web UI.</p>
</a>
<article class="card">
<h2>oci api</h2>
<p>Endpoint for tools, not humans.</p>
<pre><code>https://pkg.bugabinga.net/v2/</code></pre>
<button data-copy="https://pkg.bugabinga.net/v2/">copy</button>
</article>
</section>
<section class="cmds" aria-label="Commands">
<div>
<h2>login</h2>
<pre><code>podman login registry.bugabinga.net</code></pre>
<button data-copy="podman login registry.bugabinga.net">copy</button>
</div>
<div>
<h2>pull</h2>
<pre><code>podman pull registry.bugabinga.net/<image>:<tag></code></pre>
<button data-copy="podman pull registry.bugabinga.net/<image>:<tag>">copy</button>
</div>
</section>
</main>
<script>
document.addEventListener('click', async event => {
const button = event.target.closest('button[data-copy]');
if (!button) return;
await navigator.clipboard.writeText(button.dataset.copy);
button.textContent = 'copied';
setTimeout(() => button.textContent = 'copy', 900);
});
</script>
</body>
</html>