oops i made a website now i only need to fix the nix bit

This commit is contained in:
Martin Wurm 2024-02-13 11:00:12 +01:00
parent 96bd0576a4
commit 0c8387ce02
23 changed files with 2238 additions and 0 deletions

8
.direnv/bin/nix-direnv-reload Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
dir="$(realpath $(dirname ${BASH_SOURCE[0]})/../..)"
_nix_direnv_force_reload=1 direnv exec "$dir" true
direnv reload
# direnv reload updates the mtime of .envrc. Also update the timestamp of the
# profile_rc file to keep track that we actually are up to date.
touch $dir/.direnv/{nix,flake}-profile-*.rc

View file

@ -0,0 +1 @@
/nix/store/yh8plh4ww2rk9085gg552ivcr0ykfma7-brokentech.cloud-0.1-env

File diff suppressed because it is too large Load diff

1
.envrc Normal file
View file

@ -0,0 +1 @@
use nix;

5
archetypes/default.md Normal file
View file

@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

26
assets/css/custom.css Normal file
View file

@ -0,0 +1,26 @@
.link-auth {
background: rgb(229, 92, 0);
}
.link-git {
background: rgb(139, 69, 19);
}
.link-monitoring {
background: rgb(205, 55, 0);
}
.link-legal {
background: none;
height: 1rem;
opacity: 70%;
font-size: 90%;
}
.link-legal:hover {
text-decoration: underline;
}
header > .rounded-full {
border-radius: 0;
}

1
assets/icons/auth.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="currentColor" d="M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>

After

Width:  |  Height:  |  Size: 701 B

1
assets/icons/git.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="currentColor" d="M216.3 158.4H137C97 147.9 6.5 150.6 6.5 233.2c0 30.1 15 51.2 35 61-25.1 23-37 33.9-37 49.2 0 11 4.5 21.1 17.9 26.8C8.1 383.6 0 393.4 0 411.7c0 32.1 28.1 50.8 101.6 50.8 70.8 0 111.8-26.4 111.8-73.2 0-58.7-45.2-56.5-151.6-63l13.4-21.6c27.3 7.6 118.7 10 118.7-67.9 0-18.7-7.7-31.7-15-41.1l37.4-2.8zm-63.4 241.9c0 32.1-104.9 32.1-104.9 2.4 0-8.1 5.3-15 10.6-21.5 77.7 5.3 94.3 3.4 94.3 19.1zm-50.8-134.6c-52.8 0-50.5-71.2 1.2-71.2 49.5 0 50.8 71.2-1.2 71.2zm133.3 100.5v-32.1c26.8-3.7 27.2-2 27.2-11V203.6c0-8.5-2.1-7.4-27.2-16.3l4.5-32.9H324v168.7c0 6.5 .4 7.3 6.5 8.1l20.7 2.8v32.1zm52.5-244.3c-23.2 0-36.6-13.4-36.6-36.6s13.4-35.8 36.6-35.8c23.6 0 37 12.6 37 35.8s-13.4 36.6-37 36.6zM512 350.5c-17.5 8.5-43.1 16.3-66.3 16.3-48.4 0-66.7-19.5-66.7-65.5V194.8c0-5.4 1.1-4.1-31.7-4.1V154.5c35.8-4.1 50-22 54.5-66.3h38.6c0 65.8-1.3 61.8 3.3 61.8H501v40.7h-60.6v97.2c0 6.9-4.9 51.4 60.6 26.8z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="currentColor" d="M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z"/></svg>

After

Width:  |  Height:  |  Size: 937 B

View file

@ -0,0 +1,2 @@
[[imports]]
path = "github.com/jpanther/lynx"

16
content/legal_notice.md Normal file
View file

@ -0,0 +1,16 @@
+++
title = 'Legal Notice'
date = 2024-02-13T07:31:09+01:00
+++
The following information is provided in accordance with § 5 TMG of German Law.
## Contact Details
Martin Wurm
c/o Chaos Computer Club Darmstadt e. V.
Wilhelminenstraße 17
64283 Darmstadt
webmaster@mart-w.de
Last changed: 13th February, 2024.

261
content/privacy.md Normal file
View file

@ -0,0 +1,261 @@
+++
title = 'Privacy Policy'
date = 2024-02-13T07:45:42+01:00
+++
The website that brought you here is part of the Broken Tech Cloud family of
websites hosted by me, mart-w <privacy@mart-w.de>. This privacy policy explains
how those websites collect the personal data they collect from you if you
interact with them.
## To Make it Short
I have no interest in collecting any more data about you than absolutely
necessary, and the data I do have to collect I treat with the utmost respect
for your privacy. This includes measures such as:
* Sparse data collection.
* Regular pruning of collected data.
* Encryption.
* No sharing data with third parties whatsoever, except when its necessary
to provide the services you use.
* No inclusion of third-party assets like externally hosted CAPTCHA or
analytics solutions.
You can always reach out to me to ask questions about the handling of your
personal data and to make use of your rights laid out in the EU General Data
Protection Regulation (GDPR). Please direct those requests at privacy@mart-w.de.
## What Data Is Collected?
### Logging
When you use the services provided by me, some of your actions will be temporarily
recorded in log files together with basic, but nevertheless personally identifiable
information, such as your IP address or username. Examples of events being logged
might be:
* You making a request against one of my webservers, in which case your IP will
be stored together with the exact time and date of your request and the requested
resource.
* You performing an action on one of my services, for example playing media,
changing sensitive settings, or trying to access resources you are not allowed to
access. In those cases a user ID that is directly linkable to you may be stored,
together with information about the event that took place.
It is in my legitimate interest to record this logging data in order to detect
and mitigate security risks, prevent abuse of my services, and identify issues
affecting the functionality of my services. I do reserve the right to use
automated tools to detect anomalies in the log data. However, those logs will
never be reviewed manually for any other reason than the ones I just provided.
In some cases, there can be a legitimate interest or even a legal obligation to
keep log files for an extended amount of time, for example during investigations
by national authorities or in the aftermath of a cybersecurity incident. In all
other cases, log files will be deleted automatically **after 7 days at the latest.
Due to technical limitations, some of the log files are stored unencrypted until
they are deleted.
## Identity Data
My services make use of a central Identity Provider (IDP), which manages your
access to the various services and provides identity information to them in case
this is necessary. When you create an account, the following data about you will
be stored:
* Your username.
* Your display name.
* Your email address.
* A unique identifier (UUID) linked to your account.
* Which groups youre being assigned to, and, by proxy, your access rights across
my different services.
* Information about your active sessions.
* Your chosen login credentials in an undecryptably encrypted format.
Optionally, you can provide the IDP with additional profile information which
will be stored alongside your other information. This includes data such as:
* Your legal name.
* Your pronouns.
* Your profile picture.
The purpose for the collection of this data is to provide a secure and consistent
login solution and to keep your profile information up-to-date across all connected
services. For that reason, this data will be retained **indefinitely** unless you
request deletion of your account and thus also forfeit your access to my other
services.
## Application-Specific Data
Using your IDP account or even by other means, you can access a variety of
different services. In general, those services will not store any data about
you until you log into them for the first time. One exception to this rule
are services that employ federation mechanisms in order to interface with other
similar services. In those cases, it might be that you interact with my services
indirectly through another service youre signed up to.
### Jellyfin
Jellyfin is a media server. If you decide to make use of this service, it will
store the following information about you:
* Profile information, including:
* Your username.
* Your unique user ID.
* What libraries you may access.
* Whether you have administrative rights.
* Optionally your profile picture.
* Your watch, read, and listen history.
* Any playlists you create.
The mentioned profile information will largely be provided by the IDP and thus
mirror your information stored there. All information connected to your Jellyfin
account is required to provide the service, and will be retained **indefinitely**
unless you request your account to be deleted.
### Forgejo
Forgejo ist a Git forge, i.e. a platform that can be used to store and manage
version-controlled projects and collaborate on them. If you decide to make use
of this service, it will store the following information about you:
* Profile information, including:
* Your username.
* Your email address.
* What groups and organisations you belong to.
* What resources you have access to.
* Whether you have administrative rights.
* Optionally:
* Your legal name.
* Your biography text.
* Your website's URL.
* Your location.
* Your profile picture.
* Any additional information you choose to add to your account.
* Your repositories and all data stored in them.
* Your contributions to other repositories.
* A log of all interactions you have made with your own or other repositories.
The mentioned profile information will largely be provided by the IDP and thus
mirror your information stored there. All information connected to your Forgejo
account is required to provide the service, and will be retained **indefinitely**
unless you request your account to be deleted. Notice that, while I can and will
delete your own repositories together with your account, **your contributions to
other projects cannot be removed and will be retained indefinitely.** This is
necessary due to the way Git functions.
#### Federation
Forgejo supports a feature called federation, which lets you contribute to
projects hosted on different Git forges and also lets users from those forges
contribute to your projects. If you are a user of my Forgejo instance, this means
that some of your data can be shared with other forges in order to facilitate
this cross-instance collaboration. There is currently no way for you to opt out
of this. If you do not consent to your data being shared in that manner, you
cannot use my Forgejo instance at this point.
The federation feature also implies that your data can end up stored on my forge
even if you dont have an account on it, by means of collaborating on projects
hosted on my instance through an account you have on another instance. Again, as
noted earlier, those contributions cannot be removed due to the inner workings
of Git. If you do not consent to your data being shared with and stored on my
instance, please get into contact with the administrator of your instance, as it
is their responsibility to manage federation on their instance and inform their
users adequately about their data being shared.
### Matrix
Matrix is a federated chat application. You cannot currently join my Matrix
instance as a user. However, similar to the case with Forgejo, the fact that
Matrix employs federation means that data related to you can end up processed
and stored on my instance. This can include, but is not limited to:
* Your user ID.
* Your unencrypted messages, if you dont use encryption and either text me or
are a member of a chat group that I am also a part of.
* Your encrypted messages, if you use encryption and either text me or are a
member of a chat group that I am also a part of.
* Metadata such as timestamps of your messages and what groups you are a member of.
If you do not consent to me storing and processing your data, please reach out
to the administrator of your instance, as it is their responsibility to manage
federation on their instance and inform their users adequately about their data
being shared. Sadly, due to the way Matrix works on a technical level, I cannot
delete your data after it has been shared with my instance and it will be
retained **indefinitely.**
## How Is Your Data Stored?
Your data is stored securely and, as far as technically possible, encrypted
on my own servers at home in Darmstadt, Germany. The applicable data retention
periods depend on both the kind of data and the service it is linked to.
Therefore, you can find information on that in the chapters relevant to the
respective services.
### Backups
Please keep in mind that, to ensure recovery after disasters, cybersecurity
incidents, data loss due to human error or other other events, regular backups
of all stored data (except for most logs) are made and sent off-site for safe
keeping. All such backups are securely encrypted so that nobody except for me
is able to access the data. However, as a consequence of those backups existing,
it may happen that data is retained in this encrypted state for **up to one year**
after it has been superficially deleted from the live servers.
## Marketing
Your personal information is not used for any kinds of marketing purposes.
## Cookies
Cookies are text files placed on your computer to collect standard Internet
log information and visitor behavior information. When you visit my websites,
I may collect information from you automatically through cookies or similar technology.
For further information, visit https://allaboutcookies.org/.
### How Are Cookies Used?
On my services, the use of cookies is reserved only to keep session information
(i.e. keep you logged in) and to enhance the security of my services. Therefore,
all cookies that your web browser will receive from my web services are integral
to their functionality and cannot be avoided.
### How to Manage Cookies
You can set your browser not to accept cookies, and the above website tells you
how to remove cookies from your browser. However, in a few cases, some of our
website features may not function as a result.
## Your Rights
Under the GDPR, you are entitled to the following:
The right to access
: You have the right to request a copy of your personal data.
The right to rectification
: You have the right to request that I correct any information you believe is
inaccurate. You also have the right to request that I complete the information
you believe is incomplete.
The right to erasure
: You have the right to request that I erase your peronal data, under certain
conditions.
The right to restrict processing
: You have the right to request that I restrict the processing of your personal
data, under certain conditions.
The right to object to processing
: You have the right to object to my processing of your personal data, under
certain conditions.
The right to data portability
: You have the right to request that I transfer the data that I have collected
to another organisation, or directly to your, under certain conditions.
If you make a request, I have one month to respond to you.
## Privacy Policies of Other Websites
My websites contain links to other websites. This privacy policy applies only to
my websites, so if you click on a link to another website, you should read their
privacy policy.
## Changes to This Privacy Policy
This privacy policy is under regular review and any updates will be placed on
this web page. This privacy policy was last updated on the 13th February, 2024.
## How to Contact Me
If you have any questions about this privacy policy, the data I hold on you, or
you would like to exercise one of your data protection rights, please get in
touch with me. Either email me at privacy@mart-w.de or write to me at:
Martin Wurm
c/o Chaos Computer Club Darmstadt e. V.
Wilhelminenstraße 17
64283 Darmstadt

23
default.nix Normal file
View file

@ -0,0 +1,23 @@
{pkgs ? import <nixpkgs> {}}:
with pkgs;
stdenv.mkDerivation rec {
name = "brokentech.cloud-${version}";
version = "0.1";
src = ./.;
nativeBuildInputs = [
git
go
hugo
];
buildPhase = ''
hugo
'';
installPhase = ''
mkdir -p $out
cp -r ./public/* $out
'';
}

5
go.mod Normal file
View file

@ -0,0 +1,5 @@
module git.brokentech.cloud/mart-w/brokentech.cloud
go 1.21.5
require github.com/jpanther/lynx v1.3.1 // indirect

2
go.sum Normal file
View file

@ -0,0 +1,2 @@
github.com/jpanther/lynx v1.3.1 h1:s3u2mC2VU8SgJ/Jlk7PbdrmLy1T63QvuwGQbvS9QqdI=
github.com/jpanther/lynx v1.3.1/go.mod h1:nUK1+IfScKhRA3/jBH+YCYfpO3znP5Nsm6ROFGpma44=

29
hugo.toml Normal file
View file

@ -0,0 +1,29 @@
baseURL = "https://brokentech.cloud/"
languageCode = "en-gb"
defaultContentLanguage = "en"
title = "The Broken Tech Cloud"
copyright = "&copy; 2024 mart-w"
enableEmoji = true
disableKinds = ["taxonomy", "term"]
[author]
name = "The Broken Tech Cloud"
headline = "Making innocent web apps cloud since 2021"
image = "logo_big.png"
links = [
{ auth = { href = "https://accounts.brokentech.cloud", text = "Log in to stuff" } },
{ git = { href = "https://git.brokentech.cloud", text = "Look at some code" } },
{ monitoring = { href = "https://status.brokentech.cloud", text = "See whats most broken" } },
{ link = { href = "https://mart-w.de/", text = "Read up on the admin" } },
{ mastodon = { href = "https://chaos.social/@mart_w", text = "Yell at the admin" } },
{ legal = { href = "/legal_notice", text = "Legal Notice" } },
{ legal = { href = "/privacy", text = "Privacy Policy" } },
]
[module]
[module.hugoVersion]
extended = false
min = "0.86.1"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

BIN
static/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

BIN
static/logo_big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB