hiro-flake-utils/flake.nix

96 lines
2.8 KiB
Nix
Raw Normal View History

2021-12-09 11:01:21 +01:00
{
2021-12-09 11:56:09 +01:00
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
2021-12-09 12:02:57 +01:00
flake-utils.url = "github:numtide/flake-utils";
poetry2nix.url = "github:nix-community/poetry2nix";
2021-12-09 11:56:09 +01:00
};
2021-12-09 12:02:57 +01:00
outputs = { self, nixpkgs, flake-utils, poetry2nix }: {
2021-12-09 11:13:59 +01:00
lib = rec {
2021-12-09 11:01:21 +01:00
currentDefaultPackage = flake: system: flake.defaultPackage.${system};
2021-12-09 11:56:09 +01:00
makeDefaultPackageOverrides =
2021-12-09 12:05:04 +01:00
(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
));
2021-12-09 12:02:57 +01:00
2021-12-09 14:28:45 +01:00
makeAddCythonOverrides =
(flakes:
2021-12-09 14:36:40 +01:00
(builtins.map
(name:
(self: super: {
${name} = super.${name}.overridePythonAttrs (
old: {
buildInputs = (old.buildInputs or [ ]) ++ [
self.cython
];
}
);
})
)
flakes
));
2021-12-09 14:28:45 +01:00
2021-12-09 13:22:20 +01:00
poetry2nixWrapper = nixpkgs: pythonInputs:
{ name
, poetryArgs ? { }
, buildInputs ? _: [ ]
, nixpkgsConfig ? { }
2021-12-09 14:29:07 +01:00
, addCythonTo ? [ ]
2021-12-09 13:22:20 +01:00
}:
2021-12-09 12:02:57 +01:00
(flake-utils.lib.eachDefaultSystem (system:
let
overlay = nixpkgs.lib.composeManyExtensions [
poetry2nix.overlay
(final: prev:
2021-12-09 14:38:21 +01:00
let overrides = (nixpkgs.lib.composeManyExtensions [
2021-12-09 14:36:40 +01:00
(prev.poetry2nix.overrides.withDefaults
(makeDefaultPackageOverrides pythonInputs system))
2021-12-09 14:38:21 +01:00
] ++ (makeAddCythonOverrides addCythonTo));
2021-12-09 12:05:04 +01:00
in
{
2021-12-09 12:10:11 +01:00
${name} = (prev.poetry2nix.mkPoetryApplication ({
2021-12-09 12:05:04 +01:00
preferWheels = true;
overrides = overrides;
2021-12-09 12:10:11 +01:00
} // poetryArgs));
2021-12-09 12:02:57 +01:00
2021-12-09 12:10:11 +01:00
"${name}Shell" = (prev.poetry2nix.mkPoetryEnv ({
2021-12-09 12:05:04 +01:00
overrides = overrides;
preferWheels = true;
2021-12-09 14:36:40 +01:00
editablePackageSources = {
2021-12-09 13:22:20 +01:00
${name} = poetryArgs.projectDir + "/${name}";
};
2021-12-09 12:10:11 +01:00
} // poetryArgs));
2021-12-09 12:05:04 +01:00
})
2021-12-09 12:02:57 +01:00
2021-12-09 12:05:04 +01:00
];
pkgs = import nixpkgs {
inherit system;
overlays = [ overlay ];
2021-12-09 12:12:22 +01:00
config = nixpkgsConfig;
2021-12-09 12:05:04 +01:00
};
in
rec {
packages = {
${name} = pkgs.${name};
};
2021-12-09 12:02:57 +01:00
2021-12-09 12:05:04 +01:00
defaultPackage = packages.${name};
devShell = pkgs."${name}Shell".env.overrideAttrs (oldAttrs: {
2021-12-09 13:22:20 +01:00
buildInputs = (buildInputs pkgs) ++ [ pkgs.poetry ];
2021-12-09 12:05:04 +01:00
});
}));
2021-12-09 11:01:21 +01:00
};
};
}