diff --git a/flake.lock b/flake.lock index 6c4795e..da68a9e 100644 --- a/flake.lock +++ b/flake.lock @@ -2130,6 +2130,19 @@ "type": "github" } }, + "pico-8": { + "flake": false, + "locked": { + "lastModified": 1779821912, + "narHash": "sha256-3hecWV+H4lieQNOU2+XnClDqAKajbhrU+CWEhfrPX2k=", + "path": "/home/crony/downs/pico-8_0.2.7_amd64.zip", + "type": "path" + }, + "original": { + "path": "/home/crony/downs/pico-8_0.2.7_amd64.zip", + "type": "path" + } + }, "pre-commit": { "inputs": { "flake-compat": "flake-compat_8", @@ -2323,6 +2336,7 @@ "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs_8", "note": "note", + "pico-8": "pico-8", "proton-cachyos": "proton-cachyos", "pyprland": "pyprland", "secrets": "secrets", diff --git a/flake.nix b/flake.nix index d92c571..33889c6 100644 --- a/flake.nix +++ b/flake.nix @@ -167,6 +167,12 @@ url = "github:Daaboulex/cachyos-settings-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + + # Pico 8 zip file + pico-8 = { + url = "path:/home/crony/downs/pico-8_0.2.7_amd64.zip"; + flake = false; + }; }; outputs = { diff --git a/hosts/skadi/home.nix b/hosts/skadi/home.nix index 03c51f9..6ec4a7d 100644 --- a/hosts/skadi/home.nix +++ b/hosts/skadi/home.nix @@ -54,6 +54,7 @@ crony.lnxlink.enable = true; crony.yazi.enable = true; crony.obs-studio.enable = true; + crony.pico8.enable = true; # DO NOT CHANGE ALSO home.stateVersion = "26.05"; # Please read the comment before changing. diff --git a/modules/linux/home-manager/default.nix b/modules/linux/home-manager/default.nix index 86c4293..10569a9 100644 --- a/modules/linux/home-manager/default.nix +++ b/modules/linux/home-manager/default.nix @@ -22,6 +22,7 @@ ./emacs.nix ./zen-browser.nix ./lnxlink.nix + ./pico-8.nix ]; crony.river.enable = lib.mkDefault false; @@ -46,4 +47,5 @@ crony.emacs.enable = lib.mkDefault false; crony.zen-browser.enable = lib.mkDefault false; crony.lnxlink.enable = lib.mkDefault false; + crony.pico8.enable = lib.mkDefault false; } diff --git a/modules/linux/home-manager/pico-8.nix b/modules/linux/home-manager/pico-8.nix new file mode 100644 index 0000000..8b63e30 --- /dev/null +++ b/modules/linux/home-manager/pico-8.nix @@ -0,0 +1,54 @@ +{ + 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]; + }; +}