diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..22267f0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,36 @@ +{ + description = "Shibumi Mothership"; + + inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.11"; + inputs.flake-parts.url = "github:hercules-ci/flake-parts"; + + outputs = inputs@{flake-parts, ...}: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + + perSystem = {pkgs, ...}: + let kube = pkgs.callPackage ./kube.nix {}; + in { + packages.default = kube; + packages.kube = kube; + + devShells.default = pkgs.mkShell { + name = "kube"; + inputsFrom = [kube]; + nativeBuildInputs = with pkgs; [ + rust-analyzer + clippy + rustfmt + ]; + shellHook = '' + export RUST_BACKTRACE=1 + ''; + }; + }; + }; +} + diff --git a/kube.nix b/kube.nix new file mode 100644 index 0000000..036b7dc --- /dev/null +++ b/kube.nix @@ -0,0 +1,19 @@ +{ + rustPlatform, + lib +}: + rustPlatform.buildRustPackage { + name = "kube"; + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./src + ./Cargo.toml + ./Cargo.lock + ]; + }; + + cargoLock.lockFile = ./Cargo.lock; + auditable = false; + meta.mainProgram = "kube"; + }