Skip to content

Commit 8fad2f9

Browse files
Sourcelessclaude
andcommitted
Add Nix flake for reproducible dev environment
Provides Ruby 3.3, Bundler, and native dependencies via nix develop. Includes direnv integration and local gem installation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0dbfa90 commit 8fad2f9

5 files changed

Lines changed: 386 additions & 1 deletion

File tree

.envrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ _site/
33
.jekyll-metadata
44
.bundle/
55
vendor/
6-
Gemfile.lock
6+
7+
.gem/

Gemfile.lock

Lines changed: 286 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,286 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
activesupport (8.1.3)
5+
base64
6+
bigdecimal
7+
concurrent-ruby (~> 1.0, >= 1.3.1)
8+
connection_pool (>= 2.2.5)
9+
drb
10+
i18n (>= 1.6, < 2)
11+
json
12+
logger (>= 1.4.2)
13+
minitest (>= 5.1)
14+
securerandom (>= 0.3)
15+
tzinfo (~> 2.0, >= 2.0.5)
16+
uri (>= 0.13.1)
17+
addressable (2.8.9)
18+
public_suffix (>= 2.0.2, < 8.0)
19+
base64 (0.3.0)
20+
bigdecimal (4.1.0)
21+
coffee-script (2.4.1)
22+
coffee-script-source
23+
execjs
24+
coffee-script-source (1.12.2)
25+
colorator (1.1.0)
26+
commonmarker (0.23.12)
27+
concurrent-ruby (1.3.6)
28+
connection_pool (3.0.2)
29+
csv (3.3.5)
30+
dnsruby (1.73.1)
31+
base64 (>= 0.2)
32+
logger (~> 1.6)
33+
simpleidn (~> 0.2.1)
34+
drb (2.2.3)
35+
em-websocket (0.5.3)
36+
eventmachine (>= 0.12.9)
37+
http_parser.rb (~> 0)
38+
ethon (0.18.0)
39+
ffi (>= 1.15.0)
40+
logger
41+
eventmachine (1.2.7)
42+
execjs (2.10.0)
43+
faraday (2.14.1)
44+
faraday-net_http (>= 2.0, < 3.5)
45+
json
46+
logger
47+
faraday-net_http (3.4.2)
48+
net-http (~> 0.5)
49+
ffi (1.17.4-arm64-darwin)
50+
forwardable-extended (2.6.0)
51+
gemoji (4.1.0)
52+
github-pages (232)
53+
github-pages-health-check (= 1.18.2)
54+
jekyll (= 3.10.0)
55+
jekyll-avatar (= 0.8.0)
56+
jekyll-coffeescript (= 1.2.2)
57+
jekyll-commonmark-ghpages (= 0.5.1)
58+
jekyll-default-layout (= 0.1.5)
59+
jekyll-feed (= 0.17.0)
60+
jekyll-gist (= 1.5.0)
61+
jekyll-github-metadata (= 2.16.1)
62+
jekyll-include-cache (= 0.2.1)
63+
jekyll-mentions (= 1.6.0)
64+
jekyll-optional-front-matter (= 0.3.2)
65+
jekyll-paginate (= 1.1.0)
66+
jekyll-readme-index (= 0.3.0)
67+
jekyll-redirect-from (= 0.16.0)
68+
jekyll-relative-links (= 0.6.1)
69+
jekyll-remote-theme (= 0.4.3)
70+
jekyll-sass-converter (= 1.5.2)
71+
jekyll-seo-tag (= 2.8.0)
72+
jekyll-sitemap (= 1.4.0)
73+
jekyll-swiss (= 1.0.0)
74+
jekyll-theme-architect (= 0.2.0)
75+
jekyll-theme-cayman (= 0.2.0)
76+
jekyll-theme-dinky (= 0.2.0)
77+
jekyll-theme-hacker (= 0.2.0)
78+
jekyll-theme-leap-day (= 0.2.0)
79+
jekyll-theme-merlot (= 0.2.0)
80+
jekyll-theme-midnight (= 0.2.0)
81+
jekyll-theme-minimal (= 0.2.0)
82+
jekyll-theme-modernist (= 0.2.0)
83+
jekyll-theme-primer (= 0.6.0)
84+
jekyll-theme-slate (= 0.2.0)
85+
jekyll-theme-tactile (= 0.2.0)
86+
jekyll-theme-time-machine (= 0.2.0)
87+
jekyll-titles-from-headings (= 0.5.3)
88+
jemoji (= 0.13.0)
89+
kramdown (= 2.4.0)
90+
kramdown-parser-gfm (= 1.1.0)
91+
liquid (= 4.0.4)
92+
mercenary (~> 0.3)
93+
minima (= 2.5.1)
94+
nokogiri (>= 1.16.2, < 2.0)
95+
rouge (= 3.30.0)
96+
terminal-table (~> 1.4)
97+
webrick (~> 1.8)
98+
github-pages-health-check (1.18.2)
99+
addressable (~> 2.3)
100+
dnsruby (~> 1.60)
101+
octokit (>= 4, < 8)
102+
public_suffix (>= 3.0, < 6.0)
103+
typhoeus (~> 1.3)
104+
html-pipeline (2.14.3)
105+
activesupport (>= 2)
106+
nokogiri (>= 1.4)
107+
http_parser.rb (0.8.1)
108+
i18n (1.14.8)
109+
concurrent-ruby (~> 1.0)
110+
jekyll (3.10.0)
111+
addressable (~> 2.4)
112+
colorator (~> 1.0)
113+
csv (~> 3.0)
114+
em-websocket (~> 0.5)
115+
i18n (>= 0.7, < 2)
116+
jekyll-sass-converter (~> 1.0)
117+
jekyll-watch (~> 2.0)
118+
kramdown (>= 1.17, < 3)
119+
liquid (~> 4.0)
120+
mercenary (~> 0.3.3)
121+
pathutil (~> 0.9)
122+
rouge (>= 1.7, < 4)
123+
safe_yaml (~> 1.0)
124+
webrick (>= 1.0)
125+
jekyll-avatar (0.8.0)
126+
jekyll (>= 3.0, < 5.0)
127+
jekyll-coffeescript (1.2.2)
128+
coffee-script (~> 2.2)
129+
coffee-script-source (~> 1.12)
130+
jekyll-commonmark (1.4.0)
131+
commonmarker (~> 0.22)
132+
jekyll-commonmark-ghpages (0.5.1)
133+
commonmarker (>= 0.23.7, < 1.1.0)
134+
jekyll (>= 3.9, < 4.0)
135+
jekyll-commonmark (~> 1.4.0)
136+
rouge (>= 2.0, < 5.0)
137+
jekyll-default-layout (0.1.5)
138+
jekyll (>= 3.0, < 5.0)
139+
jekyll-feed (0.17.0)
140+
jekyll (>= 3.7, < 5.0)
141+
jekyll-gist (1.5.0)
142+
octokit (~> 4.2)
143+
jekyll-github-metadata (2.16.1)
144+
jekyll (>= 3.4, < 5.0)
145+
octokit (>= 4, < 7, != 4.4.0)
146+
jekyll-include-cache (0.2.1)
147+
jekyll (>= 3.7, < 5.0)
148+
jekyll-mentions (1.6.0)
149+
html-pipeline (~> 2.3)
150+
jekyll (>= 3.7, < 5.0)
151+
jekyll-optional-front-matter (0.3.2)
152+
jekyll (>= 3.0, < 5.0)
153+
jekyll-paginate (1.1.0)
154+
jekyll-readme-index (0.3.0)
155+
jekyll (>= 3.0, < 5.0)
156+
jekyll-redirect-from (0.16.0)
157+
jekyll (>= 3.3, < 5.0)
158+
jekyll-relative-links (0.6.1)
159+
jekyll (>= 3.3, < 5.0)
160+
jekyll-remote-theme (0.4.3)
161+
addressable (~> 2.0)
162+
jekyll (>= 3.5, < 5.0)
163+
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
164+
rubyzip (>= 1.3.0, < 3.0)
165+
jekyll-sass-converter (1.5.2)
166+
sass (~> 3.4)
167+
jekyll-seo-tag (2.8.0)
168+
jekyll (>= 3.8, < 5.0)
169+
jekyll-sitemap (1.4.0)
170+
jekyll (>= 3.7, < 5.0)
171+
jekyll-swiss (1.0.0)
172+
jekyll-theme-architect (0.2.0)
173+
jekyll (> 3.5, < 5.0)
174+
jekyll-seo-tag (~> 2.0)
175+
jekyll-theme-cayman (0.2.0)
176+
jekyll (> 3.5, < 5.0)
177+
jekyll-seo-tag (~> 2.0)
178+
jekyll-theme-dinky (0.2.0)
179+
jekyll (> 3.5, < 5.0)
180+
jekyll-seo-tag (~> 2.0)
181+
jekyll-theme-hacker (0.2.0)
182+
jekyll (> 3.5, < 5.0)
183+
jekyll-seo-tag (~> 2.0)
184+
jekyll-theme-leap-day (0.2.0)
185+
jekyll (> 3.5, < 5.0)
186+
jekyll-seo-tag (~> 2.0)
187+
jekyll-theme-merlot (0.2.0)
188+
jekyll (> 3.5, < 5.0)
189+
jekyll-seo-tag (~> 2.0)
190+
jekyll-theme-midnight (0.2.0)
191+
jekyll (> 3.5, < 5.0)
192+
jekyll-seo-tag (~> 2.0)
193+
jekyll-theme-minimal (0.2.0)
194+
jekyll (> 3.5, < 5.0)
195+
jekyll-seo-tag (~> 2.0)
196+
jekyll-theme-modernist (0.2.0)
197+
jekyll (> 3.5, < 5.0)
198+
jekyll-seo-tag (~> 2.0)
199+
jekyll-theme-primer (0.6.0)
200+
jekyll (> 3.5, < 5.0)
201+
jekyll-github-metadata (~> 2.9)
202+
jekyll-seo-tag (~> 2.0)
203+
jekyll-theme-slate (0.2.0)
204+
jekyll (> 3.5, < 5.0)
205+
jekyll-seo-tag (~> 2.0)
206+
jekyll-theme-tactile (0.2.0)
207+
jekyll (> 3.5, < 5.0)
208+
jekyll-seo-tag (~> 2.0)
209+
jekyll-theme-time-machine (0.2.0)
210+
jekyll (> 3.5, < 5.0)
211+
jekyll-seo-tag (~> 2.0)
212+
jekyll-titles-from-headings (0.5.3)
213+
jekyll (>= 3.3, < 5.0)
214+
jekyll-watch (2.2.1)
215+
listen (~> 3.0)
216+
jemoji (0.13.0)
217+
gemoji (>= 3, < 5)
218+
html-pipeline (~> 2.2)
219+
jekyll (>= 3.0, < 5.0)
220+
json (2.19.3)
221+
kramdown (2.4.0)
222+
rexml
223+
kramdown-parser-gfm (1.1.0)
224+
kramdown (~> 2.0)
225+
liquid (4.0.4)
226+
listen (3.10.0)
227+
logger
228+
rb-fsevent (~> 0.10, >= 0.10.3)
229+
rb-inotify (~> 0.9, >= 0.9.10)
230+
logger (1.7.0)
231+
mercenary (0.3.6)
232+
minima (2.5.1)
233+
jekyll (>= 3.5, < 5.0)
234+
jekyll-feed (~> 0.9)
235+
jekyll-seo-tag (~> 2.1)
236+
minitest (6.0.2)
237+
drb (~> 2.0)
238+
prism (~> 1.5)
239+
net-http (0.9.1)
240+
uri (>= 0.11.1)
241+
nokogiri (1.19.2-arm64-darwin)
242+
racc (~> 1.4)
243+
octokit (4.25.1)
244+
faraday (>= 1, < 3)
245+
sawyer (~> 0.9)
246+
pathutil (0.16.2)
247+
forwardable-extended (~> 2.6)
248+
prism (1.9.0)
249+
public_suffix (5.1.1)
250+
racc (1.8.1)
251+
rb-fsevent (0.11.2)
252+
rb-inotify (0.11.1)
253+
ffi (~> 1.0)
254+
rexml (3.4.4)
255+
rouge (3.30.0)
256+
rubyzip (2.4.1)
257+
safe_yaml (1.0.5)
258+
sass (3.7.4)
259+
sass-listen (~> 4.0.0)
260+
sass-listen (4.0.0)
261+
rb-fsevent (~> 0.9, >= 0.9.4)
262+
rb-inotify (~> 0.9, >= 0.9.7)
263+
sawyer (0.9.3)
264+
addressable (>= 2.3.5)
265+
faraday (>= 0.17.3, < 3)
266+
securerandom (0.4.1)
267+
simpleidn (0.2.3)
268+
terminal-table (1.8.0)
269+
unicode-display_width (~> 1.1, >= 1.1.1)
270+
typhoeus (1.6.0)
271+
ethon (>= 0.18.0)
272+
tzinfo (2.0.6)
273+
concurrent-ruby (~> 1.0)
274+
unicode-display_width (1.8.0)
275+
uri (1.1.1)
276+
webrick (1.9.2)
277+
278+
PLATFORMS
279+
arm64-darwin-23
280+
arm64-darwin-25
281+
282+
DEPENDENCIES
283+
github-pages
284+
285+
BUNDLED WITH
286+
2.4.22

flake.lock

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
description = "sourceless.org - Jekyll site";
3+
4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
};
8+
9+
outputs = { self, nixpkgs, flake-utils }:
10+
flake-utils.lib.eachDefaultSystem (system:
11+
let
12+
pkgs = nixpkgs.legacyPackages.${system};
13+
ruby = pkgs.ruby_3_3;
14+
in {
15+
devShells.default = pkgs.mkShell {
16+
buildInputs = [
17+
ruby
18+
pkgs.bundler
19+
pkgs.pkg-config
20+
pkgs.libffi
21+
pkgs.libxml2
22+
pkgs.libxslt
23+
pkgs.zlib
24+
pkgs.libyaml
25+
];
26+
27+
shellHook = ''
28+
export GEM_HOME="$PWD/.gem"
29+
export PATH="$GEM_HOME/bin:$PATH"
30+
bundle install --quiet 2>/dev/null
31+
echo "sourceless.org dev shell"
32+
echo "Run 'bundle exec jekyll serve' to start the dev server"
33+
'';
34+
};
35+
});
36+
}

0 commit comments

Comments
 (0)