Skip to content

Commit c6bd0a7

Browse files
authored
Switch to Node.js based GitHub Actions workflow and remove Nix-based builds
2 parents ea81589 + a94cbd1 commit c6bd0a7

File tree

10 files changed

+65
-220
lines changed

10 files changed

+65
-220
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Build and Deploy
2+
3+
on:
4+
push:
5+
workflow_dispatch:
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: false
10+
11+
jobs:
12+
build:
13+
name: Build and Deploy Site
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Setup Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: 23
23+
24+
- name: Restore cache
25+
uses: actions/cache@v4
26+
with:
27+
path: |
28+
node_modules
29+
.image-cache
30+
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
31+
restore-keys: |
32+
${{ runner.os }}-node-
33+
34+
- name: Build with Node
35+
run: |
36+
npm ci
37+
npx @11ty/eleventy
38+
39+
- name: Deploy to Neocities
40+
uses: bcomnes/deploy-to-neocities@v2
41+
with:
42+
api_token: ${{ secrets.NEOCITIES_API_KEY }}
43+
cleanup: true
44+
dist_dir: _site
45+
46+
- name: Deploy to Bunny
47+
uses: R-J-dev/[email protected]
48+
with:
49+
access-key: ${{ secrets.BUNNY_ACCESS_KEY }}
50+
directory-to-upload: _site
51+
storage-endpoint: "https://storage.bunnycdn.com"
52+
storage-zone-name: "buttonkin"
53+
storage-zone-password: ${{ secrets.BUNNY_STORAGE_ZONE_PASSWORD }}
54+
concurrency: "5"
55+
enable-delete-action: true
56+
enable-purge-pull-zone: true
57+
pull-zone-id: "4605820"
58+
replication-timeout: "15000"

.gitignore

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,6 @@ dist
131131
.yarn/install-state.gz
132132
.pnp.*
133133

134-
# ---> Nix
135-
# Ignore build outputs from performing a nix-build or `nix build` command
136-
result
137-
result-*
138-
139134
# ---> Eleventy
140135
# Built site
141136
_site

bin/build

Lines changed: 0 additions & 4 deletions
This file was deleted.

bin/dryrun

Lines changed: 0 additions & 2 deletions
This file was deleted.

bin/lint

Lines changed: 0 additions & 9 deletions
This file was deleted.

bin/screenshot

Lines changed: 0 additions & 59 deletions
This file was deleted.

bin/serve

Lines changed: 0 additions & 4 deletions
This file was deleted.

default.nix

Lines changed: 0 additions & 14 deletions
This file was deleted.

flake.nix

Lines changed: 3 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -10,147 +10,27 @@
1010
forAllSystems = nixpkgs.lib.genAttrs systems;
1111
in
1212
{
13-
packages = forAllSystems (
14-
system:
15-
let
16-
pkgs = import nixpkgs { system = system; };
17-
dependencies = with pkgs; [ nodejs_23 ];
18-
nodeModules = pkgs.buildNpmPackage {
19-
pname = "buttonkin-dependencies";
20-
version = "1.0.0";
21-
src = pkgs.runCommand "source" { } ''
22-
mkdir -p $out
23-
cp ${./package.json} $out/package.json
24-
cp ${./package-lock.json} $out/package-lock.json
25-
'';
26-
npmDepsHash = "sha256-FGMvzbHIkV/oOdqD7X3ULn0Vdi+1Exmxw+nmE5kTc6s=";
27-
installPhase = "mkdir -p $out && cp -r node_modules $out/";
28-
dontNpmBuild = true;
29-
};
30-
31-
makeScript =
32-
name:
33-
let
34-
baseScript = pkgs.writeScriptBin name (builtins.readFile ./bin/${name});
35-
patchedScript = baseScript.overrideAttrs (old: {
36-
buildCommand = "${old.buildCommand}\n patchShebangs $out";
37-
});
38-
in
39-
pkgs.symlinkJoin {
40-
name = name;
41-
paths = [ patchedScript ] ++ dependencies;
42-
buildInputs = [ pkgs.makeWrapper ];
43-
postBuild = ''
44-
wrapProgram $out/bin/${name} --prefix PATH : $out/bin
45-
'';
46-
};
47-
48-
scriptNames = builtins.attrNames (builtins.readDir ./bin);
49-
scriptPackages = nixpkgs.lib.genAttrs scriptNames makeScript;
50-
51-
sitePackage = pkgs.stdenv.mkDerivation {
52-
name = "buttonkin";
53-
src = ./.;
54-
buildInputs = dependencies ++ [ nodeModules ];
55-
56-
buildPhase = ''
57-
mkdir -p $TMPDIR/build_dir
58-
cd $TMPDIR/build_dir
59-
60-
cp -r $src/* .
61-
cp -r $src/.image-cache .
62-
chmod -R a+rwX .image-cache
63-
cp $src/.eleventy.js .
64-
65-
ln -s ${nodeModules}/node_modules node_modules
66-
67-
mkdir -p src/_data
68-
chmod -R +w src/_data
69-
70-
${scriptPackages.build}/bin/build
71-
'';
72-
73-
installPhase = ''
74-
mkdir -p $out
75-
mv $TMPDIR/build_dir/_site $out/
76-
mv $TMPDIR/build_dir/.image-cache $out/
77-
'';
78-
79-
dontFixup = true;
80-
};
81-
82-
allPackages = {
83-
site = sitePackage;
84-
nodeModules = nodeModules;
85-
} // scriptPackages;
86-
in
87-
allPackages
88-
);
89-
90-
defaultPackage = forAllSystems (system: self.packages.${system}.site);
91-
9213
devShells = forAllSystems (
9314
system:
9415
let
9516
pkgs = import nixpkgs { system = system; };
9617

9718
dependencies = with pkgs; [
98-
biome
9919
nodejs_23
10020
];
101-
102-
nodeModules = pkgs.buildNpmPackage {
103-
pname = "buttonkin-dependencies";
104-
version = "1.0.0";
105-
src = pkgs.runCommand "source" { } ''
106-
mkdir -p $out
107-
cp ${./package.json} $out/package.json
108-
cp ${./package-lock.json} $out/package-lock.json
109-
'';
110-
npmDepsHash = "sha256-FGMvzbHIkV/oOdqD7X3ULn0Vdi+1Exmxw+nmE5kTc6s=";
111-
installPhase = "mkdir -p $out && cp -r node_modules $out/";
112-
dontNpmBuild = true;
113-
};
114-
115-
makeScript =
116-
name:
117-
let
118-
baseScript = pkgs.writeScriptBin name (builtins.readFile ./bin/${name});
119-
patchedScript = baseScript.overrideAttrs (old: {
120-
buildCommand = "${old.buildCommand}\n patchShebangs $out";
121-
});
122-
in
123-
pkgs.symlinkJoin {
124-
name = name;
125-
paths = [ patchedScript ] ++ dependencies;
126-
buildInputs = [ pkgs.makeWrapper ];
127-
postBuild = ''
128-
wrapProgram $out/bin/${name} --prefix PATH : $out/bin
129-
'';
130-
};
131-
132-
scriptNames = builtins.attrNames (builtins.readDir ./bin);
133-
scriptPackages = nixpkgs.lib.genAttrs scriptNames makeScript;
134-
135-
scriptPackageList = builtins.attrValues scriptPackages;
13621
in
13722
{
13823
default = pkgs.mkShell {
139-
buildInputs = dependencies ++ scriptPackageList;
24+
buildInputs = dependencies;
14025

14126
shellHook = ''
142-
rm -rf node_modules
143-
ln -s ${nodeModules}/node_modules node_modules
14427
cat <<EOF
14528
14629
Development environment ready!
14730
14831
Available commands:
149-
- 'serve' - Start development server
150-
- 'build' - Build the site in the _site directory
151-
- 'dryrun' - Perform a dry run build
152-
- 'test_flake' - Test building a site using flake.nix
153-
- 'lint' - Lint all files in src using Biome
32+
- 'npm run serve' # Start development server
33+
- 'npm run build' # Build the site in the _site directory
15434
15535
EOF
15636

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
"name": "buttonkin",
33
"version": "1.0.0",
44
"type": "commonjs",
5+
"scripts": {
6+
"build": "eleventy",
7+
"serve": "eleventy --serve"
8+
},
59
"dependencies": {
610
"@11ty/eleventy": "^3.0.0",
711
"@11ty/eleventy-img": "^6.0.0",

0 commit comments

Comments
 (0)