forked from zombodb/zombodb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
102 lines (94 loc) · 4.09 KB
/
flake.nix
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
{
description = "A PostgreSQL extension built by pgx.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
naersk.url = "github:nmattia/naersk";
naersk.inputs.nixpkgs.follows = "nixpkgs";
pgx.url = "github:zombodb/pgx/oh-no-type-resolution";
pgx.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, pgx, naersk }:
let
cargoToml = (builtins.fromTOML (builtins.readFile ./Cargo.toml));
supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system);
in
{
inherit (pgx) devShell;
defaultPackage = forAllSystems (system: (import nixpkgs {
inherit system;
overlays = [ pgx.overlay self.overlay ];
})."${cargoToml.package.name}");
packages = forAllSystems (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ pgx.overlay self.overlay ];
};
in
{
"${cargoToml.package.name}" = pkgs."${cargoToml.package.name}";
"${cargoToml.package.name}_10" = pkgs."${cargoToml.package.name}";
"${cargoToml.package.name}_11" = pkgs."${cargoToml.package.name}";
"${cargoToml.package.name}_12" = pkgs."${cargoToml.package.name}";
"${cargoToml.package.name}_13" = pkgs."${cargoToml.package.name}";
"${cargoToml.package.name}_all" = pkgs.runCommandNoCC "allVersions" { } ''
mkdir -p $out
cp -r ${pkgs."${cargoToml.package.name}_10"} $out/${cargoToml.package.name}_10
cp -r ${pkgs."${cargoToml.package.name}_11"} $out/${cargoToml.package.name}_11
cp -r ${pkgs."${cargoToml.package.name}_12"} $out/${cargoToml.package.name}_12
cp -r ${pkgs."${cargoToml.package.name}_13"} $out/${cargoToml.package.name}_13
'';
});
overlay = final: prev: {
"${cargoToml.package.name}" = final.callPackage ./. { inherit naersk; };
"${cargoToml.package.name}_10" = final.callPackage ./. { pgxPostgresVersion = 10; inherit naersk; };
"${cargoToml.package.name}_11" = final.callPackage ./. { pgxPostgresVersion = 11; inherit naersk; };
"${cargoToml.package.name}_12" = final.callPackage ./. { pgxPostgresVersion = 12; inherit naersk; };
"${cargoToml.package.name}_13" = final.callPackage ./. { pgxPostgresVersion = 13; inherit naersk; };
};
nixosModule = { config, pkgs, lib, ... }:
let
cfg = config.services.postgresql."${cargoToml.package.name}";
in
with lib;
{
options = {
services.postgresql."${cargoToml.package.name}".enable = mkEnableOption "Enable ${cargoToml.package.name}.";
};
config = mkIf cfg.enable {
nixpkgs.overlays = [ self.overlay pgx.overlay ];
services.postgresql.extraPlugins = with pkgs; [
"${cargoToml.package.name}"
];
};
};
checks = forAllSystems (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ pgx.overlay self.overlay ];
};
in
{
format = pkgs.runCommand "check-format"
{
buildInputs = with pkgs; [ rustfmt cargo ];
} ''
${pkgs.rustfmt}/bin/cargo-fmt fmt --manifest-path ${./.}/Cargo.toml -- --check
${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt --check ${./.}
touch $out # it worked!
'';
# audit = pkgs.runCommand "audit" { } ''
# HOME=$out
# ${pkgs.cargo-audit}/bin/cargo-audit audit --no-fetch
# # it worked!
# '';
"${cargoToml.package.name}" = pkgs."${cargoToml.package.name}";
"${cargoToml.package.name}_10" = pkgs."${cargoToml.package.name}_10";
"${cargoToml.package.name}_11" = pkgs."${cargoToml.package.name}_11";
"${cargoToml.package.name}_12" = pkgs."${cargoToml.package.name}_12";
"${cargoToml.package.name}_13" = pkgs."${cargoToml.package.name}_13";
});
};
}