{ description = "Taiga a frontend tester"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; treefmt-nix.url = "github:numtide/treefmt-nix"; }; outputs = { nixpkgs, ... }@inputs: let supportedSystems = [ "x86_64-linux" ]; pkgsFor = system: nixpkgs.legacyPackages.${system}.extend ( nixpkgs.lib.composeManyExtensions [ ] # nixpkgs.lib.composeManyExtensions ([ ] ++ builtins.attrValues self.overlays) ); eachSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f (pkgsFor system)); treefmtEval = eachSystem (pkgs: inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix); packageSetFor = pkgs: let npmDeps = pkgs.importNpmLock.buildNodeModules { npmRoot = ./.; nodejs = pkgs.nodejs; }; npmPackage = pkgs.buildNpmPackage { pname = "taiga"; version = "0.1.0"; src = ./.; inherit npmDeps; npmConfigHook = pkgs.importNpmLock.npmConfigHook; }; in { inherit npmDeps; inherit npmPackage; }; in { # nix fmt formatter formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper); packages = eachSystem (pkgs: packageSetFor pkgs); # default devshell devShells = eachSystem (pkgs: { default = pkgs.mkShell { packages = with pkgs; [ importNpmLock.hooks.linkNodeModulesHook nodejs just svelte-language-server ]; npmDeps = pkgs.importNpmLock.buildNodeModules { npmRoot = ./.; nodejs = pkgs.nodejs; }; # Will be executed before entering the shell # or running a command shellHook = '' linkNodeModulesHook echo "Dev env ready" ''; }; }); }; }