diff --git a/flake.nix b/flake.nix index edb0fa5..59261f5 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,14 @@ overlays = [ overlay ]; }; - overlayPkgs = system: overlay (pkgsFinal system) (pkgsPrev system); + flakePackages = + system: + import ./pkgs { + pkgs = pkgsFinal system; + prev = pkgsPrev system; + lib = (pkgsPrev system).lib; + forFlakeOutputs = true; + }; mkDefault = p: if p ? raganything then p.raganything else p.${builtins.head (lib.attrNames p)}; in @@ -31,7 +38,7 @@ packages = forAllSystems ( system: let - p = overlayPkgs system; + p = flakePackages system; in p // { default = mkDefault p; } ); diff --git a/pkgs/by-name/lm/lmstudio/default.nix b/pkgs/by-name/lm/lmstudio/default.nix index a488785..46d5ea3 100644 --- a/pkgs/by-name/lm/lmstudio/default.nix +++ b/pkgs/by-name/lm/lmstudio/default.nix @@ -7,13 +7,13 @@ let pname = "lmstudio"; - version = "0.4.6-1"; + version = "0.4.2-2"; url = "https://installers.lmstudio.ai/linux/x64/${version}/LM-Studio-${version}-x64.AppImage"; src = fetchurl { inherit url; - hash = "sha256-FHZ64zmnqHrQyX4ift/lVUzW+HiCVkXpWVa4hkssX/k="; + hash = "sha256-JxGlqgsuLcW81mOIcntVFSHv19zSFouIChgz/egc+J0="; }; contents = appimageTools.extractType2 { inherit pname version src; }; diff --git a/pkgs/default.nix b/pkgs/default.nix index bce8587..f874bea 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,6 +2,7 @@ pkgs, prev, lib, + forFlakeOutputs ? false, ... }: let @@ -19,9 +20,15 @@ let name: let pkgDir = shorthandDir + "/${name}"; + defaultFile = pkgDir + "/default.nix"; + imported = builtins.tryEval (import defaultFile); in - if builtins.pathExists (pkgDir + "/default.nix") then - { ${name} = callPackage pkgDir { }; } + if !builtins.pathExists defaultFile || !imported.success then + { } + else if builtins.isFunction imported.value then + { ${name} = callPackage defaultFile { }; } + else if lib.isDerivation imported.value then + { ${name} = imported.value; } else { }; in @@ -39,5 +46,7 @@ let packagesFromTree ; }; + + overlayAttrs = byNamePkgs // byCategoryPkgs; in -byNamePkgs // byCategoryPkgs +if forFlakeOutputs then lib.filterAttrs (_: lib.isDerivation) overlayAttrs else overlayAttrs