Systemsicherheit/flake.nix
Paul Zinselmeyer 25a5ca3e2d [Assignment-7] Flake + App base
- Add Assignment-7 to flake.nix
- Implement basic framework of app
- Implement proxy subcommand (mostly)
- Implement basics of intermediary subcommand
2024-07-08 11:19:48 +02:00

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;
};
}