63 lines
1.7 KiB
Nix
63 lines
1.7 KiB
Nix
|
{
|
||
|
description = "LaTeX Documents for Systemsicherheit";
|
||
|
inputs = {
|
||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||
|
};
|
||
|
outputs = { self, nixpkgs }: let
|
||
|
assignments = [
|
||
|
"Assignment 4 - Protokollsicherheit (Praxis)"
|
||
|
];
|
||
|
|
||
|
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;
|
||
|
};
|
||
|
}
|
||
|
|