Compare commits

...

25 Commits

Author SHA1 Message Date
Case Duckworth b5a8bf3d6b Update 2021-01-30 01:14:18 +00:00
Case Duckworth d2e44f5378 Add favicon 2020-08-23 04:45:53 +00:00
Case Duckworth abaf0b721c Correct manifesto link 2020-08-23 04:44:45 +00:00
Case Duckworth 29e50f0cfd Finalize PSP okayness 2020-05-08 22:15:04 +00:00
Case Duckworth 3da5078dcb Further adventures in PSP compatibility 2020-05-08 16:12:15 -05:00
Case Duckworth 282e1c2e3b HTML 4.01/CSS 2.1 for PSP compat 2020-05-08 15:57:41 -05:00
Case Duckworth 80bcc7bb81 Update join 2020-04-30 21:36:05 +00:00
Case Duckworth 5c187b1a47 Change order 2020-04-22 10:01:37 -05:00
Case Duckworth 3bdb2575a2 Change stuff around 2020-04-17 22:13:33 +00:00
Case Duckworth 38058d57ab Change code font size 2020-04-11 23:05:21 -05:00
Case Duckworth 55f866a066 Add CMU Typewriter 2020-04-11 22:49:53 -05:00
Case Duckworth cc4f2a0637 Add tilde-description 2020-04-11 22:59:31 +00:00
Case Duckworth dcb921b4a3 Change stuff 2020-04-11 22:59:19 +00:00
Case Duckworth 5da12dc8a1 Change stuff 2020-04-11 22:05:21 +00:00
Case Duckworth 66f47174b9 Update style 2020-04-11 19:15:12 +00:00
Case Duckworth aa246556ba Pass env vars 2020-04-11 19:05:21 +00:00
Case Duckworth 11bed443ad Escape backticks 2020-04-11 19:05:05 +00:00
Case Duckworth cfa01d9d00 quote breadnews 2020-04-11 19:04:52 +00:00
Case Duckworth a39356b2a6 Many changes (I am terrible) 2020-04-11 13:56:17 -05:00
Case Duckworth 3a25966ced Add news 2020-04-11 17:31:14 +00:00
Case Duckworth 2d03c4c0f2 Order things; add footer; add bakerlist 2020-04-11 17:03:10 +00:00
Case Duckworth cfab0ef908 Ignore O/ 2020-04-11 16:02:01 +00:00
Case Duckworth 5191bae3b9 Update 2020-04-11 16:01:55 +00:00
Case Duckworth f2c4da25d2 Update style 2020-04-11 16:01:37 +00:00
Case Duckworth a60a7b6b08 Remove O_ 2020-04-11 15:56:25 +00:00
30 changed files with 239 additions and 413 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
O

24
Dp Normal file
View File

@ -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
)
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,23 +1,54 @@
* { position: relative; }
body,
html {
min-height: 100vh;
width: 100%;
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;
font: 18px/1.3 CMUTypewriterTextRegular, monospace;
background-color: wheat;
background: url("/S/bread.png") repeat;
}
main {
max-width: 70ch;
padding: 2ch;
#main {
max-width: 40em;
padding: 1em;
margin: auto;
background: white;
}
footer {
#footer {
margin-top: 1em;
text-align: center;
}
#header,
#footer {
background: white;
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;
}

BIN
I/S/breadpunk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

BIN
I/S/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

19
I/docs.md Normal file
View File

@ -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
)

View File

@ -1,9 +1,25 @@
title BREADPUNK
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:
baking it,
eating it,
using it as fiat currency in the event of a cataclysm,
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
)

View File

@ -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.

View File

@ -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>

View File

@ -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>

View File

@ -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!

16
I/join.md Normal file
View File

@ -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 youd 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}')).
well see you around the bakery!

View File

@ -1,48 +0,0 @@
title manifesto
>%epigraph%
>Man cannot live on bread alone.
>&mdash; Jesus of Nazareth
>%epigraph%
>They say bread is life.
>&mdash; 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 &mdash;
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.**

12
I/news.md Normal file
View File

@ -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)

10
I/recipes.md Normal file
View File

@ -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
View File

@ -1,44 +1,40 @@
<!DOCTYPE html>
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<!-- updated $(date) -->
<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>
<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>
<body>
<main>
<section id=intro>
<header>
$(M title | wrapstr h1)
$(M subtitle | wrapstr h2)
</header>
$(C|$DISCOUNT)
</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
<div id="header">
<div class="nav">
$(cat header.txt)
$([ "$(N)" = index ] || {
cat <<-ENDHEADER
(#) <a href="/">home</a>
ENDHEADER
})
</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>
</html>
<!-- vim: ft=unk

View File

@ -1,5 +1,7 @@
# breadpunk.club
DEBUG ?= false
BREADNEWS ?= /bread/news
BREADDOCS ?= /bread/docs
RSYNC_EXCLUDES := \
.well-known \
@ -18,7 +20,8 @@ RSYNC := rsync \
SERVE ?= php -S 127.0.0.1:2733 -t O/
WATCH := I/* I/*/* \
unk lib.sh L
unk lib.sh L *.txt \
$(BREADNEWS)/* $(BREADDOCS)/*
watch:
@echo entr -d -r $(MAKE) _serve
@ -32,7 +35,7 @@ _serve: build
$(SERVE)
publish: build
$(RSYNC) O/ /var/www/breadpunk.club/
$(RSYNC) O/ /var/www/breadpunk.club/
# push: publish
# @test -z "$$(git status --porcelain)" && \
@ -40,6 +43,6 @@ publish: build
# echo "Commit changes!"
build:
DEBUG=$(DEBUG) ./unk
DEBUG=$(DEBUG) BREADNEWS=$(BREADNEWS) BREADDOCS=$(BREADDOCS) ./unk
PHONY: build _serve publish watch

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -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;
}

View File

@ -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
&lt;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 &ldquo;normal&rdquo; username),
and what shell you&rsquo;d like to use (we have sh, bash, and zsh).</p>
<p>we&rsquo;ll see you around the bakery!</p>
</section>
</main>
<footer>
4
bakers;
9
baking now
</footer>
</body>
</html>
<!-- vim: ft=unk
-->

View File

@ -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.
&mdash; Jesus of Nazareth</p></div>
<div class="epigraph"><p>They say bread is life.
&mdash; 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&rsquo;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 &mdash;
or at least, many of us didn&rsquo;t.</p>
<p>The alphabet, they say, was invented only once.
Bread is invented every time, anew.
It&rsquo;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
-->

View File

@ -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>

View File

@ -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.
&mdash; Jesus of Nazareth
</p>
<p class=epigraph>
They say bread is life.
&mdash; 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 &mdash;
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>

View File

@ -1,8 +1,7 @@
title history
id history
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.
for more information, see our [manifesto](/manifesto/).

5
footer.txt Normal file
View File

@ -0,0 +1,5 @@
4 # USERS_TOTAL
bakers
/
9 # USERS_CURRENT
baking now

5
header.txt Normal file
View File

@ -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
View File

@ -7,12 +7,13 @@ DISCOUNT="markdown -f links,image,pants,html,autolink,fencedcode"
alias p=echo
alias l='p >&2'
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#_}";}
M(){ sed '/^$/q' "${2:-$F}"|grep "^$1"|cut -f2-;}
C(){ sed '1,/^$/d' "${1:-$F}";}
X(){
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()

3
unk
View File

@ -6,7 +6,6 @@ set -e
: "${UNKI:=I}"
: "${UNKO:=O}"
: "${UNKL:=L}"
: "${UNKF:=La}"
: "${UNKS:=$UNKI/S}"
. ./lib.sh
@ -51,3 +50,5 @@ do [ -d "$F" ] && continue
done
#X "$UNKF" > "$UNKO/atom.xml"
l "Building DP"
X Dp > "$UNKO/tilde.json"

10
update-footer.awk Executable file
View File

@ -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; }