Paul Zinselmeyer
25a5ca3e2d
- Add Assignment-7 to flake.nix - Implement basic framework of app - Implement proxy subcommand (mostly) - Implement basics of intermediary subcommand
105 lines
2.8 KiB
Nix
105 lines
2.8 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)"
|
|
"Assignment 5 - Software Security - Teil 1"
|
|
"Assignment 6 - Software Security - Teil 2"
|
|
];
|
|
|
|
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;
|
|
};
|
|
|
|
lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
|
|
version = builtins.substring 0 8 lastModifiedDate;
|
|
|
|
nixpkgsFor = system: import nixpkgs { inherit system; overlays = [ self.overlay ]; };
|
|
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};
|
|
}) // {
|
|
"x86_64-linux"."Assignment 7" = (nixpkgsFor "x86_64-linux").signatureProxy;
|
|
};
|
|
|
|
devShells = forAllSystems({pkgs, ...}: let
|
|
tex = texPackages pkgs;
|
|
in {
|
|
default = pkgs.mkShell {
|
|
packages = [ pkgs.coreutils tex ];
|
|
};
|
|
});
|
|
|
|
overlay = final: prev: with final; {
|
|
signatureProxy = stdenv.mkDerivation {
|
|
pname = "SignatureProxy";
|
|
inherit version;
|
|
|
|
src = ./7-SGX_Hands-on;
|
|
|
|
buildScript = ''
|
|
make
|
|
'';
|
|
|
|
installScript = ''
|
|
mkdir -p $out/bin
|
|
cp app $out/bin
|
|
cp enclave.so $out/bin
|
|
'';
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
clang
|
|
glibc
|
|
sgx-sdk
|
|
gmp.dev
|
|
openssl.dev
|
|
pkg-config
|
|
];
|
|
|
|
env = {
|
|
SGX_SDK = pkgs.sgx-sdk;
|
|
SGX_MODE = "SIM";
|
|
};
|
|
};
|
|
};
|
|
|
|
hydraJobs = packages;
|
|
};
|
|
|
|
}
|
|
|