presentations_compsoc/flake.nix

108 lines
2.9 KiB
Nix

{
description = "Skynet Presentations";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
utils.url = "github:numtide/flake-utils";
# nix flake lock --update-input bfom
bfom.url = "gitlab:silver_rust/bfom";
};
/*
sudo nano /etc/nix/nix.conf
trusted-users = {username}
*/
nixConfig = {
extra-substituters = "https://nix-cache.skynet.ie/skynet-cache";
extra-trusted-public-keys = "skynet-cache:OdfA4Or0JcHiHf05fsiIR4nZT2z2yDEtkoLqhntGAz4=";
};
outputs = {
self,
nixpkgs,
utils,
bfom,
...
}: utils.lib.eachDefaultSystem (
system: let
pkgs = (import nixpkgs) {
inherit system;
};
dependencies = with pkgs; [
# For teh presentations themselves
presenterm
# for exporting
(pkgs.python3.withPackages (python-pkgs: with python-pkgs; [
# for exporting
weasyprint
]))
# various languages to embed in it
## Java
# zulu24
## C
# gcc
## rust
# cargo
# rustc
## lua
# lua
## racket
# racket
## go
# go
];
in rec {
# `nix develop`
devShell = pkgs.mkShell {
packages = dependencies;
PRESENTERM_CONFIG_FILE = "config.yaml";
};
packages.default = pkgs.stdenv.mkDerivation {
name = "slides.skynet.ie";
src = self;
nativeBuildInputs = dependencies;
buildInputs = dependencies;
buildPhase = ''
# first pass through to get teh old files
${bfom.defaultPackage.x86_64-linux}/bin/cargo-bfom
# then look into ./slides
export PRESENTERM_CONFIG_FILE=config.yaml
# recursively find each one then --export-html to ./build/slides/
shopt -s globstar
for source in slides/**/*.md; do
echo $source
output="$(dirname "$source")/$(basename "$source" .md).html"
echo $output
presenterm --export-html "$source"
mkdir -p "build/$(dirname "$source")"
cp "$output" "build/$output"
done
shopt -u globstar
'';
installPhase = "mkdir -p $out; cp -R build/* $out";
};
});
# @ inputs: let
# pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
# in {
# # `nix build`
# packages.x86_64-linux.default = pkgs.stdenv.mkDerivation {
# name = "slides.skynet.ie";
# src = self;
# buildPhase = "${bfom.defaultPackage.x86_64-linux}/bin/cargo-bfom";
# installPhase = "mkdir -p $out; cp -R build/* $out";
# };
#
# devShells.x86_64-linux.default = pkgs.mkShell {
# name = "Skynet presentations env";
# nativeBuildInputs = [
# bfom.defaultPackage.x86_64-linux
# ];
# };
# };
}