diff --git a/.editorconfig b/.editorconfig index f40d3d29..028b7286 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,5 +8,5 @@ trim_trailing_whitespace = true indent_size = 4 indent_style = space -[*.nix] +[*.nix,*.{yaml,yml}] indent_size = 2 diff --git a/flake.lock b/flake.lock index 31fe6379..70ea5763 100644 --- a/flake.lock +++ b/flake.lock @@ -1,30 +1,44 @@ { "nodes": { - "flake-utils": { + "flake-compat": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-parts": { "inputs": { - "systems": "systems" + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "lastModified": 1759362264, + "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1759831965, - "narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=", + "lastModified": 1760524057, + "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c9b6fb798541223bbb396d287d16f43520250518", + "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", "type": "github" }, "original": { @@ -34,10 +48,44 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1754340878, + "narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cab778239e705082fe97bb4990e0d24c50924c04", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "systems": "systems", + "treefmt-nix": "treefmt-nix" } }, "systems": { @@ -54,6 +102,24 @@ "repo": "default", "type": "github" } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1760120816, + "narHash": "sha256-gq9rdocpmRZCwLS5vsHozwB6b5nrOBDNc2kkEaTXHfg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "761ae7aff00907b607125b2f57338b74177697ed", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 6dbdba38..3eaf517b 100644 --- a/flake.nix +++ b/flake.nix @@ -1,43 +1,33 @@ { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; + systems.url = "github:nix-systems/default"; + flake-parts.url = "github:hercules-ci/flake-parts"; + flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"; + treefmt-nix.url = "github:numtide/treefmt-nix"; }; outputs = - { - self, - nixpkgs, - flake-utils, - }: - flake-utils.lib.eachDefaultSystem ( - system: - let - pkgs = (import nixpkgs { inherit system; }); + inputs@{ flake-parts, systems, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = import systems; + imports = [ + ./nix/devShells.nix + ./nix/treefmt.nix + ]; - commonPackages = with pkgs; [ - nodejs_20 # v20.19.5 - pnpm_10 # v10.18.0 - ]; - - additionalPackages = with pkgs; [ - bun - nodePackages.conventional-changelog-cli - sentry-cli - ]; - in - { - formatter = pkgs.nixfmt-rfc-style; - - devShells.default = pkgs.mkShell { - name = "utrp-dev"; - buildInputs = commonPackages; + perSystem = + { system, ... }: + { + _module.args.pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ + (final: prev: { + nodejs = prev.nodejs_20; # v20.19.5 + }) + ]; + config = { }; + }; }; - - devShells.full = pkgs.mkShell { - name = "utrp-dev-full"; - buildInputs = commonPackages ++ additionalPackages; - }; - } - ); + }; } diff --git a/nix/devShells.nix b/nix/devShells.nix new file mode 100644 index 00000000..e24b0475 --- /dev/null +++ b/nix/devShells.nix @@ -0,0 +1,30 @@ +{ + perSystem = + { + pkgs, + ... + }: + let + commonPackages = with pkgs; [ + nodejs # Defined in overlay + pnpm_10 # v10.18.2 + ]; + + additionalPackages = with pkgs; [ + bun + nodePackages.conventional-changelog-cli + sentry-cli + ]; + in + { + devShells.default = pkgs.mkShell { + name = "utrp-dev"; + packages = commonPackages; + }; + + devShells.full = pkgs.mkShell { + name = "utrp-dev-full"; + packages = commonPackages ++ additionalPackages; + }; + }; +} diff --git a/nix/treefmt.nix b/nix/treefmt.nix new file mode 100644 index 00000000..e0c52105 --- /dev/null +++ b/nix/treefmt.nix @@ -0,0 +1,24 @@ +{ inputs, ... }: +{ + imports = [ + inputs.treefmt-nix.flakeModule + ]; + + perSystem = + { pkgs, ... }: + { + treefmt = { + projectRootFile = "flake.nix"; + programs.nixfmt.enable = pkgs.lib.meta.availableOn pkgs.stdenv.buildPlatform pkgs.nixfmt-rfc-style.compiler; + programs.nixfmt.package = pkgs.nixfmt-rfc-style; + programs.prettier.enable = true; + programs.shellcheck.enable = true; + programs.yamlfmt.enable = true; + programs.dockerfmt.enable = true; + + settings.formatter.prettier.excludes = [ "pnpm-lock.yaml" ]; + settings.formatter.shellcheck.excludes = [ ".envrc" ]; + settings.formatter.yamlfmt.excludes = [ "pnpm-lock.yaml" ]; + }; + }; +} diff --git a/package.json b/package.json index 4b993997..9d8f56fa 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "gulp-zip": "^6.1.0", "path": "^0.12.7", "postcss": "^8.5.3", - "prettier": "^3.5.2", + "prettier": "3.6.2", "react-dev-utils": "^12.0.1", "semantic-release": "^24.2.3", "storybook": "^8.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd5613c8..e794b529 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -154,25 +154,25 @@ importers: version: 8.55.0 '@storybook/addon-designs': specifier: ^8.2.0 - version: 8.2.0(@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)))(@storybook/components@8.6.0(storybook@8.6.0(prettier@3.5.2)))(@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 8.2.0(@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)))(@storybook/components@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-essentials': specifier: ^8.6.0 - version: 8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2)) + version: 8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.6.2)) '@storybook/addon-links': specifier: ^8.6.0 - version: 8.6.0(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) + version: 8.6.0(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)) '@storybook/blocks': specifier: ^8.6.0 - version: 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) + version: 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)) '@storybook/react': specifier: ^8.6.0 - version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3) + version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2))(typescript@5.7.3) '@storybook/react-vite': specifier: ^8.6.0 - version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.52.4)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3)(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0)) + version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.52.4)(storybook@8.6.0(prettier@3.6.2))(typescript@5.7.3)(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0)) '@storybook/test': specifier: ^8.6.0 - version: 8.6.0(storybook@8.6.0(prettier@3.5.2)) + version: 8.6.0(storybook@8.6.0(prettier@3.6.2)) '@svgr/core': specifier: ^8.1.0 version: 8.1.0(typescript@5.7.3) @@ -298,7 +298,7 @@ importers: version: 50.6.3(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.2.3 - version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.2) + version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) eslint-plugin-react: specifier: ^7.37.4 version: 7.37.4(eslint@8.57.1) @@ -336,8 +336,8 @@ importers: specifier: ^8.5.3 version: 8.5.3 prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: 3.6.2 + version: 3.6.2 react-dev-utils: specifier: ^12.0.1 version: 12.0.1(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.25.10)) @@ -346,7 +346,7 @@ importers: version: 24.2.3(typescript@5.7.3) storybook: specifier: ^8.6.0 - version: 8.6.0(prettier@3.5.2) + version: 8.6.0(prettier@3.6.2) typescript: specifier: ^5.7.3 version: 5.7.3 @@ -5907,8 +5907,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.5.2: - resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} hasBin: true @@ -8425,126 +8425,126 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@storybook/addon-actions@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-actions@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-backgrounds@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-controls@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 - '@storybook/addon-designs@8.2.0(@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)))(@storybook/components@8.6.0(storybook@8.6.0(prettier@3.5.2)))(@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-designs@8.2.0(@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)))(@storybook/components@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@figspec/react': 1.0.3(react@18.3.1) optionalDependencies: - '@storybook/blocks': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) - '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/blocks': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)) + '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.6.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/addon-docs@8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-docs@8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.6.2))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.18)(react@18.3.1) - '@storybook/blocks': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) - '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/react-dom-shim': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) + '@storybook/blocks': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)) + '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/react-dom-shim': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-essentials@8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.6.2))': dependencies: - '@storybook/addon-actions': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-backgrounds': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-controls': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-docs': 8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-highlight': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-measure': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-outline': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-toolbars': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/addon-viewport': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - storybook: 8.6.0(prettier@3.5.2) + '@storybook/addon-actions': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-backgrounds': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-controls': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-docs': 8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-highlight': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-measure': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-outline': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-toolbars': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/addon-viewport': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-highlight@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/addon-links@8.6.0(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-links@8.6.0(react@18.3.1)(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-measure@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-outline@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-toolbars@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/addon-viewport@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/addon-viewport@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: memoizerific: 1.11.3 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))': + '@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/icons': 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@8.6.0(storybook@8.6.0(prettier@3.5.2))(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0))': + '@storybook/builder-vite@8.6.0(storybook@8.6.0(prettier@3.6.2))(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0))': dependencies: - '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.6.2)) browser-assert: 1.2.1 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 vite: 5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0) - '@storybook/components@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/components@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/core@8.6.0(prettier@3.5.2)(storybook@8.6.0(prettier@3.5.2))': + '@storybook/core@8.6.0(prettier@3.6.2)(storybook@8.6.0(prettier@3.6.2))': dependencies: - '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.6.2)) better-opn: 3.0.2 browser-assert: 1.2.1 esbuild: 0.25.10 @@ -8556,16 +8556,16 @@ snapshots: util: 0.12.5 ws: 8.18.1 optionalDependencies: - prettier: 3.5.2 + prettier: 3.6.2 transitivePeerDependencies: - bufferutil - storybook - supports-color - utf-8-validate - '@storybook/csf-plugin@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/csf-plugin@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) unplugin: 1.16.1 '@storybook/csf@0.0.1': @@ -8579,77 +8579,77 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/instrumenter@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/manager-api@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/manager-api@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/preview-api@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/preview-api@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/react-dom-shim@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))': + '@storybook/react-dom-shim@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/react-vite@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.52.4)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3)(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0))': + '@storybook/react-vite@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.52.4)(storybook@8.6.0(prettier@3.6.2))(typescript@5.7.3)(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.3)(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0)) '@rollup/pluginutils': 5.1.4(rollup@4.52.4) - '@storybook/builder-vite': 8.6.0(storybook@8.6.0(prettier@3.5.2))(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0)) - '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3) + '@storybook/builder-vite': 8.6.0(storybook@8.6.0(prettier@3.6.2))(vite@5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0)) + '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2))(typescript@5.7.3) find-up: 5.0.0 magic-string: 0.30.17 react: 18.3.1 react-docgen: 7.1.1 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) tsconfig-paths: 4.2.0 vite: 5.4.20(@types/node@22.13.5)(sass@1.85.1)(terser@5.44.0) optionalDependencies: - '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.6.2)) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3)': + '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2))(typescript@5.7.3)': dependencies: - '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.6.2)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/preview-api': 8.6.0(storybook@8.6.0(prettier@3.5.2)) - '@storybook/react-dom-shim': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) - '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/manager-api': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/preview-api': 8.6.0(storybook@8.6.0(prettier@3.6.2)) + '@storybook/react-dom-shim': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.6.2)) + '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.6.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) optionalDependencies: - '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.6.2)) typescript: 5.7.3 - '@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/instrumenter': 8.6.0(storybook@8.6.0(prettier@3.6.2)) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) - '@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.5.2))': + '@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: - storybook: 8.6.0(prettier@3.5.2) + storybook: 8.6.0(prettier@3.6.2) '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.9)': dependencies: @@ -11010,10 +11010,10 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.2): + eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): dependencies: eslint: 8.57.1 - prettier: 3.5.2 + prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: @@ -13381,7 +13381,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.5.2: {} + prettier@3.6.2: {} pretty-format@27.5.1: dependencies: @@ -14038,11 +14038,11 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@8.6.0(prettier@3.5.2): + storybook@8.6.0(prettier@3.6.2): dependencies: - '@storybook/core': 8.6.0(prettier@3.5.2)(storybook@8.6.0(prettier@3.5.2)) + '@storybook/core': 8.6.0(prettier@3.6.2)(storybook@8.6.0(prettier@3.6.2)) optionalDependencies: - prettier: 3.5.2 + prettier: 3.6.2 transitivePeerDependencies: - bufferutil - supports-color diff --git a/shell.nix b/shell.nix new file mode 100644 index 00000000..459e1526 --- /dev/null +++ b/shell.nix @@ -0,0 +1,12 @@ +(import ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + nodeName = lock.nodes.root.inputs.flake-compat; + in + fetchTarball { + url = + lock.nodes.${nodeName}.locked.url + or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz"; + sha256 = lock.nodes.${nodeName}.locked.narHash; + } +) { src = ./.; }).shellNix