1
0
Fork 0
mirror of https://git.sr.ht/~goorzhel/turboprop synced 2024-12-14 11:37:37 +00:00

Use nixhelm as input; rework AT and lib interface

In 0fb8e4d I forgot that flake input-following exists. I don't _have_ to
ship nixhelm myself, but I do need to include it so I can stop bundling
data for an oudated AT version.

In fact, I need not bundle _anything_ for the AT library to be useful;
it's better to make the builder's `chart` arg mandatory and let the user
supply their own (usually taken from nixhelm). If they get bored of
supplying the chart to every AT instance they can factor it out,
as I have in my own deployment.

In fact, my deployment relies on the AT library, which I used to provide
as a flake output -- but it didn't make sense to have one version of the
turboprop library available inside service definitions and another
available outside. So I've made the whole library a flake output.
This may bite me in the future.
This commit is contained in:
Antonio Gurgel 2024-02-18 20:30:57 -08:00
parent ac32bb76ca
commit b90ffcace4
7 changed files with 209 additions and 24 deletions

View file

@ -60,7 +60,10 @@ Add Turboprop to your flake's inputs, along with flake-utils and nixhelm:
inputs = { inputs = {
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
nixhelm.url = "github:farcaller/nixhelm"; nixhelm.url = "github:farcaller/nixhelm";
turboprop.url = "sourcehut:~goorzhel/turboprop"; turboprop = {
url = "sourcehut:~goorzhel/turboprop";
inputs.nixhelm.follows = "nixhelm";
};
}; };
<...> <...>
} }
@ -304,6 +307,8 @@ Reference
Main functions Main functions
============== ==============
These functions are only available outside of service modules.
mkDerivation mkDerivation
------------ ------------
@ -342,12 +347,11 @@ Each module must be an attrset with the signature ``{repo, chart, version, chart
mkChartsWithNixhelm mkChartsWithNixhelm
------------------- -------------------
``src -> nixhelm -> attrs`` ``src -> attrs``
Same as ``mkCharts``, but overlays the fetched charts onto the ones `provided by Nixhelm`_. Same as ``mkCharts``, but overlays the fetched charts onto the ones `provided by Nixhelm`_ through the flake input.
- **src** (path): Search root. - **src** (path): Search root.
- **nixhelm** (attrset): The flake itself.
.. _provided by Nixhelm: https://github.com/farcaller/nixhelm/blob/f63710348e393d8640e9e9b896e74bb31a3ee871/flake.nix#L45 .. _provided by Nixhelm: https://github.com/farcaller/nixhelm/blob/f63710348e393d8640e9e9b896e74bb31a3ee871/flake.nix#L45

View file

@ -18,6 +18,41 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"id": "flake-utils",
"type": "indirect"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"haumea": { "haumea": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -39,6 +74,28 @@
"type": "github" "type": "github"
} }
}, },
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"nixhelm",
"poetry2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1698974481,
"narHash": "sha256-yPncV9Ohdz1zPZxYHQf47S8S0VrnhV7nNhCawY46hDA=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "4bb5e752616262457bc7ca5882192a564c0472d2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix-kube-generators": { "nix-kube-generators": {
"locked": { "locked": {
"lastModified": 1708155396, "lastModified": 1708155396,
@ -54,6 +111,44 @@
"type": "github" "type": "github"
} }
}, },
"nix-kube-generators_2": {
"locked": {
"lastModified": 1702548734,
"narHash": "sha256-2pREm/iZ1FyyFuukt/B3nud2NYTUImy5vqc2tESoP9g=",
"owner": "farcaller",
"repo": "nix-kube-generators",
"rev": "fb7a70a8cd76aa76fdf3281123582693aec486a7",
"type": "github"
},
"original": {
"owner": "farcaller",
"repo": "nix-kube-generators",
"type": "github"
}
},
"nixhelm": {
"inputs": {
"flake-utils": "flake-utils_2",
"nix-kube-generators": "nix-kube-generators_2",
"nixpkgs": [
"nixpkgs"
],
"poetry2nix": "poetry2nix"
},
"locked": {
"lastModified": 1708304289,
"narHash": "sha256-NSM4+RFRDhe+EZtdP8eEpBmaZtXaIDorcqdqYDur3MA=",
"owner": "farcaller",
"repo": "nixhelm",
"rev": "5b0db2c7db259e0b4d3abb281e7c51111e2921bc",
"type": "github"
},
"original": {
"owner": "farcaller",
"repo": "nixhelm",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1701669346, "lastModified": 1701669346,
@ -69,11 +164,37 @@
"type": "github" "type": "github"
} }
}, },
"poetry2nix": {
"inputs": {
"flake-utils": "flake-utils_3",
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"nixhelm",
"nixpkgs"
],
"systems": "systems_4",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1702365004,
"narHash": "sha256-IRFvmyP1uk1hchRVxaXTqu6YoZCvMM/NVtUf2hD2Tag=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "c12ac880114d52a3cad5fa02b00f2e2090e89982",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"haumea": "haumea", "haumea": "haumea",
"nix-kube-generators": "nix-kube-generators", "nix-kube-generators": "nix-kube-generators",
"nixhelm": "nixhelm",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
}, },
@ -91,6 +212,72 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"id": "systems",
"type": "indirect"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixhelm",
"poetry2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1699786194,
"narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -9,6 +9,10 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-kube-generators.url = "github:farcaller/nix-kube-generators"; nix-kube-generators.url = "github:farcaller/nix-kube-generators";
nixhelm = {
url = "github:farcaller/nixhelm";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = inputs @ { outputs = inputs @ {
@ -17,6 +21,7 @@
haumea, haumea,
nix-kube-generators, nix-kube-generators,
nixpkgs, nixpkgs,
nixhelm,
}: }:
{ {
templates.default = { templates.default = {
@ -27,6 +32,7 @@
// flake-utils.lib.eachDefaultSystem (system: let // flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {inherit system;}; pkgs = import nixpkgs {inherit system;};
kubelib = nix-kube-generators.lib {inherit pkgs;}; kubelib = nix-kube-generators.lib {inherit pkgs;};
nixhelmCharts = nixhelm.chartsDerivations.${system};
lib = import ./lib {inherit kubelib pkgs;}; lib = import ./lib {inherit kubelib pkgs;};
mkCharts = src: mkCharts = src:
@ -36,7 +42,7 @@
transformer = haumea.lib.transformers.liftDefault; transformer = haumea.lib.transformers.liftDefault;
}; };
in { in {
lib = { lib = lib // {
mkDerivation = { mkDerivation = {
charts, charts,
user ? {}, user ? {},
@ -46,12 +52,10 @@
}) })
.mkDerivation; .mkDerivation;
app-template = lib.app-template;
inherit mkCharts; inherit mkCharts;
mkChartsWithNixhelm = src: nh: mkChartsWithNixhelm = src:
pkgs.lib.attrsets.recursiveUpdate pkgs.lib.attrsets.recursiveUpdate
nh.chartsDerivations.${system} nixhelmCharts
(mkCharts src); (mkCharts src);
}; };

View file

@ -1,11 +1,7 @@
{ {
builders, builders,
fetchers,
pkgs, pkgs,
}: let }: rec {
bundledATChart = fetchers.helmChart (import ./chart.nix);
in
rec {
mkImageAttrs = image: mkImageAttrs = image:
with builtins; let with builtins; let
vals = pkgs.lib.strings.splitString ":" image; vals = pkgs.lib.strings.splitString ":" image;
@ -41,14 +37,13 @@ in
namespace, namespace,
name, name,
mainImage, mainImage,
appTemplateChart ? bundledATChart, chart,
values ? {}, values ? {},
kubeVersion ? pkgs.kubernetes.version, kubeVersion ? pkgs.kubernetes.version,
apiVersions ? [], apiVersions ? [],
}: }:
builders.helmChart { builders.helmChart {
inherit name namespace kubeVersion apiVersions; inherit name namespace chart kubeVersion apiVersions;
chart = appTemplateChart;
values = values =
pkgs.lib.attrsets.recursiveUpdate pkgs.lib.attrsets.recursiveUpdate
{ {

View file

@ -1,6 +0,0 @@
{
repo = "https://bjw-s.github.io/helm-charts/";
chart = "app-template";
version = "2.3.0";
chartHash = "sha256-J0hWCLYyeVIiIJcFOCt5Oq0IubzFw3Bs61TWWuVOvYU=";
}

View file

@ -4,7 +4,7 @@
}: rec { }: rec {
builders = import ./builders.nix {inherit kubelib pkgs;}; builders = import ./builders.nix {inherit kubelib pkgs;};
fetchers = import ./fetchers.nix {inherit kubelib pkgs;}; fetchers = import ./fetchers.nix {inherit kubelib pkgs;};
app-template = import ./app-template {inherit builders fetchers pkgs;}; app-template = import ./app-template.nix {inherit builders pkgs;};
parseYAMLsFile = p: kubelib.fromYAML (builtins.readFile p); parseYAMLsFile = p: kubelib.fromYAML (builtins.readFile p);
parseYAMLFile = p: builtins.head (parseYAMLsFile p); parseYAMLFile = p: builtins.head (parseYAMLsFile p);

View file

@ -9,6 +9,7 @@
turboprop = { turboprop = {
url = "sourcehut:~goorzhel/turboprop"; url = "sourcehut:~goorzhel/turboprop";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.nixhelm.follows = "nixhelm";
}; };
}; };