mirror of
https://github.com/vale981/hiro-flake-utils
synced 2025-03-05 09:21:39 -05:00
70 lines
2.1 KiB
Nix
70 lines
2.1 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
poetry2nix.url = "github:nix-community/poetry2nix";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, poetry2nix }: {
|
|
lib = rec {
|
|
currentDefaultPackage = flake: system: flake.defaultPackage.${system};
|
|
makeDefaultPackageOverrides =
|
|
(flakes: system:
|
|
let
|
|
body = (nixpkgs.lib.attrsets.mapAttrs'
|
|
(name: flake:
|
|
{
|
|
name = nixpkgs.lib.strings.toLower name;
|
|
value = (currentDefaultPackage flake system);
|
|
})
|
|
flakes);
|
|
in
|
|
(self: super:
|
|
body
|
|
));
|
|
|
|
poetry2nixWrapper = pythonInputs: { name, poetryArgs ? {}, buildInputs ? _: [] }:
|
|
(flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
overlay = nixpkgs.lib.composeManyExtensions [
|
|
poetry2nix.overlay
|
|
|
|
(final: prev:
|
|
let overrides = prev.poetry2nix.overrides.withDefaults
|
|
(makeDefaultPackageOverrides pythonInputs system);
|
|
in
|
|
{
|
|
${name} = (prev.poetry2nix.mkPoetryApplication {
|
|
preferWheels = true;
|
|
overrides = overrides;
|
|
} // poetryArgs);
|
|
|
|
"${name}Shell" = (prev.poetry2nix.mkPoetryEnv {
|
|
overrides = overrides;
|
|
preferWheels = true;
|
|
editablePackageSources = {
|
|
${name} = ./${name};
|
|
};
|
|
} // poetryArgs);
|
|
})
|
|
|
|
];
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [ overlay ];
|
|
config.allowUnfree = true;
|
|
};
|
|
in
|
|
rec {
|
|
packages = {
|
|
${name} = pkgs.${name};
|
|
};
|
|
|
|
defaultPackage = packages.${name};
|
|
devShell = pkgs."${name}Shell".env.overrideAttrs (oldAttrs: {
|
|
buildInputs = (buildInputs.pkgs);
|
|
});
|
|
}));
|
|
};
|
|
};
|
|
}
|