Compare commits
25 Commits
017f26545f
...
b5a8bf3d6b
Author | SHA1 | Date |
---|---|---|
Case Duckworth | b5a8bf3d6b | |
Case Duckworth | d2e44f5378 | |
Case Duckworth | abaf0b721c | |
Case Duckworth | 29e50f0cfd | |
Case Duckworth | 3da5078dcb | |
Case Duckworth | 282e1c2e3b | |
Case Duckworth | 80bcc7bb81 | |
Case Duckworth | 5c187b1a47 | |
Case Duckworth | 3bdb2575a2 | |
Case Duckworth | 38058d57ab | |
Case Duckworth | 55f866a066 | |
Case Duckworth | cc4f2a0637 | |
Case Duckworth | dcb921b4a3 | |
Case Duckworth | 5da12dc8a1 | |
Case Duckworth | 66f47174b9 | |
Case Duckworth | aa246556ba | |
Case Duckworth | 11bed443ad | |
Case Duckworth | cfa01d9d00 | |
Case Duckworth | a39356b2a6 | |
Case Duckworth | 3a25966ced | |
Case Duckworth | 2d03c4c0f2 | |
Case Duckworth | cfab0ef908 | |
Case Duckworth | 5191bae3b9 | |
Case Duckworth | f2c4da25d2 | |
Case Duckworth | a60a7b6b08 |
|
@ -0,0 +1 @@
|
||||||
|
O
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"name": "breadpunk.club",
|
||||||
|
"url": "https://breadpunk.club",
|
||||||
|
"signup_url": "https://breadpunk.club/join",
|
||||||
|
"user_count": "$(getent group|grep '^bakers:'|cut -d: -f4|tr , '\n'|wc -l)",
|
||||||
|
"want_users": true,
|
||||||
|
"admin_email": "breadpunk@acdw.net",
|
||||||
|
"description": "We are a shared Unix computer focused on bread: baking it, eating it, using it as fiat currency in the event of a cataclysm, that sort of thing.",
|
||||||
|
"users": [
|
||||||
|
$(lastuser="$(getent group|grep '^bakers:'|cut -d: -f4|tr , '\n'|tail -n1)"
|
||||||
|
for user in $(getent group|grep '^bakers:'|cut -d: -f4|tr , '\n'); do
|
||||||
|
cat <<-ENDUSER
|
||||||
|
{
|
||||||
|
"username": "$user",
|
||||||
|
"title": "$(awk '/<title>/{gsub("</?title>","");
|
||||||
|
sub(/^[ ]/,"");sub(/[ ]$/,"");
|
||||||
|
print;}' /home/$user/public_html/index.html)",
|
||||||
|
"mtime": "$(stat -c %Y /home/$user/public_html/index.html)"
|
||||||
|
}$( [ "$lastuser" = "$user" ] || printf ',' )
|
||||||
|
ENDUSER
|
||||||
|
done
|
||||||
|
)
|
||||||
|
]
|
||||||
|
}
|
BIN
I/S/bread.png
BIN
I/S/bread.png
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 11 KiB |
|
@ -1,23 +1,54 @@
|
||||||
|
* { position: relative; }
|
||||||
body,
|
body,
|
||||||
html {
|
html {
|
||||||
min-height: 100vh;
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
font: 18px/1.3 monospace;
|
font: 18px/1.3 CMUTypewriterTextRegular, monospace;
|
||||||
background: url("/S/bread.png") repeat, wheat;
|
background-color: wheat;
|
||||||
display: flex;
|
background: url("/S/bread.png") repeat;
|
||||||
flex-flow: column nowrap;
|
|
||||||
align-items: center;
|
|
||||||
}
|
}
|
||||||
main {
|
#main {
|
||||||
max-width: 70ch;
|
max-width: 40em;
|
||||||
padding: 2ch;
|
padding: 1em;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
background: white;
|
background: white;
|
||||||
}
|
}
|
||||||
footer {
|
#footer {
|
||||||
|
margin-top: 1em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#header,
|
||||||
|
#footer {
|
||||||
background: white;
|
background: white;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: right;
|
}
|
||||||
padding: 1ch;
|
#header {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
#header .nav {
|
||||||
|
z-index: 100;
|
||||||
|
background: white;
|
||||||
|
padding-right: 1em;
|
||||||
|
}
|
||||||
|
#header * {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.nav li:after {
|
||||||
|
content: " (#) ";
|
||||||
|
}
|
||||||
|
.subtitle {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
pre,
|
||||||
|
code {
|
||||||
|
font: 14px/1.1 monospace;
|
||||||
|
background: #ddd;
|
||||||
|
}
|
||||||
|
#users {
|
||||||
|
text-align: right;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 759 B |
Binary file not shown.
After Width: | Height: | Size: 318 B |
|
@ -0,0 +1,19 @@
|
||||||
|
title docs
|
||||||
|
|
||||||
|
$([ -d "$BREADDOCS" ] &&
|
||||||
|
for F in $(find "$BREADDOCS" -path "$BREADDOCS/.git" -prune -o -type f -print); do
|
||||||
|
case "$F" in
|
||||||
|
*manifesto.md) ;;
|
||||||
|
*man*) continue;;
|
||||||
|
esac
|
||||||
|
l "doc: $F"
|
||||||
|
dir="$UNKO/docs/$(NN)"
|
||||||
|
rm -rf "$dir"
|
||||||
|
mkdir -p "$dir"
|
||||||
|
X "$UNKL" > "$dir/index.html"
|
||||||
|
|
||||||
|
cat <<ENDOFITEM
|
||||||
|
- [$(M title)](/docs/$(NN))
|
||||||
|
ENDOFITEM
|
||||||
|
done
|
||||||
|
)
|
18
I/index.md
18
I/index.md
|
@ -1,9 +1,25 @@
|
||||||
title BREADPUNK
|
title BREADPUNK
|
||||||
subtitle baking the net since 2020
|
subtitle baking the net since 2020
|
||||||
|
|
||||||
Hello, and welcome to breadpunk.club.
|
Hello, and welcome to **breadpunk.club**.
|
||||||
We are a shared Unix computer focused on bread:
|
We are a shared Unix computer focused on bread:
|
||||||
baking it,
|
baking it,
|
||||||
eating it,
|
eating it,
|
||||||
using it as fiat currency in the event of a cataclysm,
|
using it as fiat currency in the event of a cataclysm,
|
||||||
that sort of thing.
|
that sort of thing.
|
||||||
|
|
||||||
|
we're also dedicated to the ideas outlined
|
||||||
|
in our [manifesto](/docs/manifesto),
|
||||||
|
namely *anti-commoditization*,
|
||||||
|
*self-reliance*,
|
||||||
|
and *radical cooperation*.
|
||||||
|
|
||||||
|
$(for s in "$UNKI/index_sections"/*; do
|
||||||
|
cat <<-ENDSECTION
|
||||||
|
<div class="section" id="$(M id "$s")">
|
||||||
|
<div class="header">$(M title "$s" |wrapstr h1)$(M subtitle "$s" |wrapstr p class=subtitle)
|
||||||
|
</div>$(C "$s" | X | $DISCOUNT)
|
||||||
|
</div>
|
||||||
|
ENDSECTION
|
||||||
|
done
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
id joining
|
||||||
|
title join us!
|
||||||
|
|
||||||
|
we're still a pretty small server:
|
||||||
|
we only have $(ls /home|wc -l) bakers!
|
||||||
|
we're all pretty friendly and would love to have you along.
|
||||||
|
|
||||||
|
check out our [joining page](/join)
|
||||||
|
to apply for membership to breadpunk.club.
|
|
@ -0,0 +1,11 @@
|
||||||
|
title news
|
||||||
|
id news
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
$(for art in $(find "$BREADNEWS" -path "$BREADNEWS/.git" -prune -o -type f -print | sort -nr|head -n3); do
|
||||||
|
cat <<-ENDOFARTICLE
|
||||||
|
<li>$(M date "$art"|defstr $(NN "$art")|wrapstr span class="time")
|
||||||
|
<a href="/news#$(NN "$art")">$(M title "$art")</a></li>
|
||||||
|
ENDOFARTICLE
|
||||||
|
done)
|
||||||
|
</ul>
|
|
@ -0,0 +1,14 @@
|
||||||
|
title bakers
|
||||||
|
subtitle in order of most recent bake
|
||||||
|
id bakers
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
$(for u in $(
|
||||||
|
find /home/*/public_html -maxdepth 0 -printf '%T@\t%p\n'|
|
||||||
|
sort -nr |
|
||||||
|
cut -f2- |
|
||||||
|
sed 's,/home/\(.*\)/public_html,\1,')
|
||||||
|
do
|
||||||
|
p "<li><a href=\"/~$u\">~$u</a></li>"
|
||||||
|
done)
|
||||||
|
</ul>
|
|
@ -1,11 +0,0 @@
|
||||||
id joining
|
|
||||||
title how to join
|
|
||||||
|
|
||||||
to become a baker,
|
|
||||||
just send an email to [breadw](/~breadw/)
|
|
||||||
with your SSH key,
|
|
||||||
desired username (must be bread-oriented),
|
|
||||||
realname (can be your "normal" username),
|
|
||||||
and what shell you'd like to use (we have sh, bash, and zsh).
|
|
||||||
|
|
||||||
we'll see you around the bakery!
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
title joining
|
||||||
|
|
||||||
|
breadpunk.club is open to anyone. it's suggested that you look at our
|
||||||
|
[manifesto](/docs/manifesto) and make sure it's something you're interested in,
|
||||||
|
as well as our [code of conduct](/docs/code-of-conduct) to make sure you agree
|
||||||
|
with our terms.
|
||||||
|
|
||||||
|
to become a baker, just send an email to [breadw](/~breadw) with your SSH key (attached, please!),
|
||||||
|
desired username (must be bread-oriented), realname (can be your “normal”
|
||||||
|
username), and what shell you’d like to use (we have
|
||||||
|
$(cat /etc/shells|
|
||||||
|
awk -F/ '/^#/{next}/tmux$/{next}/screen$/{next}
|
||||||
|
{if (!match(shs, $NF)) shs = (shs ? shs", " : shs) $NF}
|
||||||
|
END{sub(/[^,]+$/," and&",shs);print shs}')).
|
||||||
|
|
||||||
|
we’ll see you around the bakery!
|
|
@ -1,48 +0,0 @@
|
||||||
title manifesto
|
|
||||||
|
|
||||||
>%epigraph%
|
|
||||||
>Man cannot live on bread alone.
|
|
||||||
>— Jesus of Nazareth
|
|
||||||
|
|
||||||
>%epigraph%
|
|
||||||
>They say bread is life.
|
|
||||||
>— Ronny Cammareri of Brooklyn
|
|
||||||
|
|
||||||
Bread was invented tens of thousands of years ago,
|
|
||||||
probably by someone drunk because they had the munchies.
|
|
||||||
It's been made continuously since then
|
|
||||||
by people of varying degrees of sobriety
|
|
||||||
and to varying degrees of success.
|
|
||||||
For nearly its entire history,
|
|
||||||
bread has been made using stale dough from earlier bread,
|
|
||||||
or from a fresh-made pool of fermented wheat and water.
|
|
||||||
It took time,
|
|
||||||
but it was good,
|
|
||||||
and we had time.
|
|
||||||
|
|
||||||
Of course,
|
|
||||||
the Market came along,
|
|
||||||
and with it hunger:
|
|
||||||
the hunger of the working-class,
|
|
||||||
who did not have time to
|
|
||||||
sit and wait for bread.
|
|
||||||
We invented instant yeast in a lab,
|
|
||||||
we invented styrofoam bread with no taste
|
|
||||||
but fast turnaround,
|
|
||||||
and we called it good.
|
|
||||||
But we knew not what we did —
|
|
||||||
or at least, many of us didn't.
|
|
||||||
|
|
||||||
The alphabet, they say, was invented only once.
|
|
||||||
Bread is invented every time, anew.
|
|
||||||
It's life itself.
|
|
||||||
And life is not for sale.
|
|
||||||
|
|
||||||
Breadpunk rejects the commoditization of life by market capitalism.
|
|
||||||
Breadpunk is an attitude that something our ancestors made largely for free
|
|
||||||
is not something we should be spending money on.
|
|
||||||
Breadpunk is the idea that we have time again,
|
|
||||||
that industrialism gives us time to bake bread.
|
|
||||||
|
|
||||||
Breadpunk is simple:
|
|
||||||
**MAKE YOUR OWN DAMN BREAD.**
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
title news
|
||||||
|
|
||||||
|
$(for art in $(find "$BREADNEWS" -path "$BREADNEWS/.git" -prune -o -type f -print | sort -nr); do
|
||||||
|
l "news: $art"
|
||||||
|
cat <<-ENDOFARTICLE
|
||||||
|
<div class="article" id="$(NN "$art")">
|
||||||
|
<div class="header">$(M title "$art"|wrapstr h1)
|
||||||
|
$(M date "$art"|wrapstr span class="time")
|
||||||
|
$(C "$art"|X|$DISCOUNT)
|
||||||
|
</div>
|
||||||
|
ENDOFARTICLE
|
||||||
|
done)
|
|
@ -0,0 +1,10 @@
|
||||||
|
title recipes
|
||||||
|
|
||||||
|
$(mkdir "$UNKO/recipes")
|
||||||
|
<ul>
|
||||||
|
$(for r in /bread/cookbook/html/*; do
|
||||||
|
l "recipe: $r"
|
||||||
|
echo "<li><a href=\"/recipe/$(NN "$r")\">$(NN "$r")</a></li>"
|
||||||
|
|
||||||
|
done)
|
||||||
|
</ul>
|
68
L
68
L
|
@ -1,44 +1,40 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<html>
|
<html lang="en">
|
||||||
|
<!-- updated $(date) -->
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<meta name="description" content="a collaborative bread-positive space">
|
||||||
<title>$(M title|addstr ' | ')BREADPUNK</title>
|
<title>$(M title|addstr ' | ')BREADPUNK</title>
|
||||||
<link rel="stylesheet" type="text/css" href="/S/breadpunk.css" />
|
<link rel="stylesheet" media="screen" type="text/css"
|
||||||
|
href="https://fontlibrary.org/face/cmu-typewriter" >
|
||||||
|
<link rel="stylesheet" type="text/css" href="/S/breadpunk.css" >
|
||||||
|
<link rel="icon" type="image/png" href="/S/breadpunk.png">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main>
|
<div id="header">
|
||||||
<section id=intro>
|
<div class="nav">
|
||||||
<header>
|
$(cat header.txt)
|
||||||
$(M title | wrapstr h1)
|
$([ "$(N)" = index ] || {
|
||||||
$(M subtitle | wrapstr h2)
|
cat <<-ENDHEADER
|
||||||
</header>
|
(#) <a href="/">home</a>
|
||||||
$(C|$DISCOUNT)
|
ENDHEADER
|
||||||
</section>
|
|
||||||
$([ -d "$UNKI/$(N)_sections" ] &&
|
|
||||||
for s in "$UNKI/$(N)_sections"/*; do
|
|
||||||
cat <<-ENDSECTION
|
|
||||||
<section>
|
|
||||||
<header>
|
|
||||||
$(M title "$s" |wrapstr h1)
|
|
||||||
$(M subtitle "$s" |wrapstr h2)
|
|
||||||
</header>
|
|
||||||
$(C "$s" | $DISCOUNT)
|
|
||||||
</section>
|
|
||||||
ENDSECTION
|
|
||||||
done
|
|
||||||
)
|
|
||||||
</main>
|
|
||||||
<footer>
|
|
||||||
$([ "$(N)" = index ] && {
|
|
||||||
p "<marquee>"
|
|
||||||
sed 's/#.*//' /bread/index-footer.txt
|
|
||||||
p "</marquee>"
|
|
||||||
} || {
|
|
||||||
cat <<-ENDFOOTER
|
|
||||||
<a href=/>back</a>
|
|
||||||
ENDFOOTER
|
|
||||||
})
|
})
|
||||||
</footer>
|
</div>
|
||||||
|
<marquee id="users">
|
||||||
|
$(./update-footer.awk footer.txt | sed 's/#.*//')
|
||||||
|
</marquee>
|
||||||
|
</div>
|
||||||
|
<div id="main">
|
||||||
|
<div class="header">
|
||||||
|
$(M title | wrapstr h1)
|
||||||
|
$(M subtitle | wrapstr p class=subtitle)
|
||||||
|
$(M author | wrapstr p class=author)
|
||||||
|
</div>
|
||||||
|
$(C|X|$DISCOUNT)
|
||||||
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!-- vim: ft=unk
|
<!-- vim: ft=unk
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -1,5 +1,7 @@
|
||||||
# breadpunk.club
|
# breadpunk.club
|
||||||
DEBUG ?= false
|
DEBUG ?= false
|
||||||
|
BREADNEWS ?= /bread/news
|
||||||
|
BREADDOCS ?= /bread/docs
|
||||||
|
|
||||||
RSYNC_EXCLUDES := \
|
RSYNC_EXCLUDES := \
|
||||||
.well-known \
|
.well-known \
|
||||||
|
@ -18,7 +20,8 @@ RSYNC := rsync \
|
||||||
SERVE ?= php -S 127.0.0.1:2733 -t O/
|
SERVE ?= php -S 127.0.0.1:2733 -t O/
|
||||||
|
|
||||||
WATCH := I/* I/*/* \
|
WATCH := I/* I/*/* \
|
||||||
unk lib.sh L
|
unk lib.sh L *.txt \
|
||||||
|
$(BREADNEWS)/* $(BREADDOCS)/*
|
||||||
|
|
||||||
watch:
|
watch:
|
||||||
@echo entr -d -r $(MAKE) _serve
|
@echo entr -d -r $(MAKE) _serve
|
||||||
|
@ -32,7 +35,7 @@ _serve: build
|
||||||
$(SERVE)
|
$(SERVE)
|
||||||
|
|
||||||
publish: build
|
publish: build
|
||||||
$(RSYNC) O/ /var/www/breadpunk.club/
|
$(RSYNC) O/ /var/www/breadpunk.club/
|
||||||
|
|
||||||
# push: publish
|
# push: publish
|
||||||
# @test -z "$$(git status --porcelain)" && \
|
# @test -z "$$(git status --porcelain)" && \
|
||||||
|
@ -40,6 +43,6 @@ publish: build
|
||||||
# echo "Commit changes!"
|
# echo "Commit changes!"
|
||||||
|
|
||||||
build:
|
build:
|
||||||
DEBUG=$(DEBUG) ./unk
|
DEBUG=$(DEBUG) BREADNEWS=$(BREADNEWS) BREADDOCS=$(BREADDOCS) ./unk
|
||||||
|
|
||||||
PHONY: build _serve publish watch
|
PHONY: build _serve publish watch
|
||||||
|
|
BIN
O/S/bread.png
BIN
O/S/bread.png
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB |
|
@ -1,23 +0,0 @@
|
||||||
body,
|
|
||||||
html {
|
|
||||||
min-height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
font: 18px/1.3 monospace;
|
|
||||||
background: url("/S/bread.png") repeat, wheat;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
main {
|
|
||||||
max-width: 70ch;
|
|
||||||
padding: 2ch;
|
|
||||||
margin: auto;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
footer {
|
|
||||||
background: white;
|
|
||||||
width: 100%;
|
|
||||||
text-align: right;
|
|
||||||
padding: 1ch;
|
|
||||||
}
|
|
56
O/index.html
56
O/index.html
|
@ -1,56 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>BREADPUNK | BREADPUNK</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/S/breadpunk.css" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<main>
|
|
||||||
<section id=intro>
|
|
||||||
<header>
|
|
||||||
<h1>BREADPUNK</h1>
|
|
||||||
<h2>baking the net since 2020</h2>
|
|
||||||
</header>
|
|
||||||
<p>Hello, and welcome to breadpunk.club.
|
|
||||||
We are a shared Unix computer focused on bread:
|
|
||||||
baking it,
|
|
||||||
eating it,
|
|
||||||
using it as fiat currency in the event of a cataclysm,
|
|
||||||
that sort of thing.</p>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<header>
|
|
||||||
<h1>history</h1>
|
|
||||||
</header>
|
|
||||||
<p>breadpunk.club was envisioned by some folx over at
|
|
||||||
<tilde.town> as a new tilde server,
|
|
||||||
where we could talk about bread all day.</p>
|
|
||||||
|
|
||||||
<p>for more information, see our <a href="/manifesto/">manifesto</a>.</p>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<header>
|
|
||||||
<h1>how to join</h1>
|
|
||||||
</header>
|
|
||||||
<p>to become a baker,
|
|
||||||
just send an email to <a href="/~breadw/">breadw</a>
|
|
||||||
with your SSH key,
|
|
||||||
desired username (must be bread-oriented),
|
|
||||||
realname (can be your “normal” username),
|
|
||||||
and what shell you’d like to use (we have sh, bash, and zsh).</p>
|
|
||||||
|
|
||||||
<p>we’ll see you around the bakery!</p>
|
|
||||||
</section>
|
|
||||||
</main>
|
|
||||||
<footer>
|
|
||||||
4
|
|
||||||
bakers;
|
|
||||||
9
|
|
||||||
baking now
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<!-- vim: ft=unk
|
|
||||||
-->
|
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>manifesto | BREADPUNK</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/S/breadpunk.css" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<main>
|
|
||||||
<section id=intro>
|
|
||||||
<header>
|
|
||||||
<h1>manifesto</h1>
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="epigraph"><p>Man cannot live on bread alone.
|
|
||||||
— Jesus of Nazareth</p></div>
|
|
||||||
|
|
||||||
<div class="epigraph"><p>They say bread is life.
|
|
||||||
— Ronny Cammareri of Brooklyn</p></div>
|
|
||||||
|
|
||||||
<p>Bread was invented tens of thousands of years ago,
|
|
||||||
probably by someone drunk because they had the munchies.
|
|
||||||
It’s been made continuously since then
|
|
||||||
by people of varying degrees of sobriety
|
|
||||||
and to varying degrees of success.
|
|
||||||
For nearly its entire history,
|
|
||||||
bread has been made using stale dough from earlier bread,
|
|
||||||
or from a fresh-made pool of fermented wheat and water.
|
|
||||||
It took time,
|
|
||||||
but it was good,
|
|
||||||
and we had time.</p>
|
|
||||||
|
|
||||||
<p>Of course,
|
|
||||||
the Market came along,
|
|
||||||
and with it hunger:
|
|
||||||
the hunger of the working-class,
|
|
||||||
who did not have time to
|
|
||||||
sit and wait for bread.
|
|
||||||
We invented instant yeast in a lab,
|
|
||||||
we invented styrofoam bread with no taste
|
|
||||||
but fast turnaround,
|
|
||||||
and we called it good.
|
|
||||||
But we knew not what we did —
|
|
||||||
or at least, many of us didn’t.</p>
|
|
||||||
|
|
||||||
<p>The alphabet, they say, was invented only once.
|
|
||||||
Bread is invented every time, anew.
|
|
||||||
It’s life itself.
|
|
||||||
And life is not for sale.</p>
|
|
||||||
|
|
||||||
<p>Breadpunk rejects the commoditization of life by market capitalism.
|
|
||||||
Breadpunk is an attitude that something our ancestors made largely for free
|
|
||||||
is not something we should be spending money on.
|
|
||||||
Breadpunk is the idea that we have time again,
|
|
||||||
that industrialism gives us time to bake bread.</p>
|
|
||||||
|
|
||||||
<p>Breadpunk is simple:
|
|
||||||
<strong>MAKE YOUR OWN DAMN BREAD.</strong></p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</main>
|
|
||||||
<footer>
|
|
||||||
<a href=/>back</a>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<!-- vim: ft=unk
|
|
||||||
-->
|
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>BREADPUNK</title>
|
|
||||||
<style>
|
|
||||||
body,html {
|
|
||||||
min-height: 100vh;
|
|
||||||
font: 18px/1.3 monospace;
|
|
||||||
margin: 0; padding: 0;
|
|
||||||
}
|
|
||||||
main {
|
|
||||||
max-width: 70ch;
|
|
||||||
padding: 2ch;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<main>
|
|
||||||
<section id=intro>
|
|
||||||
<header>
|
|
||||||
<h1>BREADPUNK</h1>
|
|
||||||
<h2>baking the net since 2020</h2>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Hello, and welcome to breadpunk.club.
|
|
||||||
We are a shared Unix computer focused on bread:
|
|
||||||
baking it, eating it,
|
|
||||||
using it as fiat currency in the event of cataclysm,
|
|
||||||
that sort of thing.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id=history>
|
|
||||||
<h2>history</h2>
|
|
||||||
|
|
||||||
<p>breadpunk.club was envisioned by
|
|
||||||
some folx over at <a href="https://tilde.town">tilde.town</a>
|
|
||||||
as a new tilde server,
|
|
||||||
where we could talk about bread all day.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
for more information, see our
|
|
||||||
<a href="/manifesto">manifesto</a>.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id=joining>
|
|
||||||
<h2>how to join</h2>
|
|
||||||
|
|
||||||
<p>to become a baker,
|
|
||||||
just send an email to <a href="http://breadpunk.club/~breadw">breadw</a>
|
|
||||||
with your SSH key,
|
|
||||||
desired username (must include a pun on bread),
|
|
||||||
realname (can be your "normal" username),
|
|
||||||
and what shell you'd like (we have sh, bash, zsh).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>we'll see you around the bakery!</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,84 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>BREADPUNK</title>
|
|
||||||
<style>
|
|
||||||
body,html {
|
|
||||||
min-height: 100vh;
|
|
||||||
font: 18px/1.3 monospace;
|
|
||||||
margin: 0; padding: 0;
|
|
||||||
}
|
|
||||||
main {
|
|
||||||
max-width: 70ch;
|
|
||||||
padding: 2ch;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<main>
|
|
||||||
<h1>BREADPUNK</h1>
|
|
||||||
<h2>manifesto</h2>
|
|
||||||
|
|
||||||
<p class=epigraph>
|
|
||||||
Man cannot live on bread alone.
|
|
||||||
— Jesus of Nazareth
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class=epigraph>
|
|
||||||
They say bread is life.
|
|
||||||
— Ronny Cammareri of Brooklyn
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Bread was invented tens of thousands of years ago,
|
|
||||||
probably by someone drunk because they had the munchies.
|
|
||||||
It's been made continuously since then
|
|
||||||
by people of varying degrees of sobriety
|
|
||||||
and to varying degrees of success.
|
|
||||||
For nearly its entire history,
|
|
||||||
bread has been made using stale dough from earlier bread,
|
|
||||||
or from a fresh-made pool of fermented wheat and water.
|
|
||||||
It took time,
|
|
||||||
but it was good,
|
|
||||||
and we had time.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Of course,
|
|
||||||
the Market came along,
|
|
||||||
and with it hunger:
|
|
||||||
the hunger of the working-class,
|
|
||||||
who did not have time to
|
|
||||||
sit and wait for bread.
|
|
||||||
We invented instant yeast in a lab,
|
|
||||||
we invented styrofoam bread with no taste
|
|
||||||
but fast turnaround,
|
|
||||||
and we called it good.
|
|
||||||
But we knew not what we did —
|
|
||||||
or at least, many of us didn't.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The alphabet, they say, was invented only once.
|
|
||||||
Bread is invented every time, anew.
|
|
||||||
It's life itself.
|
|
||||||
And life is not for sale.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Breadpunk rejects the commoditization of life by market capitalism.
|
|
||||||
Breadpunk is an attitude that something our ancestors made largely for free
|
|
||||||
is not something we should be spending money on.
|
|
||||||
Breadpunk is the idea that we have time again,
|
|
||||||
that industrialism gives us time to bake bread.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Breadpunk is simple:
|
|
||||||
<strong>MAKE YOUR OWN DAMN BREAD.</strong>
|
|
||||||
</p>
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,8 +1,7 @@
|
||||||
title history
|
title history
|
||||||
id history
|
|
||||||
|
|
||||||
breadpunk.club was envisioned by some folx over at
|
breadpunk.club was envisioned by some folx over at
|
||||||
<tilde.town> as a new tilde server,
|
[tilde.town](https://tilde.town) as a new tilde server,
|
||||||
where we could talk about bread all day.
|
where we could talk about bread all day.
|
||||||
|
|
||||||
for more information, see our [manifesto](/manifesto/).
|
for more information, see our [manifesto](/manifesto/).
|
|
@ -0,0 +1,5 @@
|
||||||
|
4 # USERS_TOTAL
|
||||||
|
bakers
|
||||||
|
/
|
||||||
|
9 # USERS_CURRENT
|
||||||
|
baking now
|
|
@ -0,0 +1,5 @@
|
||||||
|
<ul>
|
||||||
|
<li><a href="/news">news</a></li>
|
||||||
|
<li><a href="/join">join</a></li>
|
||||||
|
<li><a href="/docs">docs</a></li>
|
||||||
|
</ul>
|
3
lib.sh
3
lib.sh
|
@ -7,12 +7,13 @@ DISCOUNT="markdown -f links,image,pants,html,autolink,fencedcode"
|
||||||
alias p=echo
|
alias p=echo
|
||||||
alias l='p >&2'
|
alias l='p >&2'
|
||||||
N(){ f="${1:-$F}";n="${f#$UNKI/}";p "${n%.*}";}
|
N(){ f="${1:-$F}";n="${f#$UNKI/}";p "${n%.*}";}
|
||||||
|
NN(){ f="${1:-$F}";n="${f##*/}";p "${n%%.*}";}
|
||||||
N_(){ f="${1:-$F}";n="$(N "$f")";p "${n#_}";}
|
N_(){ f="${1:-$F}";n="$(N "$f")";p "${n#_}";}
|
||||||
M(){ sed '/^$/q' "${2:-$F}"|grep "^$1"|cut -f2-;}
|
M(){ sed '/^$/q' "${2:-$F}"|grep "^$1"|cut -f2-;}
|
||||||
C(){ sed '1,/^$/d' "${1:-$F}";}
|
C(){ sed '1,/^$/d' "${1:-$F}";}
|
||||||
X(){
|
X(){
|
||||||
Xd=$((Xd+1));
|
Xd=$((Xd+1));
|
||||||
eval "$(p "set -e";p "cat<<$UNKZ$Xd";cat "${1:--}";p;p "$UNKZ$Xd")";
|
eval "$(p "set -e";p "cat<<$UNKZ$Xd";cat "${1:--}"|sed 's/`/\\`/g';p;p "$UNKZ$Xd")";
|
||||||
}
|
}
|
||||||
|
|
||||||
modmsg()
|
modmsg()
|
||||||
|
|
3
unk
3
unk
|
@ -6,7 +6,6 @@ set -e
|
||||||
: "${UNKI:=I}"
|
: "${UNKI:=I}"
|
||||||
: "${UNKO:=O}"
|
: "${UNKO:=O}"
|
||||||
: "${UNKL:=L}"
|
: "${UNKL:=L}"
|
||||||
: "${UNKF:=La}"
|
|
||||||
: "${UNKS:=$UNKI/S}"
|
: "${UNKS:=$UNKI/S}"
|
||||||
|
|
||||||
. ./lib.sh
|
. ./lib.sh
|
||||||
|
@ -51,3 +50,5 @@ do [ -d "$F" ] && continue
|
||||||
done
|
done
|
||||||
|
|
||||||
#X "$UNKF" > "$UNKO/atom.xml"
|
#X "$UNKF" > "$UNKO/atom.xml"
|
||||||
|
l "Building DP"
|
||||||
|
X Dp > "$UNKO/tilde.json"
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/awk -f
|
||||||
|
|
||||||
|
/USERS_TOTAL/ {
|
||||||
|
"ls /home|wc -l" | getline $1;
|
||||||
|
}
|
||||||
|
/USERS_CURRENT/ {
|
||||||
|
"users|tr ' ' '\n'|sort -u|wc -l" | getline $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
{ print; }
|
Loading…
Reference in New Issue