dev: direnv + flake for nix-shell

Change-Id: Ic74d9f5e0529d550581d8ff96bdace74cb39b76f
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..dcd2fbf
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,42 @@
+{
+  description = "dodo dev shell";
+  inputs = {
+    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+    systems.url = "github:nix-systems/default";
+    flake-utils = {
+      url = "github:numtide/flake-utils";
+      inputs.systems.follows = "systems";
+    };
+    # v1.33.1
+    nixpkgs-kubectl.url = "github:NixOS/nixpkgs/076e8c6678d8c54204abcb4b1b14c366835a58bb";
+    # v2.8.8
+    nixpkgs-fluxcd.url = "github:NixOS/nixpkgs/e1ea2e5ee3decc21eaf91862bd3de37701e57595";
+  };
+
+  outputs =
+    { nixpkgs, flake-utils, nixpkgs-kubectl, nixpkgs-fluxcd, ... }:
+    flake-utils.lib.eachDefaultSystem (
+      system:
+      let
+        pkgs = nixpkgs.legacyPackages.${system};
+        pkgs-kubectl = import nixpkgs-kubectl { inherit system; };
+        pkgs-fluxcd = import nixpkgs-fluxcd { inherit system; };
+        kubectl = pkgs-kubectl.kubectl;
+        fluxcd = pkgs-fluxcd.fluxcd;
+        alias-kubectl = pkgs.writeShellScriptBin "k" ''
+          exec ${kubectl}/bin/kubectl "$@"
+        '';
+      in
+      {
+        devShells.default = pkgs.mkShell {
+          packages = [
+            pkgs.bashInteractive
+            kubectl
+            fluxcd
+            pkgs.k9s
+            alias-kubectl
+          ];
+        };
+      }
+    );
+}