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-10 10:42:28 +01:00
|
|
|
overrides = (self: super: {
|
2022-11-28 17:34:43 -05:00
|
|
|
beartype = super.beartype.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.setuptools
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-11-24 20:35:50 +01:00
|
|
|
future = super.future.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.setuptools
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-11-24 20:36:45 +01:00
|
|
|
sqlitedict = super.sqlitedict.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.setuptools
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-11-24 20:37:50 +01:00
|
|
|
lmfit = super.lmfit.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.setuptools
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2021-12-09 15:07:21 +01:00
|
|
|
fcspline = super.fcspline.overridePythonAttrs (
|
2022-01-26 16:08:09 +01:00
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.cython
|
2022-01-26 16:32:51 +01:00
|
|
|
self.poetry
|
2022-01-26 16:08:09 +01:00
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-01-26 16:30:13 +01:00
|
|
|
progression = super.progression.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.poetry
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-01-26 16:32:51 +01:00
|
|
|
binfootprint = super.binfootprint.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.poetry
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-02-05 16:06:14 +01:00
|
|
|
qutip = super.qutip.overridePythonAttrs (
|
2021-12-09 15:07:21 +01:00
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.cython
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
2021-12-09 14:44:08 +01:00
|
|
|
|
2021-12-09 15:07:21 +01:00
|
|
|
stocproc = super.stocproc.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
2022-01-26 16:32:51 +01:00
|
|
|
self.poetry
|
2021-12-09 15:07:21 +01:00
|
|
|
self.cython
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
2021-12-09 15:36:46 +01:00
|
|
|
|
2022-03-22 09:52:08 +01:00
|
|
|
two-qubit-model = super.two-qubit-model.overridePythonAttrs (
|
2022-03-22 09:50:55 +01:00
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.poetry
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-03-29 11:41:33 +02:00
|
|
|
hiro-models = super.hiro-models.overridePythonAttrs (
|
|
|
|
old: {
|
|
|
|
buildInputs = (old.buildInputs or [ ]) ++ [
|
|
|
|
self.poetry
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2022-03-21 19:26:43 +01:00
|
|
|
hopsflow = super.hopsflow.overridePythonAttrs (
|
|
|
|
old :{
|
|
|
|
buildInputs = old.buildInputs or [ ] ++ [
|
|
|
|
self.poetry
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
hops = super.hops.overridePythonAttrs (
|
|
|
|
old :{
|
|
|
|
buildInputs = old.buildInputs or [ ] ++ [
|
|
|
|
self.poetry
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2021-12-09 15:40:19 +01:00
|
|
|
jupyter = super.jupyter-core.overridePythonAttrs (
|
2021-12-09 15:36:46 +01:00
|
|
|
old: {
|
2021-12-09 15:37:21 +01:00
|
|
|
postInstall = ''
|
2021-12-09 16:16:55 +01:00
|
|
|
rm $out/lib/python*/site-packages/__pycache__/jupyter.cpython-39.pyc
|
|
|
|
rm $out/lib/python*/site-packages/jupyter.py
|
2021-12-09 15:36:46 +01:00
|
|
|
'';
|
|
|
|
}
|
|
|
|
);
|
2022-01-14 19:27:19 +01:00
|
|
|
|
2022-01-18 13:23:25 +01:00
|
|
|
matplotlib = super.matplotlib.override (
|
|
|
|
{
|
2022-01-18 14:29:49 +01:00
|
|
|
enableGtk3 = true;
|
2022-06-01 15:12:36 +02:00
|
|
|
enableTk = true;
|
2022-02-05 16:06:14 +01:00
|
|
|
# preferWheel = false;
|
2022-01-14 19:27:19 +01:00
|
|
|
}
|
|
|
|
);
|
2022-01-18 13:24:43 +01:00
|
|
|
|
2022-02-05 16:06:14 +01:00
|
|
|
numba = super.numba.override (
|
|
|
|
{
|
|
|
|
preferWheel = false;
|
|
|
|
});
|
|
|
|
|
2022-01-18 13:24:43 +01:00
|
|
|
numpy = super.numpy.override (
|
|
|
|
{
|
|
|
|
blas = super.mkl;
|
|
|
|
}
|
|
|
|
);
|
2021-12-09 15:07:21 +01:00
|
|
|
});
|
2021-12-10 10:42:28 +01:00
|
|
|
|
|
|
|
poetry2nixWrapper = nixpkgs:
|
|
|
|
{ name
|
|
|
|
, poetryArgs ? { }
|
|
|
|
, shellPackages ? (_: [ ])
|
|
|
|
, nixpkgsConfig ? { }
|
|
|
|
, addCythonTo ? [ ]
|
|
|
|
, noPackage ? false
|
2022-06-01 15:15:32 +02:00
|
|
|
, shellOverride ? (_: _: { })
|
2022-01-26 17:38:54 +01:00
|
|
|
, python ? (pkgs: pkgs.python310)
|
2022-01-27 14:26:32 +01:00
|
|
|
, extraOverrides ? (_:_:{})
|
2022-06-01 15:32:06 +02:00
|
|
|
, extraOverlay ? (_:_:{})
|
2021-12-10 10:42:28 +01:00
|
|
|
}:
|
|
|
|
(flake-utils.lib.eachDefaultSystem (system:
|
|
|
|
let
|
2022-01-27 14:26:32 +01:00
|
|
|
finalOverrides = nixpkgs.lib.composeManyExtensions [overrides extraOverrides];
|
2021-12-10 10:42:28 +01:00
|
|
|
overlay = nixpkgs.lib.composeManyExtensions [
|
|
|
|
poetry2nix.overlay
|
2022-06-01 15:32:06 +02:00
|
|
|
extraOverlay
|
2021-12-10 10:42:28 +01:00
|
|
|
(final: prev:
|
2021-12-09 12:05:04 +01:00
|
|
|
{
|
2021-12-09 12:10:11 +01:00
|
|
|
"${name}Shell" = (prev.poetry2nix.mkPoetryEnv ({
|
2022-01-27 14:26:32 +01:00
|
|
|
overrides = finalOverrides;
|
2022-07-20 12:48:46 +02:00
|
|
|
preferWheels = true;
|
2022-01-26 15:59:23 +01:00
|
|
|
python = (python prev.pkgs);
|
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 15:07:21 +01:00
|
|
|
} // (if noPackage then { } else {
|
|
|
|
${name} = (prev.poetry2nix.mkPoetryApplication ({
|
2022-01-26 16:26:40 +01:00
|
|
|
python = (python prev.pkgs);
|
2022-07-20 12:48:46 +02:00
|
|
|
preferWheels = true;
|
2022-01-27 14:26:32 +01:00
|
|
|
overrides = finalOverrides;
|
2021-12-09 15:07:21 +01:00
|
|
|
} // poetryArgs));
|
|
|
|
}))
|
2021-12-09 12:05:04 +01:00
|
|
|
];
|
|
|
|
pkgs = import nixpkgs {
|
|
|
|
inherit system;
|
2021-12-09 16:16:55 +01:00
|
|
|
overlays = [
|
|
|
|
overlay
|
|
|
|
];
|
2021-12-09 12:12:22 +01:00
|
|
|
config = nixpkgsConfig;
|
2021-12-09 12:05:04 +01:00
|
|
|
};
|
|
|
|
in
|
|
|
|
rec {
|
2021-12-09 15:08:51 +01:00
|
|
|
devShell = (pkgs."${name}Shell".env.overrideAttrs (oldAttrs: {
|
2021-12-09 15:07:21 +01:00
|
|
|
buildInputs = (shellPackages pkgs) ++ [ pkgs.poetry ];
|
2022-06-01 15:12:36 +02:00
|
|
|
})).overrideAttrs (shellOverride pkgs);
|
2021-12-09 15:07:21 +01:00
|
|
|
} // (if noPackage then { } else rec {
|
2021-12-09 12:05:04 +01:00
|
|
|
packages = {
|
|
|
|
${name} = pkgs.${name};
|
|
|
|
};
|
2021-12-09 12:02:57 +01:00
|
|
|
|
2021-12-09 12:05:04 +01:00
|
|
|
defaultPackage = packages.${name};
|
2021-12-09 15:07:21 +01:00
|
|
|
})
|
|
|
|
));
|
2021-12-09 11:01:21 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|