2024-05-27 11:10:14 +02:00
|
|
|
{
|
|
|
|
description = "LaTeX Documents for Systemsicherheit";
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
|
|
|
};
|
|
|
|
outputs = { self, nixpkgs }: let
|
|
|
|
assignments = [
|
|
|
|
"Assignment 4 - Protokollsicherheit (Praxis)"
|
2024-05-27 18:53:37 +02:00
|
|
|
"Assignment 5 - Software Security - Teil 1"
|
2024-06-23 11:57:12 +02:00
|
|
|
"Assignment 6 - Software Security - Teil 2"
|
2024-05-27 11:10:14 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
forAllSystems = function:
|
|
|
|
nixpkgs.lib.genAttrs [
|
|
|
|
"x86_64-linux"
|
|
|
|
"aarch64-linux"
|
|
|
|
] (system: function {
|
|
|
|
inherit system;
|
|
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
|
|
});
|
|
|
|
|
|
|
|
forAllAssignments = function:
|
|
|
|
nixpkgs.lib.genAttrs assignments (assignment: function assignment);
|
|
|
|
|
|
|
|
texPackages = pkgs: pkgs.texlive.combine {
|
|
|
|
inherit (pkgs.texlive) scheme-full latex-bin latexmk;
|
|
|
|
};
|
|
|
|
in rec {
|
|
|
|
packages = forAllSystems({system, pkgs}: forAllAssignments(assignment: let
|
|
|
|
tex = texPackages pkgs;
|
|
|
|
document = pkgs.stdenvNoCC.mkDerivation rec {
|
|
|
|
name = assignment;
|
|
|
|
src = self;
|
|
|
|
buildInputs = [ pkgs.coreutils tex ];
|
|
|
|
phases = [ "unpackPhase" "buildPhase" "installPhase" ];
|
|
|
|
buildPhase = ''
|
|
|
|
export PATH="${pkgs.lib.makeBinPath buildInputs}";
|
|
|
|
mkdir -p .cache/texmf-var
|
|
|
|
cd "./${assignment}"
|
|
|
|
env TEXMFHOME=.cache TEXMFVAR=.cache/texmf-var \
|
|
|
|
latexmk -interaction=nonstopmode -pdf -lualatex \
|
|
|
|
"./abgabe.tex"
|
|
|
|
'';
|
|
|
|
installPhase = ''
|
|
|
|
mkdir -p $out
|
|
|
|
cp *.pdf $out/
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
in document) // {
|
|
|
|
default = packages.${system}.${pkgs.lib.last assignments};
|
|
|
|
});
|
|
|
|
|
|
|
|
devShells = forAllSystems({pkgs, ...}: let
|
|
|
|
tex = texPackages pkgs;
|
|
|
|
in {
|
|
|
|
default = pkgs.mkShell {
|
|
|
|
packages = [ pkgs.coreutils tex ];
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
|
|
|
hydraJobs = packages;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|