-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathflake.nix
More file actions
58 lines (52 loc) · 1.61 KB
/
flake.nix
File metadata and controls
58 lines (52 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{
description = "Relational database migrations modeled as a directed acyclic graph";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/release-25.11";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }: let
pkg-name = "dbmigrations";
haskell-overlay = pkgs: hfinal: hprev: let
dontCheck = pkg: pkgs.haskell.lib.dontCheck pkg;
in {
${pkg-name} = dontCheck (hfinal.callCabal2nixWithOptions pkg-name ./. "-f sqlite -f postgresql" {});
};
overlay = final: prev: {
haskellPackages = prev.haskellPackages.extend (haskell-overlay final);
dbm-postgresql = "${final.haskellPackages.dbmigrations}/bin/dbm-postgresql";
dbm-sqlite = "${final.haskellPackages.dbmigrations}/bin/dbm-sqlite";
};
in
{
overlays = {
default = overlay;
};
}
// flake-utils.lib.eachDefaultSystem (
system: let
pkgs = import nixpkgs {
inherit system;
overlays = [overlay];
};
hspkgs = pkgs.haskellPackages;
in {
packages = {
${pkg-name} = hspkgs.${pkg-name};
default = self.packages.${system}.${pkg-name};
};
devShells = {
default = hspkgs.shellFor {
packages = _: [self.packages.${system}.${pkg-name}];
buildInputs = [
pkgs.cabal-install
pkgs.dbm-sqlite
hspkgs.ormolu
];
withHoogle = true;
inputsFrom = builtins.attrValues self.packages.${system};
};
};
formatter = pkgs.alejandra;
}
);
}