{ description = "Simple bot for matrix birthday reminders"; inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; devshell.url = "github:numtide/devshell"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.devshell.flakeModule # To import a flake module # 1. Add foo to inputs # 2. Add foo as a parameter to the outputs function # 3. Add here: foo.flakeModule ]; systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; perSystem = { config, self', inputs', pkgs, system, ... }: let sbcl' = pkgs.sbcl.withPackages (ps: with ps; [ dexador cl-dotenv jonathan local-time deploy cl-yaml alexandria ]); in { packages.birthday-boy = pkgs.stdenv.mkDerivation { name = "birthday-boy"; src = ./.; nativeBuildInputs = with pkgs; [ openssl sbcl' ]; dontStrip = true; buildPhase = '' ${sbcl'}/bin/sbcl --load ./bot.lisp \ --eval '(sb-ext:save-lisp-and-die #P"birthday-boy" :toplevel #'"'"'birthday-boy:main* :executable t)' ''; installPhase = '' mkdir -p $out/bin cp birthday-boy $out/bin/_birthday-boy chmod +x $out/bin/_birthday-boy touch $out/bin/birthday-boy echo "#!/usr/bin/env sh" >> $out/bin/birthday-boy echo "LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${ pkgs.lib.makeLibraryPath [ pkgs.openssl pkgs.libyaml ] } $out/bin/_birthday-boy \$1" >> $out/bin/birthday-boy chmod +x $out/bin/birthday-boy ''; }; apps.birthday-boy = { type = "app"; program = "${self'.packages.birthday-boy}/bin/birthday-boy"; }; devshells.default = { env = [ ]; commands = [ ]; packages = with pkgs; [ openssl sbcl' ]; }; }; flake = { # The usual flake attributes can be defined here, including system- # agnostic ones like nixosModule and system-enumerating ones, although # those are more easily expressed in perSystem. }; }; }