wip: getting there, slowly
This commit is contained in:
+8
-20
@@ -1,21 +1,14 @@
|
||||
{ lib, applib, config, ... }:
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.apps.openfga;
|
||||
|
||||
env = config.apps.env;
|
||||
namespace = "${env}-openfga";
|
||||
project = "aux";
|
||||
cluster = "https://kubernetes.default.svc";
|
||||
vs = ../values/openfga;
|
||||
|
||||
# values = applib.appValues ../values/openfga {};
|
||||
values = lib.apps.appValues {
|
||||
inherit env;
|
||||
base = ../values/openfga;
|
||||
extraValues = {};
|
||||
};
|
||||
|
||||
values = with lib;
|
||||
attrsets.mergeAttrsList (lists.flatten [
|
||||
(kube.fromYAML (builtins.readFile "${vs}/values.yaml"))
|
||||
(kube.fromYAML (builtins.readFile "${vs}/values-${env}.yaml"))
|
||||
[ cfg.values ]
|
||||
]);
|
||||
kustomize = r:
|
||||
if r.kind == "Job" then
|
||||
lib.attrsets.recursiveUpdate r { spec.backoffLimit = 2; }
|
||||
@@ -23,14 +16,9 @@ let
|
||||
|
||||
in
|
||||
{
|
||||
options.apps.openfga = applib.appOptions {};
|
||||
|
||||
config = applib.appConfig cfg "${env}-openfga" {
|
||||
inherit namespace;
|
||||
inherit project;
|
||||
|
||||
destination.server = cluster;
|
||||
options.apps.openfga = lib.apps.appOptions {};
|
||||
|
||||
config = lib.apps.appConfig cfg "openfga" {
|
||||
helm.releases."${env}-openfga" = {
|
||||
inherit values;
|
||||
chart = lib.helm.downloadHelmChart {
|
||||
|
||||
Generated
+32
-17
@@ -278,22 +278,37 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-kube-generators_3": {
|
||||
"locked": {
|
||||
"lastModified": 1708155396,
|
||||
"narHash": "sha256-A/BIeJjiRS7sBYP6tFJa/WHDPHe7DGTCkSEKXttYeAQ=",
|
||||
"owner": "farcaller",
|
||||
"repo": "nix-kube-generators",
|
||||
"rev": "14dbd5e5b40615937900f71d9a9851b59b4d9a88",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "farcaller",
|
||||
"repo": "nix-kube-generators",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixhelm": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"haumea": "haumea",
|
||||
"nix-kube-generators": "nix-kube-generators",
|
||||
"nix-kube-generators": "nix-kube-generators_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"poetry2nix": "poetry2nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1728522957,
|
||||
"narHash": "sha256-5/2Q/aVVCgd/pL94KFnnH5h36se3UqT+oxXPTYnVjtY=",
|
||||
"lastModified": 1728868745,
|
||||
"narHash": "sha256-ZuaxkAtUL1visOmVMxgHk3j+H8/bMmm82tJfE1s35VY=",
|
||||
"owner": "farcaller",
|
||||
"repo": "nixhelm",
|
||||
"rev": "6fc421b792250c65aa39d121f3c67a26cc7dd2ea",
|
||||
"rev": "f901d2ba3ce1bd0086d50efdcce3cc76bce04d80",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -306,23 +321,22 @@
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
"kubenix": "kubenix",
|
||||
"nix-kube-generators": "nix-kube-generators_2",
|
||||
"nix-kube-generators": "nix-kube-generators_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726669031,
|
||||
"narHash": "sha256-iNh3jgB/vrltSUquE9Q3lbGIRqiyayglnSHtB5KbW+M=",
|
||||
"owner": "arnarg",
|
||||
"repo": "nixidy",
|
||||
"rev": "b8abf95f1d4b1a7f5e70ffba926be571a778c540",
|
||||
"type": "github"
|
||||
"dirtyRev": "6e20193c95a0aaca444289d7c69f4eb329d25234-dirty",
|
||||
"dirtyShortRev": "6e20193-dirty",
|
||||
"lastModified": 1728815994,
|
||||
"narHash": "sha256-0fNVuZdg7vNn47NBcStHzVzWfpSM2cdh7k2kiTcUal8=",
|
||||
"type": "git",
|
||||
"url": "file:///home/jonas/src/OceanBox/nixidy"
|
||||
},
|
||||
"original": {
|
||||
"owner": "arnarg",
|
||||
"repo": "nixidy",
|
||||
"type": "github"
|
||||
"type": "git",
|
||||
"url": "file:///home/jonas/src/OceanBox/nixidy"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
@@ -408,11 +422,11 @@
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1728092656,
|
||||
"narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=",
|
||||
"lastModified": 1728778939,
|
||||
"narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "1211305a5b237771e13fcca0c51e60ad47326a9a",
|
||||
"rev": "ff68f91754be6f3427e4986d7949e6273659be1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -424,6 +438,7 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nix-kube-generators": "nix-kube-generators",
|
||||
"nixhelm": "nixhelm",
|
||||
"nixidy": "nixidy",
|
||||
"nixpkgs": "nixpkgs",
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
nixidy = {
|
||||
url = "github:arnarg/nixidy";
|
||||
# url = "github:juselius/nixidy";
|
||||
url = "/home/jonas/src/OceanBox/nixidy";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
@@ -20,6 +21,8 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nix-kube-generators.url = "github:farcaller/nix-kube-generators";
|
||||
|
||||
yaml2nix = {
|
||||
url = "github:euank/yaml2nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -36,17 +39,21 @@
|
||||
nixhelm,
|
||||
yaml2nix,
|
||||
pre-commit-hooks,
|
||||
nix-kube-generators,
|
||||
}:
|
||||
(flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
applib = import ./modules/lib.nix { inherit pkgs; };
|
||||
kube = nix-kube-generators.lib { inherit pkgs; };
|
||||
lib = {
|
||||
apps = import ./modules/lib.nix { inherit pkgs kube;};
|
||||
};
|
||||
in
|
||||
{
|
||||
nixidyEnvs = nixidy.lib.mkEnvs {
|
||||
inherit pkgs;
|
||||
extraSpecialArgs = { inherit applib; };
|
||||
extraSpecialArgs = { inherit lib; };
|
||||
charts = nixhelm.chartsDerivations.${system};
|
||||
modules = [
|
||||
./modules
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ in
|
||||
|
||||
options.apps = with lib; {
|
||||
env = mkOption {
|
||||
type = types.string;
|
||||
type = types.str;
|
||||
default = "prod";
|
||||
description = "Enable";
|
||||
};
|
||||
@@ -42,7 +42,7 @@ in
|
||||
target = {
|
||||
repository = "https://gitlab.com/oveanbox/manifests.git";
|
||||
branch = "main";
|
||||
rootPath = "_manifests";
|
||||
rootPath = "_manifests/${config.apps.env}";
|
||||
};
|
||||
|
||||
resourceImports = [
|
||||
|
||||
+20
-10
@@ -1,4 +1,4 @@
|
||||
{ pkgs }:
|
||||
{ pkgs, kube }:
|
||||
{
|
||||
appOptions = opts: with pkgs.lib; {
|
||||
enable = mkOption {
|
||||
@@ -25,20 +25,26 @@
|
||||
description = "Enable server-side diffing";
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Application name";
|
||||
};
|
||||
|
||||
namespace = mkOption {
|
||||
type = types.string;
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Namespace";
|
||||
};
|
||||
|
||||
project = mkOption {
|
||||
type = types.string;
|
||||
type = types.str;
|
||||
default = "default";
|
||||
description = "Project";
|
||||
};
|
||||
|
||||
cluster = mkOption {
|
||||
type = types.string;
|
||||
type = types.str;
|
||||
default = "https://kubernetes.default.svc";
|
||||
description = "Cluster";
|
||||
};
|
||||
@@ -54,6 +60,11 @@
|
||||
with pkgs.lib;
|
||||
let
|
||||
app = conf // {
|
||||
name = if builtins.isNull cfg.name then "${cfg.env}-${name}" else cfg.name;
|
||||
project = cfg.project;
|
||||
|
||||
destination.server = cfg.cluster;
|
||||
|
||||
createNamespace = true;
|
||||
|
||||
compareOptions = {
|
||||
@@ -70,14 +81,13 @@
|
||||
selfHeal = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
} // (if builtins.isNull cfg.namespace then {} else { namespace = cfg.namespace; });
|
||||
in mkIf cfg.enable { applications.${name} = app; };
|
||||
|
||||
appValues = with pkgs.lib; vs: values:
|
||||
appValues = with pkgs.lib; { env, base, extraValues}:
|
||||
attrsets.mergeAttrsList (lists.flatten [
|
||||
(lib.kube.fromYAML (builtins.readFile "${vs}/values.yaml"))
|
||||
(lib.kube.fromYAML (builtins.readFile "${vs}/values-${env}.yaml"))
|
||||
[ values ]
|
||||
(kube.fromYAML (builtins.readFile "${base}/values.yaml"))
|
||||
(kube.fromYAML (builtins.readFile "${base}/values-${env}.yaml"))
|
||||
[ extraValues ]
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user