From a10abb2bb19c10529bb626e592b75b569461f99a Mon Sep 17 00:00:00 2001 From: Yuto Nishida Date: Sun, 17 Aug 2025 17:31:29 -0700 Subject: [PATCH] Init mv-nix --- experimental/mv-nix/flake.nix | 87 +++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 experimental/mv-nix/flake.nix diff --git a/experimental/mv-nix/flake.nix b/experimental/mv-nix/flake.nix new file mode 100644 index 0000000..d56adac --- /dev/null +++ b/experimental/mv-nix/flake.nix @@ -0,0 +1,87 @@ +{ + inputs = { + nixpkgs.url = "github:cachix/devenv-nixpkgs/rolling"; + systems.url = "github:nix-systems/default"; + devenv.url = "github:cachix/devenv"; + devenv.inputs.nixpkgs.follows = "nixpkgs"; + flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"; + cardboard.url = "github:starptr/cardboard"; + }; + + nixConfig = { + extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="; + extra-substituters = "https://devenv.cachix.org"; + }; + + outputs = + { + self, + nixpkgs, + devenv, + systems, + cardboard, + ... + }@inputs: + let + forEachSystem = nixpkgs.lib.genAttrs (import systems); + metadata = builtins.fromTOML (builtins.readFile ./app/Cargo.toml); + pname = metadata.package.name; + version = metadata.package.version; + in + { + packages = forEachSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + config = { + allowBroken = true; + }; + }; + in + { + devenv-up = self.devShells.${system}.default.config.procfileScript; + ${pname} = cardboard.lib.keepFnInput pkgs.rustPackages.rustPlatform.buildRustPackage { + inherit pname version; + src = ./app; + cargoLock = { + lockFile = ./app/Cargo.lock; + }; + }; + default = self.packages.${system}.${pname}; + } + ); + + devShells = forEachSystem ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + default = devenv.lib.mkShell { + inherit inputs pkgs; + modules = [{ + languages.rust = { + enable = true; + }; + }]; + }; + } + ); + + overlays = { + ${pname} = final: prev: { + ${pname} = self.packages.${final.stdenv.hostPlatform.system}.${pname}; + }; + default = self.overlays.${pname}; + }; + + formatter = forEachSystem ( + system: + let + pkgs = import nixpkgs { inherit system; }; + in + pkgs.nixfmt-rfc-style + ); + }; +} \ No newline at end of file -- 2.54.0