nix-conf/modules/linux/home-manager/pico-8.nix

54 lines
1.3 KiB
Nix

{
inputs,
pkgs,
lib,
config,
...
}: {
options.crony.pico8 = with lib; {
enable = mkEnableOption "Enable pico-8 and install from inputs.pico-8-src";
};
config = lib.mkIf config.crony.pico8.enable {
home.packages = let
pico-8-files = pkgs.stdenv.mkDerivation {
name = "pico-8-files";
src = inputs.pico-8;
nativeBuildInputs = with pkgs; [unzip];
unpackCmd = "unzip $curSrc";
installPhase = ''
mkdir -p $out
cp ./pico8 ./pico8.dat ./lexaloffle-pico8.png $out
'';
};
pico-8-bin-wrapped = pkgs.buildFHSEnv {
name = "pico-8";
targetPkgs = pkgs: (with pkgs; [
libX11
libXext
libXcursor
libXinerama
libXi
libXrandr
libXScrnSaver
libXxf86vm
libxcb
libXrender
libXfixes
libXau
libXdmcp
alsa-lib
udev
wget
]);
runScript = ''bash -c "${pico-8-files}/pico8"'';
};
pico8DesktopItem = pkgs.makeDesktopItem {
name = "pico-8";
desktopName = "PICO-8";
exec = "${pico-8-bin-wrapped}/bin/pico-8";
icon = "${pico-8-files}/lexaloffle-pico8.png";
};
in [pico-8-bin-wrapped pico8DesktopItem];
};
}