forked from codedownio/kubernetes-client-haskell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
72 lines (59 loc) · 2.59 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
{
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.gen = {
url = "github:kubernetes-client/gen";
flake = false;
};
inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=release-24.05";
outputs = { self, flake-utils, gen, nixpkgs }:
flake-utils.lib.eachSystem ["x86_64-linux"] (system:
let
pkgs = import nixpkgs { inherit system; };
# Patch gen to update the cabal file name
patched-gen = pkgs.applyPatches {
name = "kubernetes-gen";
src = gen;
patches = [
./patches/gen-change-cabal-name.patch
./patches/gen-cabal-metadata.patch
];
};
in {
packages = {
generate = pkgs.writeShellScriptBin "generate-kubernetes-api.sh" ''
export KUBERNETES_VERSION="$1"
PACKAGE_VERSION="$2"
out="kubernetes-api-$KUBERNETES_VERSION"
# Generate
${pkgs.bash}/bin/bash "${patched-gen}/openapi/haskell.sh" "$out" settings
# Copy handwritten files
cp ${./handwritten/CustomTypes.hs} "$out/lib/Kubernetes/OpenAPI/CustomTypes.hs"
cp ${./handwritten/CustomInstances.hs} "$out/tests/CustomInstances.hs"
# Fill in the package version
${pkgs.gnused}/bin/sed -i "s/^version:\s*\(.*\)/version: $PACKAGE_VERSION/" "$out/kubernetes-api.cabal"
# Fix a bound
${pkgs.gnused}/bin/sed -i 's/\(http-api-data >= 0.3.4 &&\) <0.6/\1 <0.7/' "$out/kubernetes-api.cabal"
# Delete openapi.yaml from the extra-source-files
${pkgs.gnused}/bin/sed -i '/^\s*openapi\.yaml$/d' "$out/kubernetes-api.cabal"
# Update the resolver in stack.yaml and add a Nix stanza
${pkgs.gnused}/bin/sed -i 's/^resolver:\s*.*$/resolver: lts-23.7/' "$out/stack.yaml"
cat << EOM >> $out/stack.yaml
nix:
pure: false
packages:
- zlib
EOM
'';
set-stack-version = pkgs.writeShellScriptBin "build-kubernetes-api-client.sh" ''
export KUBERNETES_VERSION="$1"
STACK_YAML="$2"
${pkgs.gnused}/bin/sed -i "s/^- kubernetes-api-\(1\.\)[0-9]\+/- kubernetes-api-$KUBERNETES_VERSION/" "$STACK_YAML"
'';
set-cabal-version = pkgs.writeShellScriptBin "build-kubernetes-client.sh" ''
export KUBERNETES_VERSION="$1"
CABAL_PROJECT="$2"
${pkgs.gnused}/bin/sed -i "s/^ kubernetes-api-\(1\.\)[0-9]\+/ kubernetes-api-$KUBERNETES_VERSION/" "$CABAL_PROJECT"
'';
};
});
}