1+ {
2+ description = "Jekyll development environment" ;
3+
4+ inputs = {
5+ nixpkgs . url = "github:NixOS/nixpkgs/nixos-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_2_7 ;
14+
15+ # Automatically generate gemset.nix if needed
16+ gems = if builtins . pathExists ./gemset.nix
17+ then pkgs . bundlerEnv {
18+ name = "jekyll-env" ;
19+ inherit ruby ;
20+ gemdir = ./. ;
21+ }
22+ else null ;
23+ in
24+ {
25+ devShells . default = pkgs . mkShell {
26+ buildInputs = with pkgs ; [
27+ ruby
28+ bundler
29+ bundix
30+ nodejs_20
31+ ] ++ ( if gems != null then [ gems gems . wrappedRuby ] else [ ] ) ;
32+
33+ shellHook = ''
34+ echo "Jekyll development environment loaded!"
35+ echo "Ruby version: $(ruby --version)"
36+ echo ""
37+
38+ # Check if gemset.nix exists
39+ if [ ! -f gemset.nix ]; then
40+ echo "⚠️ gemset.nix not found!"
41+ echo "Generating Gemfile.lock and gemset.nix..."
42+ echo ""
43+
44+ # Generate Gemfile.lock if it doesn't exist
45+ if [ ! -f Gemfile.lock ]; then
46+ bundle lock
47+ fi
48+
49+ # Generate gemset.nix
50+ bundix
51+
52+ echo ""
53+ echo "✅ Generated gemset.nix successfully!"
54+ echo "Please exit and re-enter the shell: exit && nix develop"
55+ echo ""
56+ else
57+ echo "Jekyll version: $(jekyll --version)"
58+ echo ""
59+ echo "Quick start commands:"
60+ echo " jekyll serve - Start development server"
61+ echo " jekyll build - Build the site"
62+ echo ""
63+ echo "To update gems after changing Gemfile:"
64+ echo " bundle lock && bundix"
65+ fi
66+ '' ;
67+ } ;
68+ }
69+ ) ;
70+ }
0 commit comments