Compare commits

...

2 Commits

Author SHA1 Message Date
Simon Bruder 1f5355f914
die-hose: Add
continuous-integration/drone/push Build is passing Details
2021-02-01 09:38:53 +01:00
Simon Bruder b913a8c1b9
Use niv 2021-02-01 09:38:53 +01:00
10 changed files with 356 additions and 16 deletions

View File

@ -17,7 +17,7 @@ steps:
NETLIFY_AUTH_TOKEN:
from_secret: netlify_auth_token
commands:
- nix-shell --run "netlify deploy --prod -d $(readlink -f result)"
- nix-shell -I nixpkgs=./pkgs.nix --run "netlify deploy --prod -d $(readlink -f result)"
node:
nix: 1

View File

@ -1,14 +1,8 @@
let
pkgs = import ./nixpkgs.nix {};
sources = import ./nix/sources.nix;
pkgs = import sources.nixpkgs {};
# reproducible source
gitignoreSrc = pkgs.fetchFromGitHub {
owner = "hercules-ci";
repo = "gitignore";
rev = "c4662e662462e7bf3c2a968483478a665d00e717";
sha256 = "sha256:1npnx0h6bd0d7ql93ka7azhj40zgjp815fw2r6smg8ch9p7mzdlx";
};
inherit (import gitignoreSrc { inherit (pkgs) lib; }) gitignoreSource;
inherit (import sources.gitignore { inherit (pkgs) lib; }) gitignoreSource;
python = (pkgs.python38.withPackages (ps: with ps; [
CommonMark
@ -23,6 +17,7 @@ let
beamertheme-metropolis
biber
biblatex
csquotes
datetime
datetime2
datetime2-german
@ -36,7 +31,6 @@ pkgs.stdenv.mkDerivation {
name = "presis";
nativeBuildInputs = [
pkgs.netlify-cli
python
texlive
];

View File

@ -28,6 +28,7 @@
<tr><td></td><td><a href="revealjs/neptun/">Neptun</a></td></tr>
<tr><td></td><td><a href="latex/podcast-distribution/index.pdf">Rechtliche Voraussetzungen für einen Podcast Teil 2: Verteilen des Podcasts</a> (<a href="latex/podcast-distribution/handout.pdf">Handout</a>)</td></tr>
<tr><td></td><td><a href="latex/printer/index.pdf">Drucker</a> (<a href="latex/printer/handout.pdf">Handout</a>)</td></tr>
<tr><td></td><td>Carl Sternheim: Die Hose (<a href="latex/die-hose/handout.pdf">Handout</a>)</td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,43 @@
@book{sternheim-die-hose,
author = {Carl Sternheim},
title = {Die Hose},
subtitle = {Ein bürgerliches Lustspiel},
location = {Berlin},
publisher = {Karl-Maria Guth},
year = {2019},
edition = {Neuausgabe},
isbn = {978-3-7437-0638-5},
}
@book{liu-sternheim-komödie-expressionismus,
author = {Li Liu},
title = {Carl Sternheim und die Komödie des Expressionismus},
location = {Karlsruhe},
publisher = {KIT Scientific Publishing},
year = {2013},
edition = {Neuauflage [Online]},
isbn = {978-2-8218-7421-3},
pagetotal = {201},
pages = {44, 47, 53, 138},
url = {https://books.openedition.org/ksp/2125},
urldate = {2021-01-12},
}
@online{duden-satire,
title = {„Satire“ auf Duden online},
author = {Dudenreaktion},
url = {https://www.duden.de/node/125754/revision/125790},
urldate = {2021-01-18},
}
@inbook{diecks-biografie-sternheim,
author = {Thomas Diecks},
title = {Sternheim, Carl},
booktitle = {Neue Deutsche Biographie},
volume = {25},
year = {2013},
location = {Berlin},
publisher = {Duncker \& Humblot},
edition = {[Online-Version]},
isbn = {978-3-4281-1206-7},
pages = {301 -- 303},
url = {https://www.deutsche-biographie.de/pnd118617958.html#ndbcontent},
urldate = {2021-01-28},
}

123
latex/die-hose/handout.tex Normal file
View File

@ -0,0 +1,123 @@
% TeX program = xelatex
% vim: set spell spelllang=de:
\documentclass{../common/handout}
\usepackage{csquotes}
\usepackage[
style=authortitle,
]{biblatex}
\addbibresource{bibliography.bib}
\title{Carl Sternheim: Die Hose}
\author{Simon Bruder}
\subject{Deutsch \\
Christian-von-Bomhard-Schule}
\date{\DTMdisplaydate{2021}{02}{02}{-1}}
\begin{document}
\maketitle
Die Komödie \textit{Die Hose} von \textsc{Carl Sternheim} erzählt von den
durch ein Missgeschick ausgelösten Anbahnungsversuchen zweier Personen zur
Protagonistin, die schließlich scheitern und ihr Ehemann sich an diesen
bereichert.
\section{Der Autor}
\begin{itemize}
\item Geboren 1880 in Hannover, Gestorben 1930 in Brüssel
\item Veröffentlichte zuerst Gedichte, später expressionistische Prosa
\item Besonders bekannt für Dramen, in denen Rebellion gegen die
gesellschaftlichen Verhältnisse Thema ist und Komödien in denen diese
angeprangert werden
\item Galt als wichtigster Satiriker seiner Zeit
\end{itemize}
\section{Das Werk}
\begin{itemize}
\item Erster Teil des Zyklus \textit{Aus dem bürgerlichen Heldenleben} und
der \textit{Maske-Trilogie}
\item Uraufführung am \DTMdisplaydate{1911}{02}{15}{-1} in den Berliner
Kammerspielen nach Aufhebung des Verbotes des Polizeipräsidenten
\item Personen: Theobald und Luise Maske, Gertrud Deuter (Nachbarin), Frank
Scarron und Benjamin Mandelstam (Untermieter), Ein Fremder (Herr Stengelhöh)
\item Spielt um 1900 in der Wohnung des Ehepaars Maske
\item Vier Aufzüge, insgesamt 28 Auftritte
\end{itemize}
\section{Inhalt}
\begin{itemize}
\item Luise Maske verliert Hose bei kaiserlicher Parade → Theobald Maske
überschätzt Wichtigkeit und schlägt sie heftig
\item Scarron und Mandelstam haben sie gesehen und werden Untermieter bei den
Maskes (Hoffnung auf Nähe zu Luise)
\item Luise ist von Scarron angetan, dieser schließt sich jedoch in seinem
Zimmer ein
\item Theobald Maske demonstriert Scarron und Mandelstam seine Überlegenheit
\item Scarron und Mandelstam ziehen bei voller Bezahlung vorzeitig aus
\item Theobald Maske trifft sich heimlich mit Gertrud Deuter
\item An 1. Hochzeitstag: Stengelhöh zieht als neuer Mieter ein, Theobald
Maske will ein Kind, da sie nun genug Geld haben
\end{itemize}
\section{Charakterisierung der Hauptpersonen}
\subsection{Luise Maske}
\begin{itemize}
\item Verzweifelt
\item Ist ihrem Mann unterworfen
\item Zeigt Interesse an Scarron → »Abwechslung« von Theobald
\end{itemize}
\subsection{Theobald Maske}
\begin{itemize}
\item Spießbürger
\item Intellektuell überlegen
\item Schlägt Profit aus Scarron und Mandelstam
\item Widerspricht eigenen Vorstellungen (Affäre mit Deuter)
\end{itemize}
\section{Sprachliche Besonderheiten}
\begin{itemize}
\item Geprägt von Ellipsen: (sehr) kurze Sätze bzw. Satzteile
\item Inversionen und Parenthesen
\item Ziel: Verfremdung der Sprache → Spott
\end{itemize}
\section{Merkmale der Komödie und Satire}
\subsection{Komödie}
\begin{itemize}
\item Überspitzte Darstellung
\item Personen entsprechen nicht den Erwartungen
\item Unerwartete Wendungen
\end{itemize}
\subsection{Satire}
\begin{itemize}
\item Übertreibung
\item Spott an Personen bzw. Personengruppen
\item Übt Kritik an Wilhelminischem Bürgertum
\end{itemize}
\section{Merkmale des Expressionismus}
\begin{itemize}
\item Anfang des 20. Jahrhunderts
\item Kritik des Bürgertums
\item Satirische Darstellung
\end{itemize}
\appendix
% bibliography
\nocite{*} % cite everything since we do no inline citing
\printbibliography
\end{document}

26
nix/sources.json Normal file
View File

@ -0,0 +1,26 @@
{
"gitignore": {
"branch": "master",
"description": "Nix function for filtering local git sources",
"homepage": "",
"owner": "hercules-ci",
"repo": "gitignore",
"rev": "c4662e662462e7bf3c2a968483478a665d00e717",
"sha256": "1npnx0h6bd0d7ql93ka7azhj40zgjp815fw2r6smg8ch9p7mzdlx",
"type": "tarball",
"url": "https://github.com/hercules-ci/gitignore/archive/c4662e662462e7bf3c2a968483478a665d00e717.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs": {
"branch": "release-20.09",
"description": "Nix Packages collection",
"homepage": "",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "99f8282a65821f148df596ba389606e732eaf99d",
"sha256": "1mm4j1vjs875yzv03plng43ivny0qm09hxpn0if8g9vc849rwc2g",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/99f8282a65821f148df596ba389606e732eaf99d.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}

148
nix/sources.nix Normal file
View File

@ -0,0 +1,148 @@
# This file has been generated by Niv.
let
#
# The fetchers. fetch_<type> fetches specs of type <type>.
#
fetch_file = pkgs: spec:
if spec.builtin or true then
builtins_fetchurl { inherit (spec) url sha256; }
else
pkgs.fetchurl { inherit (spec) url sha256; };
fetch_tarball = pkgs: name: spec:
let
ok = str: ! builtins.isNull (builtins.match "[a-zA-Z0-9+-._?=]" str);
# sanitize the name, though nix will still fail if name starts with period
name' = stringAsChars (x: if ! ok x then "-" else x) "${name}-src";
in
if spec.builtin or true then
builtins_fetchTarball { name = name'; inherit (spec) url sha256; }
else
pkgs.fetchzip { name = name'; inherit (spec) url sha256; };
fetch_git = spec:
builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; };
fetch_local = spec: spec.path;
fetch_builtin-tarball = name: throw
''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
$ niv modify ${name} -a type=tarball -a builtin=true'';
fetch_builtin-url = name: throw
''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
$ niv modify ${name} -a type=file -a builtin=true'';
#
# Various helpers
#
# The set of packages used when specs are fetched using non-builtins.
mkPkgs = sources:
let
sourcesNixpkgs =
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {};
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
in
if builtins.hasAttr "nixpkgs" sources
then sourcesNixpkgs
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
import <nixpkgs> {}
else
abort
''
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
add a package called "nixpkgs" to your sources.json.
'';
# The actual fetching function.
fetch = pkgs: name: spec:
if ! builtins.hasAttr "type" spec then
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
else if spec.type == "file" then fetch_file pkgs spec
else if spec.type == "tarball" then fetch_tarball pkgs name spec
else if spec.type == "git" then fetch_git spec
else if spec.type == "local" then fetch_local spec
else if spec.type == "builtin-tarball" then fetch_builtin-tarball name
else if spec.type == "builtin-url" then fetch_builtin-url name
else
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
# If the environment variable NIV_OVERRIDE_${name} is set, then use
# the path directly as opposed to the fetched source.
replace = name: drv:
let
saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name;
ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}";
in
if ersatz == "" then drv else ersatz;
# Ports of functions for older nix versions
# a Nix version of mapAttrs if the built-in doesn't exist
mapAttrs = builtins.mapAttrs or (
f: set: with builtins;
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
range = first: last: if first > last then [] else builtins.genList (n: first + n) (last - first + 1);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
concatStrings = builtins.concatStringsSep "";
# fetchTarball version that is compatible between all the versions of Nix
builtins_fetchTarball = { url, name, sha256 }@attrs:
let
inherit (builtins) lessThan nixVersion fetchTarball;
in
if lessThan nixVersion "1.12" then
fetchTarball { inherit name url; }
else
fetchTarball attrs;
# fetchurl version that is compatible between all the versions of Nix
builtins_fetchurl = { url, sha256 }@attrs:
let
inherit (builtins) lessThan nixVersion fetchurl;
in
if lessThan nixVersion "1.12" then
fetchurl { inherit url; }
else
fetchurl attrs;
# Create the final "sources" from the config
mkSources = config:
mapAttrs (
name: spec:
if builtins.hasAttr "outPath" spec
then abort
"The values in sources.json should not have an 'outPath' attribute"
else
spec // { outPath = replace name (fetch config.pkgs name spec); }
) config.sources;
# The "config" used by the fetchers
mkConfig =
{ sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null
, sources ? if isNull sourcesFile then {} else builtins.fromJSON (builtins.readFile sourcesFile)
, pkgs ? mkPkgs sources
}: rec {
# The sources, i.e. the attribute set of spec name to spec
inherit sources;
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
inherit pkgs;
};
in
mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }

View File

@ -1,4 +0,0 @@
import (fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/24c9b05ac53e422f1af81a156f1fd58499eb27fb.tar.gz";
sha256 = "1aw5zxd91rzvvzqk8zi5qrnkjsgf4nv77pa3jbpsymhpwr0gj5i3";
})

1
pkgs.nix Normal file
View File

@ -0,0 +1 @@
import (import ./nix/sources.nix).nixpkgs

View File

@ -1 +1,9 @@
import ./default.nix
let
pkgs = import (import ./nix/sources.nix).nixpkgs {};
in
(import ./default.nix).overrideAttrs(o: o // {
nativeBuildInputs = o.nativeBuildInputs ++ (with pkgs; [
bash
netlify-cli
]);
})