{ description = "UL Computer Society Open Governance"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; 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:zMFLzcRZPhUpjXUy8SF8Cf7KGAZwo98SKrzeXvdWABo="; }; outputs = { self, nixpkgs, utils, bfom, }: utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { system = "${system}"; config = { allowUnfree = true; permittedInsecurePackages = [ # for obsidian "electron-25.9.0" # for wkhtmltopdf "qtwebkit-5.212.0-alpha4" ]; }; }; tex = pkgs.texlive.combine { #scheme-full inherit (pkgs.texlive) scheme-full latex-bin latexmk; }; vars = [ "sender" "receiver" ]; texvars = toString (pkgs.lib.imap1 (i: n: ''\def\${n}{${"$" + (toString i)}}'') vars); in rec { # `nix develop` devShell = pkgs.mkShell { nativeBuildInputs = with pkgs; [obsidian]; shellHook = '' ${pkgs.obsidian}/bin/obsidian & BG_PID=$! trap "kill -9 $BG_PID" EXIT ''; }; packages = { # using https://flyx.org/nix-flakes-latex/ as a basic constitution = pkgs.stdenvNoCC.mkDerivation rec { name = "ul_computer-society_constitution"; src = self; buildInputs = [ pkgs.coreutils tex ]; phases = ["unpackPhase" "buildPhase" "installPhase"]; buildPhase = '' export PATH="${pkgs.lib.makeBinPath buildInputs}"; # have to do it 3 times to get teh table of contents working properly pdflatex -file-line-error -interaction=nonstopmode -synctex=1 -output-format=pdf Resources/Documents/Constitution.tex || true pdflatex -file-line-error -interaction=nonstopmode -synctex=1 -output-format=pdf Resources/Documents/Constitution.tex || true pdflatex -file-line-error -interaction=nonstopmode -synctex=1 -output-format=pdf Resources/Documents/Constitution.tex || true ''; installPhase = '' mkdir -p $out cp Constitution.pdf $out/ ''; }; handovers = pkgs.writeShellScriptBin "format_handovers" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_handovers.sh} ''; handovers_html = pkgs.writeShellScriptBin "format_handovers_html" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_handovers.sh} html ''; minutes = pkgs.writeShellScriptBin "format_minutes" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_minutes.sh} ''; minutes_html = pkgs.writeShellScriptBin "format_minutes_html" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_minutes.sh} html ''; budget = pkgs.writeShellScriptBin "format_budget" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_budget.sh} ''; budget_html = pkgs.writeShellScriptBin "format_budget_html" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_budget.sh} html ''; events = pkgs.writeShellScriptBin "format_events" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_events.sh} ''; events_html = pkgs.writeShellScriptBin "format_events_html" '' export PATH=${pkgs.lib.makeBinPath [pkgs.wkhtmltopdf bfom.defaultPackage.x86_64-linux]}:$PATH ${./_scripts/format_events.sh} html ''; }; }); }