diff --git a/.gitignore b/.gitignore index d2d5473..ca9a506 100644 --- a/.gitignore +++ b/.gitignore @@ -104,4 +104,6 @@ shell.nix .venv # murmeldin -overview.md \ No newline at end of file +overview.md + +/result diff --git a/README.md b/README.md index c657b59..9b54d24 100644 --- a/README.md +++ b/README.md @@ -19,15 +19,13 @@ This is the website of the CCCB. cd cccb-website ``` -### Run site locally +4. Run hugo webserver -Run hugo webserver: + ```shell + hugo serve + ``` -```shell -hugo serve -``` - -Point your browser to: +5. Point your browser to: To ready your site for upload, run `./build.sh`, which also generates `all.ics` and adds the calendar table to `index.html`. @@ -46,6 +44,13 @@ as long as `hugo serve` is running. - If successfull, check [Website](https://berlin.ccc.de/) if change is correct. 7. Profit! +## Nix stuff + +- After entering the shell with `nix develop`, hugo is available and `hugo serve` should work +- Python including required packages will be available, so the `build.sh` should work without a venv +- You can build the staging and production builds with `nix build .#staging-content` and `nix build .#production-content` +- Do not update the nixpkgs branch - 25.05 contains a newer hugo version that is incompatible with the theme (last checked June 2025) + --- Made with ❤️ and [Hugo](https://gohugo.io). diff --git a/TODO.md b/TODO.md index 10121f4..2d75a8b 100644 --- a/TODO.md +++ b/TODO.md @@ -3,9 +3,7 @@ - DSGVO-compliant Datenschutzerklärung reinbasteln - Entscheiden, welche Seiten sonst noch konvertiert werden sollen und welche in die ewigen Datengründe gehen können - - -# Done +## Done - Template aussuchen - Rausfinden, wie man eine Seite konvertiert diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index f96279d..13192d6 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -1,5 +1,5 @@ theme = "blowfish" -baseURL = "https://oururl.de/" +baseURL = "/" defaultContentLanguage = "de" relativeURLs = true canonifyURLs = true diff --git a/content/404.md b/content/404.md deleted file mode 100644 index d9fcfba..0000000 --- a/content/404.md +++ /dev/null @@ -1 +0,0 @@ -Leider existiert diese Seite nicht. \ No newline at end of file diff --git a/content/_index.md b/content/_index.md index b507cf8..531fa85 100644 --- a/content/_index.md +++ b/content/_index.md @@ -23,7 +23,7 @@ description: "Startseite CCCB mit Kurzkalender" --> -### Nächste Veranstaltungen: +### Nächste Veranstaltungen CALENDAR diff --git a/content/verein/anfahrt.md b/content/verein/anfahrt.md index 4451626..fd36db8 100644 --- a/content/verein/anfahrt.md +++ b/content/verein/anfahrt.md @@ -5,13 +5,14 @@ menu: main: parent: "Verein" tag: ["Verein"] +aliases: ["/page/anfahrt/"] --- -# Allgemeine Hinweise +## Allgemeine Hinweise Die Clubräume liegen im Hinterhof der **Marienstr. 11, 10117 Berlin** ([Google](http://maps.google.com/maps?hl=de&q=Marienstr.%2011%2C%2010117%20Berlin), [OpenStreetMap](http://www.openstreetmap.org/node/2007229025#map=17/52.52159/13.38547)). Die Koordinaten sind **52,52194° Nord; 13,38261° Ost**. -# Nahbereichskarte +## Nahbereichskarte {{< figure src="/img/Weg_zum_CCCB.png" @@ -19,28 +20,27 @@ Die Clubräume liegen im Hinterhof der **Marienstr. 11, 10117 Berlin** ([Google] alt="Fußweg vom S Friedrichstraße zum CCCB" >}} -# Ich reise an... +## Ich reise an mit -## mit dem Rad +### einem Fahrrad Eine beschränkte Anzahl von Fahrradständern befindet sich im Innenhof. Auf dem Weg zum Club befinden sich zahlreiche Fahrradstraßen, die bevorzugt werden sollten. Nutzt beispielsweise [BBBike.de](http://bbbike.de/cgi-bin/bbbike.cgi). -## mit öffentlichem Nahverkehr +### öffentlichem Nahverkehr Der Club befindet sich in unmittelbarer Nähe zum S+U Bahnhof **Friedrichstraße**, an dem auch Regionalbahnen halten. Vom S-Bahn-Bahnsteig (S3/S5/S7, oberirdisch, Ausgang Schiffbauerdamm) gibt es einen direkten Weg über die Spree unterhalb der Bahnbrücke. Über die Albrechtstraße erreicht ihr die Marienstraße. -## mit dem Fernverkehr +### Fernverkehr Aussteigen in **Berlin Hauptbahnhof**. Von dort mit jeder S-Bahn oder Regionalbahn Richtung Osten auf der Stadtbahn eine Haltestelle bis zum **Bahnhof Friedrichstraße** fahren. Den Bahnhof Richtung Spree verlassen, dann die Fußgängerbrücke über den Fluß nehmen und der Albrechtstraße bis zur Stichstraße Marienstraße folgen. -## mit dem Flugzeug +### Flugzeug * vom **Flughafen Berlin Brandenburg** (BER/EDDB): mit dem Airport Express (RE 7 und RB 14) oder S9 bis zum **Bahnhof Friedrichstraße**. Alternativ mit dem FEX bis **Berlin Hauptbahnhof**. Von dort siehe jeweils Abschnitt **Fernverkehr**. **Achtung:** Terminal 5 (früher: SXF) ist nicht mit dem Rest des BER verbunden. Als einzige direkte Bahnanbindung steht hier die S9 zur Verfügung. * vom **Flugplatz Straußberg** (EDAY): S7 direkt bis zum **Bahnhof Friedrichstraße**. Von dort siehe Abschnitt **öffentlicher Nahverkehr**. -## mit dem Auto +### Auto Am besten dem Navigationsgerät folgen. Zufahrt aus Richtung Hauptbahnhof oder Brandenburger Tor ist über die Luisenstraße möglich. Wer von der Friedrichstraße kommt, fährt entweder über den Schiffbauerdamm und die Albrechtstraße (Behinderung durch Außgengastronomie und Kopfsteinpflaster) oder fährt über die Reinhardstraße und die Luisenstraße (die Albrechtstraße ist nur in die Gegenrichtung befahrbar). **Warnung:** Vor Ort gibt es je nach Tageszeit wenige Parkmöglichkeiten. Die Marienstraße und alle umliegenden Straßen unterliegen der Parkraumbewirtschaftung seitens des Bezirks. Parkplätze in unmittelbarer Nähe sind selten. - diff --git a/devShells.nix b/devShells.nix new file mode 100644 index 0000000..7c8ed78 --- /dev/null +++ b/devShells.nix @@ -0,0 +1,15 @@ +{ + pkgs, + selfPkgs, + ... +}: +{ + default = pkgs.mkShellNoCC { + inputsFrom = [ selfPkgs.local-content ]; + + packages = with pkgs; [ + go + shellcheck + ]; + }; +} diff --git a/flake.lock b/flake.lock index 6cc6b35..2869045 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1741332913, - "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=", + "lastModified": 1748995628, + "narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=", "owner": "nixos", "repo": "nixpkgs", - "rev": "20755fa05115c84be00b04690630cb38f0a203ad", + "rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 73e94d9..462a81d 100644 --- a/flake.nix +++ b/flake.nix @@ -6,36 +6,74 @@ }; outputs = - { self, nixpkgs }: + { + self, + nixpkgs, + }: let + supported-systems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + "x86_64-darwin" + ]; forAllSystems = f: - nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed ( + nixpkgs.lib.genAttrs supported-systems ( system: f rec { - pkgs = nixpkgs.legacyPackages.${system}; inherit system; + pkgs = nixpkgs.legacyPackages.${system}; + selfPkgs = self.packages.${system}; + lib = pkgs.lib // self.lib; } ); in { - devShells = forAllSystems ( - { pkgs, ... }: - { - default = pkgs.mkShell rec { - packages = with pkgs; [ - hugo - go - (pkgs.python3.withPackages (python-pkgs: [ - python-pkgs.icalendar - python-pkgs.pytz - ])) - shellcheck - ]; - }; - } - ); + packages = forAllSystems (import ./packages.nix); + + devShells = forAllSystems (import ./devShells.nix); formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-rfc-style); + + lib.mkWwwContent = + { domain, system }: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + pkgs.stdenvNoCC.mkDerivation { + pname = "www-content"; + version = domain; + src = ./.; + + # Build dependencies + nativeBuildInputs = [ + pkgs.hugo + pkgs.glibcLocales + (pkgs.python3.withPackages (python-pkgs: [ + python-pkgs.icalendar + python-pkgs.pytz + ])) + ]; + + LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive"; + + # Build phase - run Hugo to generate the site + buildPhase = '' + mkdir -p public + hugo --baseURL=https://${domain}/ + + python3 ./tools/merge_cals.py + upcoming="$(python3 tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')" + cp static/all.ics public/all.ics + sed -i "s#CALENDAR#$upcoming#g" public/index.html + ''; + + # Install phase - copy the public directory to the output + installPhase = '' + mkdir -p $out + cp -r public/* $out/ + ''; + }; }; } diff --git a/i18n/de.toml b/i18n/de.toml new file mode 100644 index 0000000..518d233 --- /dev/null +++ b/i18n/de.toml @@ -0,0 +1,4 @@ +[error] +404_title = "Seite nicht gefunden :confused:" +404_error = "Fehler 404" +404_description = "Es sieht so aus, als hättest du einen toten Link gefunden. Leider existiert diese Seite nicht." diff --git a/packages.nix b/packages.nix new file mode 100644 index 0000000..08271c9 --- /dev/null +++ b/packages.nix @@ -0,0 +1,19 @@ +{ + pkgs, + lib, + ... +}: +{ + production-content = lib.mkWwwContent { + domain = "berlin.ccc.de"; + inherit (pkgs) system; + }; + staging-content = lib.mkWwwContent { + domain = "staging.berlin.ccc.de"; + inherit (pkgs) system; + }; + local-content = lib.mkWwwContent { + domain = "localhost"; + inherit (pkgs) system; + }; +} diff --git a/themes/blowfish b/themes/blowfish index 0d03681..0b06a64 160000 --- a/themes/blowfish +++ b/themes/blowfish @@ -1 +1 @@ -Subproject commit 0d03681d203f48a8e8a0a836618b091def375c09 +Subproject commit 0b06a64139beba6287e7685f4c810ad4ff772fde