47 lines
1.5 KiB
Nix
47 lines
1.5 KiB
Nix
{ inputs, self, lib, ... }:
|
|
{
|
|
perSystem = { self', pkgs, ... }:
|
|
let
|
|
flakeLock = lib.importJSON (self + /flake.lock);
|
|
flakeInputs = (builtins.removeAttrs inputs [ "self" ]);
|
|
flakeLockVendoredDeps = flakeLock // {
|
|
nodes = flakeLock.nodes // (
|
|
lib.flip lib.mapAttrs flakeInputs (name: _: flakeLock.nodes.${name} // {
|
|
locked = {
|
|
inherit (flakeLock.nodes.${name}.locked) narHash;
|
|
lastModified =
|
|
# lol, nixpkgs has a different timestamp on the fs???
|
|
if name == "nixpkgs"
|
|
then 0
|
|
else 1;
|
|
path = "${inputs.${name}}";
|
|
type = "path";
|
|
};
|
|
})
|
|
);
|
|
};
|
|
flakeLockFile = builtins.toFile "clan-core-flake.lock"
|
|
(builtins.toJSON flakeLockVendoredDeps);
|
|
clanCoreWithVendoredDeps = lib.trace flakeLockFile pkgs.runCommand "clan-core-with-vendored-deps" { } ''
|
|
cp -r ${self} $out
|
|
chmod +w -R $out
|
|
cp ${flakeLockFile} $out/flake.lock
|
|
'';
|
|
in
|
|
{
|
|
devShells.clan-cli = pkgs.callPackage ./shell.nix {
|
|
inherit (self'.packages) clan-cli;
|
|
};
|
|
packages = {
|
|
clan-cli = pkgs.python3.pkgs.callPackage ./default.nix {
|
|
inherit (inputs) nixpkgs;
|
|
clan-core-path = clanCoreWithVendoredDeps;
|
|
};
|
|
default = self'.packages.clan-cli;
|
|
};
|
|
|
|
checks = self'.packages.clan-cli.tests;
|
|
};
|
|
|
|
}
|