Moved from nix-shell -> flakes
All checks were successful
Docker Deploy / build-and-push (push) Successful in 4m27s

This commit is contained in:
2025-07-25 16:51:25 -06:00
parent 14de7b0d22
commit f85cf0c719
6 changed files with 260 additions and 186 deletions

View File

@@ -10,7 +10,7 @@ My personal website built with Astro and Preact!
- **Talks** - **Talks**
- **Terminal View** - **Terminal View**
** Nix shell is required for local development! Install it on your OS of choice OR use NixOS! ** Nix with flakes enabled is required for local development! Install it on your OS of choice OR use NixOS!
## Development ## Development
@@ -19,7 +19,7 @@ My personal website built with Astro and Preact!
pnpm i pnpm i
# Start development server # Start development server
pnpm shell # Enter nix-shell pnpm nix # Build with flakes
pnpm dev pnpm dev
# Build for production # Build for production

61
flake.lock generated Normal file
View File

@@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1753250450,
"narHash": "sha256-i+CQV2rPmP8wHxj0aq4siYyohHwVlsh40kV89f3nw1s=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fc02ee70efb805d3b2865908a13ddd4474557ecf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

120
flake.nix Normal file
View File

@@ -0,0 +1,120 @@
# flake.nix
{
description = "A portable development environment for atridotdad with Nix Flakes";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Pin to a specific branch or commit for stability
flake-utils.url = "github:numtide/flake-utils"; # Helps with system boilerplate
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
isDarwin = pkgs.stdenv.isDarwin;
isLinux = pkgs.stdenv.isLinux;
commonDevTools = with pkgs; [
nodejs_24
nodePackages.pnpm
git
curl
];
# Common libraries needed for Playwright across platforms (e.g., for WebKit/Firefox)
playwrightCommonLibs = with pkgs; [
glib
nss
nspr
dbus
atk
at-spi2-atk
at-spi2-core
cups
expat
libxkbcommon
cairo
pango
fontconfig
freetype
harfbuzz
icu
libpng
gnutls
];
# Linux-specific libraries for Playwright (mostly Chromium dependencies)
playwrightLinuxSpecificLibs = with pkgs; [
glibc
libgcc
xorg.libX11
xorg.libxcb
xorg.libXext
xorg.libXfixes
xorg.libXrandr
xorg.libXcomposite
xorg.libXdamage
xorg.libXcursor
xorg.libXi
xorg.libXrender
xorg.libXtst
mesa
libglvnd
libdrm
udev
alsa-lib
];
playwrightSelfDownloadLibs = playwrightCommonLibs ++ (if isLinux then playwrightLinuxSpecificLibs else []);
playwrightLibPath = pkgs.lib.makeBinPath playwrightSelfDownloadLibs;
in
{
devShells.default = pkgs.mkShell {
packages = commonDevTools ++ (
if isDarwin
then playwrightCommonLibs # For macOS, Playwright will download Chromium. Provide base libs.
else [ pkgs.chromium ] ++ playwrightSelfDownloadLibs # For Linux, provide Chromium and its dependencies
);
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = if isDarwin then "0" else "1";
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = pkgs.lib.optionalString isLinux "${pkgs.chromium}/bin/chromium";
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = if isDarwin then "false" else "true";
PUPPETEER_EXECUTABLE_PATH = pkgs.lib.optionalString isLinux "${pkgs.chromium}/bin/chromium";
shellHook = ''
echo "🚀 atridotdad development environment loaded!"
echo "Node version: $(node --version)"
echo "pnpm version: $(pnpm --version)"
${pkgs.lib.optionalString isDarwin ''
echo "Chromium path: Playwright will download its own for macOS"
export LD_LIBRARY_PATH="${playwrightLibPath}:$LD_LIBRARY_PATH"
PLAYWRIGHT_BROWSERS_PATH="''${TMPDIR:-$HOME/.cache}/ms-playwright"
export PLAYWRIGHT_BROWSERS_PATH
if [ ! -d "$PLAYWRIGHT_BROWSERS_PATH" ] || [ -z "$(ls -A "$PLAYWRIGHT_BROWSERS_PATH")" ]; then
echo "🌐 Installing Playwright browsers (for macOS)..."
pnpm exec playwright install chromium
else
echo " Playwright browsers already installed (for macOS)."
fi
''}
${pkgs.lib.optionalString isLinux ''
echo "Chromium path: ${pkgs.chromium}/bin/chromium"
''}
if [ ! -d "node_modules" ]; then
echo "📦 Installing pnpm dependencies..."
pnpm install --frozen-lockfile # Use --frozen-lockfile for more consistent builds
fi
'';
};
});
}

View File

@@ -7,7 +7,7 @@
"build": "astro build", "build": "astro build",
"preview": "astro preview", "preview": "astro preview",
"astro": "astro", "astro": "astro",
"shell": "nix-shell" "nix": "nix develop"
}, },
"dependencies": { "dependencies": {
"@astrojs/mdx": "^4.3.1", "@astrojs/mdx": "^4.3.1",
@@ -18,7 +18,7 @@
"@preact/signals": "^2.2.1", "@preact/signals": "^2.2.1",
"@tailwindcss/typography": "^0.5.16", "@tailwindcss/typography": "^0.5.16",
"@tailwindcss/vite": "^4.1.11", "@tailwindcss/vite": "^4.1.11",
"astro": "^5.12.2", "astro": "^5.12.3",
"astro-icon": "^1.1.5", "astro-icon": "^1.1.5",
"lucide-preact": "^0.525.0", "lucide-preact": "^0.525.0",
"playwright": "^1.54.1", "playwright": "^1.54.1",
@@ -29,7 +29,7 @@
"devDependencies": { "devDependencies": {
"@iconify-json/mdi": "^1.2.3", "@iconify-json/mdi": "^1.2.3",
"@iconify-json/simple-icons": "^1.2.44", "@iconify-json/simple-icons": "^1.2.44",
"daisyui": "^5.0.46" "daisyui": "^5.0.47"
}, },
"pnpm": { "pnpm": {
"onlyBuiltDependencies": [ "onlyBuiltDependencies": [

148
pnpm-lock.yaml generated
View File

@@ -10,13 +10,13 @@ importers:
dependencies: dependencies:
'@astrojs/mdx': '@astrojs/mdx':
specifier: ^4.3.1 specifier: ^4.3.1
version: 4.3.1(astro@5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3)) version: 4.3.1(astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3))
'@astrojs/node': '@astrojs/node':
specifier: ^9.3.0 specifier: ^9.3.0
version: 9.3.0(astro@5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3)) version: 9.3.0(astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3))
'@astrojs/preact': '@astrojs/preact':
specifier: ^4.1.0 specifier: ^4.1.0
version: 4.1.0(@babel/core@7.28.0)(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(preact@10.26.9) version: 4.1.0(@babel/core@7.28.0)(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(preact@10.26.9)
'@astrojs/rss': '@astrojs/rss':
specifier: ^4.0.12 specifier: ^4.0.12
version: 4.0.12 version: 4.0.12
@@ -31,10 +31,10 @@ importers:
version: 0.5.16(tailwindcss@4.1.11) version: 0.5.16(tailwindcss@4.1.11)
'@tailwindcss/vite': '@tailwindcss/vite':
specifier: ^4.1.11 specifier: ^4.1.11
version: 4.1.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)) version: 4.1.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))
astro: astro:
specifier: ^5.12.2 specifier: ^5.12.3
version: 5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3) version: 5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3)
astro-icon: astro-icon:
specifier: ^1.1.5 specifier: ^1.1.5
version: 1.1.5 version: 1.1.5
@@ -61,8 +61,8 @@ importers:
specifier: ^1.2.44 specifier: ^1.2.44
version: 1.2.44 version: 1.2.44
daisyui: daisyui:
specifier: ^5.0.46 specifier: ^5.0.47
version: 5.0.46 version: 5.0.47
packages: packages:
@@ -167,8 +167,8 @@ packages:
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/helpers@7.27.6': '@babel/helpers@7.28.2':
resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/parser@7.28.0': '@babel/parser@7.28.0':
@@ -202,8 +202,8 @@ packages:
resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/types@7.28.1': '@babel/types@7.28.2':
resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@capsizecss/unpack@2.4.0': '@capsizecss/unpack@2.4.0':
@@ -994,16 +994,16 @@ packages:
astro-icon@1.1.5: astro-icon@1.1.5:
resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==} resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==}
astro@5.12.2: astro@5.12.3:
resolution: {integrity: sha512-/qTPSD8bSxjsh5KNXvOsf6Md7dqNuH3WSx6KLa1YbxPR2JZDgPWEKEyulS3/9L5h5aP0SkjONrqwOGdgWw97fg==} resolution: {integrity: sha512-fU1hNPMkccm+FuonGsY5DFkC2QyuLCju++8L2ubzBtYBDBf6bmfgmVM7A2dK+Hl+ZJCUNgepsClhBpczj+2LRw==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true hasBin: true
asynckit@0.4.0: asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
axios@1.10.0: axios@1.11.0:
resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==}
axobject-query@4.1.0: axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
@@ -1190,8 +1190,8 @@ packages:
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
daisyui@5.0.46: daisyui@5.0.47:
resolution: {integrity: sha512-vMDZK1tI/bOb2Mc3Mk5WpquBG3ZqBz1YKZ0xDlvpOvey60dOS4/5Qhdowq1HndbQl7PgDLDYysxAjjUjwR7/eQ==} resolution: {integrity: sha512-RuYjjVKpodDoOYAHIvG6qC3BeRxhlyj4JCO+6aV0VzK+i3RWD7cmICh0m5+Xfr5938mV0Mk7FUOQ00msz8H8dw==}
debug@4.4.1: debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
@@ -1271,8 +1271,8 @@ packages:
ee-first@1.1.1: ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
electron-to-chromium@1.5.190: electron-to-chromium@1.5.191:
resolution: {integrity: sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==} resolution: {integrity: sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==}
emoji-regex@10.4.0: emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
@@ -1605,8 +1605,8 @@ packages:
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
engines: {node: '>=16'} engines: {node: '>=16'}
jiti@2.4.2: jiti@2.5.1:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
hasBin: true hasBin: true
js-tokens@4.0.0: js-tokens@4.0.0:
@@ -2277,9 +2277,9 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
source-map@0.7.4: source-map@0.7.6:
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
engines: {node: '>= 8'} engines: {node: '>= 12'}
space-separated-tokens@2.0.2: space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
@@ -2705,12 +2705,12 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@astrojs/mdx@4.3.1(astro@5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3))': '@astrojs/mdx@4.3.1(astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3))':
dependencies: dependencies:
'@astrojs/markdown-remark': 6.3.3 '@astrojs/markdown-remark': 6.3.3
'@mdx-js/mdx': 3.1.0(acorn@8.15.0) '@mdx-js/mdx': 3.1.0(acorn@8.15.0)
acorn: 8.15.0 acorn: 8.15.0
astro: 5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3) astro: 5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3)
es-module-lexer: 1.7.0 es-module-lexer: 1.7.0
estree-util-visit: 2.0.0 estree-util-visit: 2.0.0
hast-util-to-html: 9.0.5 hast-util-to-html: 9.0.5
@@ -2718,28 +2718,28 @@ snapshots:
rehype-raw: 7.0.0 rehype-raw: 7.0.0
remark-gfm: 4.0.1 remark-gfm: 4.0.1
remark-smartypants: 3.0.2 remark-smartypants: 3.0.2
source-map: 0.7.4 source-map: 0.7.6
unist-util-visit: 5.0.0 unist-util-visit: 5.0.0
vfile: 6.0.3 vfile: 6.0.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@astrojs/node@9.3.0(astro@5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3))': '@astrojs/node@9.3.0(astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3))':
dependencies: dependencies:
'@astrojs/internal-helpers': 0.6.1 '@astrojs/internal-helpers': 0.6.1
astro: 5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3) astro: 5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3)
send: 1.2.0 send: 1.2.0
server-destroy: 1.0.1 server-destroy: 1.0.1
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@astrojs/preact@4.1.0(@babel/core@7.28.0)(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(preact@10.26.9)': '@astrojs/preact@4.1.0(@babel/core@7.28.0)(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(preact@10.26.9)':
dependencies: dependencies:
'@preact/preset-vite': 2.10.2(@babel/core@7.28.0)(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)) '@preact/preset-vite': 2.10.2(@babel/core@7.28.0)(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))
'@preact/signals': 2.2.1(preact@10.26.9) '@preact/signals': 2.2.1(preact@10.26.9)
preact: 10.26.9 preact: 10.26.9
preact-render-to-string: 6.5.13(preact@10.26.9) preact-render-to-string: 6.5.13(preact@10.26.9)
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
- '@types/node' - '@types/node'
@@ -2791,11 +2791,11 @@ snapshots:
'@babel/generator': 7.28.0 '@babel/generator': 7.28.0
'@babel/helper-compilation-targets': 7.27.2 '@babel/helper-compilation-targets': 7.27.2
'@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0)
'@babel/helpers': 7.27.6 '@babel/helpers': 7.28.2
'@babel/parser': 7.28.0 '@babel/parser': 7.28.0
'@babel/template': 7.27.2 '@babel/template': 7.27.2
'@babel/traverse': 7.28.0 '@babel/traverse': 7.28.0
'@babel/types': 7.28.1 '@babel/types': 7.28.2
convert-source-map: 2.0.0 convert-source-map: 2.0.0
debug: 4.4.1 debug: 4.4.1
gensync: 1.0.0-beta.2 gensync: 1.0.0-beta.2
@@ -2807,14 +2807,14 @@ snapshots:
'@babel/generator@7.28.0': '@babel/generator@7.28.0':
dependencies: dependencies:
'@babel/parser': 7.28.0 '@babel/parser': 7.28.0
'@babel/types': 7.28.1 '@babel/types': 7.28.2
'@jridgewell/gen-mapping': 0.3.12 '@jridgewell/gen-mapping': 0.3.12
'@jridgewell/trace-mapping': 0.3.29 '@jridgewell/trace-mapping': 0.3.29
jsesc: 3.1.0 jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.27.3': '@babel/helper-annotate-as-pure@7.27.3':
dependencies: dependencies:
'@babel/types': 7.28.1 '@babel/types': 7.28.2
'@babel/helper-compilation-targets@7.27.2': '@babel/helper-compilation-targets@7.27.2':
dependencies: dependencies:
@@ -2829,7 +2829,7 @@ snapshots:
'@babel/helper-module-imports@7.27.1': '@babel/helper-module-imports@7.27.1':
dependencies: dependencies:
'@babel/traverse': 7.28.0 '@babel/traverse': 7.28.0
'@babel/types': 7.28.1 '@babel/types': 7.28.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -2850,14 +2850,14 @@ snapshots:
'@babel/helper-validator-option@7.27.1': {} '@babel/helper-validator-option@7.27.1': {}
'@babel/helpers@7.27.6': '@babel/helpers@7.28.2':
dependencies: dependencies:
'@babel/template': 7.27.2 '@babel/template': 7.27.2
'@babel/types': 7.28.1 '@babel/types': 7.28.2
'@babel/parser@7.28.0': '@babel/parser@7.28.0':
dependencies: dependencies:
'@babel/types': 7.28.1 '@babel/types': 7.28.2
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)':
dependencies: dependencies:
@@ -2878,7 +2878,7 @@ snapshots:
'@babel/helper-module-imports': 7.27.1 '@babel/helper-module-imports': 7.27.1
'@babel/helper-plugin-utils': 7.27.1 '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0)
'@babel/types': 7.28.1 '@babel/types': 7.28.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -2886,7 +2886,7 @@ snapshots:
dependencies: dependencies:
'@babel/code-frame': 7.27.1 '@babel/code-frame': 7.27.1
'@babel/parser': 7.28.0 '@babel/parser': 7.28.0
'@babel/types': 7.28.1 '@babel/types': 7.28.2
'@babel/traverse@7.28.0': '@babel/traverse@7.28.0':
dependencies: dependencies:
@@ -2895,12 +2895,12 @@ snapshots:
'@babel/helper-globals': 7.28.0 '@babel/helper-globals': 7.28.0
'@babel/parser': 7.28.0 '@babel/parser': 7.28.0
'@babel/template': 7.27.2 '@babel/template': 7.27.2
'@babel/types': 7.28.1 '@babel/types': 7.28.2
debug: 4.4.1 debug: 4.4.1
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@babel/types@7.28.1': '@babel/types@7.28.2':
dependencies: dependencies:
'@babel/helper-string-parser': 7.27.1 '@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1 '@babel/helper-validator-identifier': 7.27.1
@@ -3011,7 +3011,7 @@ snapshots:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0
'@iconify/utils': 2.3.0 '@iconify/utils': 2.3.0
'@types/tar': 6.1.13 '@types/tar': 6.1.13
axios: 1.10.0 axios: 1.11.0
cheerio: 1.0.0 cheerio: 1.0.0
domhandler: 5.0.3 domhandler: 5.0.3
extract-zip: 2.0.1 extract-zip: 2.0.1
@@ -3237,7 +3237,7 @@ snapshots:
remark-mdx: 3.1.0 remark-mdx: 3.1.0
remark-parse: 11.0.0 remark-parse: 11.0.0
remark-rehype: 11.1.2 remark-rehype: 11.1.2
source-map: 0.7.4 source-map: 0.7.6
unified: 11.0.5 unified: 11.0.5
unist-util-position-from-estree: 2.0.0 unist-util-position-from-estree: 2.0.0
unist-util-stringify-position: 4.0.0 unist-util-stringify-position: 4.0.0
@@ -3249,18 +3249,18 @@ snapshots:
'@oslojs/encoding@1.1.0': {} '@oslojs/encoding@1.1.0': {}
'@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1))': '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))':
dependencies: dependencies:
'@babel/core': 7.28.0 '@babel/core': 7.28.0
'@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0)
'@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0)
'@prefresh/vite': 2.4.8(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)) '@prefresh/vite': 2.4.8(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0)
debug: 4.4.1 debug: 4.4.1
picocolors: 1.1.1 picocolors: 1.1.1
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
vite-prerender-plugin: 0.5.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)) vite-prerender-plugin: 0.5.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))
transitivePeerDependencies: transitivePeerDependencies:
- preact - preact
- supports-color - supports-color
@@ -3280,7 +3280,7 @@ snapshots:
'@prefresh/utils@1.2.1': {} '@prefresh/utils@1.2.1': {}
'@prefresh/vite@2.4.8(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1))': '@prefresh/vite@2.4.8(preact@10.26.9)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))':
dependencies: dependencies:
'@babel/core': 7.28.0 '@babel/core': 7.28.0
'@prefresh/babel-plugin': 0.5.2 '@prefresh/babel-plugin': 0.5.2
@@ -3288,7 +3288,7 @@ snapshots:
'@prefresh/utils': 1.2.1 '@prefresh/utils': 1.2.1
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
preact: 10.26.9 preact: 10.26.9
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -3406,7 +3406,7 @@ snapshots:
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
enhanced-resolve: 5.18.2 enhanced-resolve: 5.18.2
jiti: 2.4.2 jiti: 2.5.1
lightningcss: 1.30.1 lightningcss: 1.30.1
magic-string: 0.30.17 magic-string: 0.30.17
source-map-js: 1.2.1 source-map-js: 1.2.1
@@ -3474,12 +3474,12 @@ snapshots:
postcss-selector-parser: 6.0.10 postcss-selector-parser: 6.0.10
tailwindcss: 4.1.11 tailwindcss: 4.1.11
'@tailwindcss/vite@4.1.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1))': '@tailwindcss/vite@4.1.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))':
dependencies: dependencies:
'@tailwindcss/node': 4.1.11 '@tailwindcss/node': 4.1.11
'@tailwindcss/oxide': 4.1.11 '@tailwindcss/oxide': 4.1.11
tailwindcss: 4.1.11 tailwindcss: 4.1.11
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
'@trysound/sax@0.2.0': {} '@trysound/sax@0.2.0': {}
@@ -3571,7 +3571,7 @@ snapshots:
- debug - debug
- supports-color - supports-color
astro@5.12.2(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3): astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.45.1)(typescript@5.8.3):
dependencies: dependencies:
'@astrojs/compiler': 2.12.2 '@astrojs/compiler': 2.12.2
'@astrojs/internal-helpers': 0.6.1 '@astrojs/internal-helpers': 0.6.1
@@ -3627,8 +3627,8 @@ snapshots:
unist-util-visit: 5.0.0 unist-util-visit: 5.0.0
unstorage: 1.16.1 unstorage: 1.16.1
vfile: 6.0.3 vfile: 6.0.3
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
vitefu: 1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)) vitefu: 1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1))
xxhash-wasm: 1.1.0 xxhash-wasm: 1.1.0
yargs-parser: 21.1.1 yargs-parser: 21.1.1
yocto-spinner: 0.2.3 yocto-spinner: 0.2.3
@@ -3674,7 +3674,7 @@ snapshots:
asynckit@0.4.0: {} asynckit@0.4.0: {}
axios@1.10.0: axios@1.11.0:
dependencies: dependencies:
follow-redirects: 1.15.9 follow-redirects: 1.15.9
form-data: 4.0.4 form-data: 4.0.4
@@ -3716,7 +3716,7 @@ snapshots:
browserslist@4.25.1: browserslist@4.25.1:
dependencies: dependencies:
caniuse-lite: 1.0.30001727 caniuse-lite: 1.0.30001727
electron-to-chromium: 1.5.190 electron-to-chromium: 1.5.191
node-releases: 2.0.19 node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.25.1) update-browserslist-db: 1.1.3(browserslist@4.25.1)
@@ -3861,7 +3861,7 @@ snapshots:
dependencies: dependencies:
css-tree: 2.2.1 css-tree: 2.2.1
daisyui@5.0.46: {} daisyui@5.0.47: {}
debug@4.4.1: debug@4.4.1:
dependencies: dependencies:
@@ -3927,7 +3927,7 @@ snapshots:
ee-first@1.1.1: {} ee-first@1.1.1: {}
electron-to-chromium@1.5.190: {} electron-to-chromium@1.5.191: {}
emoji-regex@10.4.0: {} emoji-regex@10.4.0: {}
@@ -4041,7 +4041,7 @@ snapshots:
dependencies: dependencies:
'@types/estree-jsx': 1.0.5 '@types/estree-jsx': 1.0.5
astring: 1.9.0 astring: 1.9.0
source-map: 0.7.4 source-map: 0.7.6
estree-util-visit@2.0.0: estree-util-visit@2.0.0:
dependencies: dependencies:
@@ -4375,7 +4375,7 @@ snapshots:
dependencies: dependencies:
is-inside-container: 1.0.0 is-inside-container: 1.0.0
jiti@2.4.2: {} jiti@2.5.1: {}
js-tokens@4.0.0: {} js-tokens@4.0.0: {}
@@ -4474,7 +4474,7 @@ snapshots:
magicast@0.3.5: magicast@0.3.5:
dependencies: dependencies:
'@babel/parser': 7.28.0 '@babel/parser': 7.28.0
'@babel/types': 7.28.1 '@babel/types': 7.28.2
source-map-js: 1.2.1 source-map-js: 1.2.1
markdown-extensions@2.0.0: {} markdown-extensions@2.0.0: {}
@@ -5424,7 +5424,7 @@ snapshots:
source-map-js@1.2.1: {} source-map-js@1.2.1: {}
source-map@0.7.4: {} source-map@0.7.6: {}
space-separated-tokens@2.0.2: {} space-separated-tokens@2.0.2: {}
@@ -5646,17 +5646,17 @@ snapshots:
'@types/unist': 3.0.3 '@types/unist': 3.0.3
vfile-message: 4.0.2 vfile-message: 4.0.2
vite-prerender-plugin@0.5.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)): vite-prerender-plugin@0.5.11(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)):
dependencies: dependencies:
kolorist: 1.8.0 kolorist: 1.8.0
magic-string: 0.30.17 magic-string: 0.30.17
node-html-parser: 6.1.13 node-html-parser: 6.1.13
simple-code-frame: 1.3.0 simple-code-frame: 1.3.0
source-map: 0.7.4 source-map: 0.7.6
stack-trace: 1.0.0-pre2 stack-trace: 1.0.0-pre2
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1): vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1):
dependencies: dependencies:
esbuild: 0.25.8 esbuild: 0.25.8
fdir: 6.4.6(picomatch@4.0.3) fdir: 6.4.6(picomatch@4.0.3)
@@ -5667,12 +5667,12 @@ snapshots:
optionalDependencies: optionalDependencies:
'@types/node': 24.1.0 '@types/node': 24.1.0
fsevents: 2.3.3 fsevents: 2.3.3
jiti: 2.4.2 jiti: 2.5.1
lightningcss: 1.30.1 lightningcss: 1.30.1
vitefu@1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1)): vitefu@1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)):
optionalDependencies: optionalDependencies:
vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(lightningcss@1.30.1) vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)
web-namespaces@2.0.1: {} web-namespaces@2.0.1: {}

107
shell.nix
View File

@@ -1,107 +0,0 @@
{ pkgs ? import <nixpkgs> {} }:
let
isDarwin = pkgs.stdenv.isDarwin;
isLinux = pkgs.stdenv.isLinux;
commonBuildInputs = with pkgs; [
nodejs_24
nodePackages.pnpm
git
curl
];
playwrightCommonLibs = with pkgs; [
glib
nss
nspr
dbus
atk
at-spi2-atk
at-spi2-core
cups
expat
libxkbcommon
cairo
pango
fontconfig
freetype
harfbuzz
icu
libpng
gnutls
];
playwrightLinuxSpecificLibs = with pkgs; [
glibc
libgcc
xorg.libX11
xorg.libxcb
xorg.libXext
xorg.libXfixes
xorg.libXrandr
xorg.libXcomposite
xorg.libXdamage
xorg.libXcursor
xorg.libXi
xorg.libXrender
xorg.libXtst
mesa
libglvnd
libdrm
udev
alsa-lib
];
playwrightSelfDownloadLibs = playwrightCommonLibs ++ (if isLinux then playwrightLinuxSpecificLibs else []);
playwrightLibPath = pkgs.lib.makeBinPath playwrightSelfDownloadLibs;
in
pkgs.mkShell {
buildInputs = commonBuildInputs ++ (
if isDarwin
then playwrightCommonLibs
else [ pkgs.chromium ] ++ playwrightSelfDownloadLibs
);
shellHook = ''
echo "🚀 atridotdad development environment loaded!"
echo "Node version: $(node --version)"
echo "pnpm version: $(pnpm --version)"
${if isDarwin then ''
echo "Chromium path: Playwright will download its own for macOS"
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=0
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=false
export LD_LIBRARY_PATH="${playwrightLibPath}:$LD_LIBRARY_PATH"
PLAYWRIGHT_BROWSERS_PATH="$HOME/.cache/ms-playwright"
if [ ! -d "$PLAYWRIGHT_BROWSERS_PATH" ] || [ -z "$(ls -A "$PLAYWRIGHT_BROWSERS_PATH")" ]; then
echo "🌐 Installing Playwright browsers (for macOS)..."
pnpm exec playwright install
else
echo " Playwright browsers already installed (for macOS)."
fi
'' else if isLinux then ''
echo "Chromium path: ${pkgs.chromium}/bin/chromium"
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
export PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH="${pkgs.chromium}/bin/chromium"
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
export PUPPETEER_EXECUTABLE_PATH="${pkgs.chromium}/bin/chromium"
'' else ''
echo "Unsupported OS detected."
''}
if [ ! -d "node_modules" ]; then
echo "📦 Installing pnpm dependencies..."
pnpm install
fi
'';
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = if isDarwin then "0" else "1";
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = if isDarwin then null else "${pkgs.chromium}/bin/chromium";
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = if isDarwin then "false" else "true";
PUPPETEER_EXECUTABLE_PATH = if isDarwin then null else "${pkgs.chromium}/bin/chromium";
}