refactor(nix): use flake-parts (#642)

refactor(nix): split into flake parts module and add shell.nix

chore: add prettier to treefmt and pin version

chore(nix): add prettier exclude

chore(nix): bump pnpm to v10.18.2

feat(nix): add overlay for nodejs

feat(nix): add overlay for nodejs

chore: consolidate .editorconfig
This commit is contained in:
doprz
2025-12-13 22:48:23 -06:00
committed by GitHub
parent 8d2fdfa63c
commit c2b43dc949
8 changed files with 267 additions and 145 deletions

View File

@@ -8,5 +8,5 @@ trim_trailing_whitespace = true
indent_size = 4
indent_style = space
[*.nix]
[*.nix,*.{yaml,yml}]
indent_size = 2

94
flake.lock generated
View File

@@ -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",

View File

@@ -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;
};
}
);
};
}

30
nix/devShells.nix Normal file
View File

@@ -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;
};
};
}

24
nix/treefmt.nix Normal file
View File

@@ -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" ];
};
};
}

View File

@@ -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",

190
pnpm-lock.yaml generated
View File

@@ -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

12
shell.nix Normal file
View File

@@ -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