Code change:
One uses to create a new tree of files for generating a web site. So the intent is to edit those files. But the files produced are read-only, so user must do a before each new file can be edited. I haven't looked at the source yet, but I imagine this is because jekyll copies the site template out of an installed gem or something, and all the files there are 444 (read-only) because it's in the Nix store. System: NixOS 16.09.1600. (Flounder) Nix version: nix-env (Nix) 1.11.6 Nixpkgs version: 16.09.1698.
Have you tried reporting this upstream?
I have not. Will consider that – it seems that a fix would be a one-liner after to do or so. But I'm not able to test easily if that's all that would be needed – the nixpkgs expression is quite behind, carrying jekyll 3.0.1 when current release is 3.4.1. I tried updating too, but ran into bundler problems, and I don't know much about ruby.
You seem to have idea how to fix it. Should really bring this up with upstream. I don't know much about ruby, but nixpkgs manual has a step by step guide: Turned out to be very easy:
So I ran into bundler problems)
Ok, I've pushed a workaround for that

Related discussion:
text: { <del> "RedCloth" = { version = "4.2.9"; </del> <ins> addressable = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "1j5r0anj8m4qlf2psnldip4b8ha2bsscv11lpdgnfh4nnchzjnxw"; </ins> type = "gem"; <del> sha256 = "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl"; </del> }; <ins> version = "2.5.0"; </ins> }; <del> "colorator" = { version = "0.1"; </del> <ins> colorator = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; </ins> type = "gem"; <del> sha256 = "09zp15hyd9wlbgf1kmrf4rnry8cpvh1h9fj7afarlqcy4hrfdpvs"; </del> }; <ins> version = "1.1.0"; </ins> }; <del> "ffi" = { version = "1.9.10"; </del> <ins> ffi = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0"; </ins> type = "gem"; <del> sha256 = "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj"; </del> }; <ins> version = "1.9.18"; </ins> }; <del> "jekyll" = { version = "3.0.1"; </del> <ins> forwardable-extended = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; </ins> type = "gem"; <del> sha256 = "107svn6r7pvkg9wwfi4r44d2rqppysjf9zf09h7z1ajsy8k2s65a"; </del> }; <del> dependencies = [ "colorator" "jekyll-sass-converter" "jekyll-watch" "jekyll-paginate" "kramdown" "liquid" "mercenary" "rouge" "safe_yaml" ]; </del> <ins> version = "2.6.0"; </ins> }; <del> "jekyll-sass-converter" = { version = "1.4.0"; </del> <ins> jekyll = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "0qbnjx7bpshbcam6p9ss2g6gpd3gxz6h4w9yszphj3ip335yhawb"; </ins> type = "gem"; <del> sha256 = "095757w0pg6qh3wlfg1j1mw4fsz7s89ia4zai5f2rhx9yxsvk1d8"; </del> }; <del> dependencies = [ "sass" ]; </del> <ins> version = "3.4.1"; </ins> }; <del> "jekyll-watch" = { version = "1.3.0"; </del> <ins> jekyll-feed = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "1dj62gy1jskkn703mi5h0bkg1psbpkdm2qqdw3bhjfid9358qvay"; </ins> type = "gem"; <del> sha256 = "1mqwvrd2hm6ah5zsxqsv2xdp31wl94pl8ybb1q324j79z8pvyarg"; </del> }; <del> dependencies = [ "listen" ]; </del> <ins> version = "0.9.1"; </ins> }; <del> "jekyll-paginate" = { </del> <ins> jekyll-paginate = { source = { sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; type = "gem"; }; </ins> version = "1.1.0"; <ins> }; jekyll-sass-converter = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "01m921763yfgx1gc33k5ixqz623f4c4azgnpqhgsc2q61fyfk3q1"; </ins> type = "gem"; <del> sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; </del> }; <ins> version = "1.5.0"; </ins> }; <del> "kramdown" = { version = "1.9.0"; </del> <ins> jekyll-watch = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "02rg3wi95w2l0bg1igl5k6pza723vn2b2gj975gycz1cpmhdjn6z"; </ins> type = "gem"; <del> sha256 = "12sral2xli39mnr4b9m2sxdlgam4ni0a1mkxawc5311z107zj3p0"; </del> }; <ins> version = "1.5.0"; </ins> }; <del> "liquid" = { version = "3.0.6"; </del> <ins> kramdown = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "1isiqc40q44zg57bd6cfnw1a2l0s2j5skw2awn2cz3gcm7wsf49d"; </ins> type = "gem"; <ins> }; version = "1.13.2"; }; liquid = { source = { </ins> sha256 = "033png37ym4jrjz5bi7zb4ic4yxacwvnllm1xxmrnr4swgyyygc2"; <ins> type = "gem"; </ins> }; <ins> version = "3.0.6"; </ins> }; <del> "listen" = { version = "3.0.5"; </del> <ins> listen = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"; </ins> type = "gem"; <del> sha256 = "182wd2pkf690ll19lx6zbk01a3rqkk5lwsyin6kwydl7lqxj5z3g"; </del> }; <del> dependencies = [ "rb-fsevent" "rb-inotify" ]; </del> <ins> version = "3.0.8"; </ins> }; <del> "mercenary" = { version = "0.3.5"; </del> <ins> mercenary = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"; </ins> type = "gem"; <del> sha256 = "0ls7z086v4xl02g4ia5jhl9s76d22crgmplpmj0c383liwbqi9pb"; </del> }; <ins> version = "0.3.6"; </ins> }; <del> "rb-fsevent" = { version = "0.9.7"; </del> <ins> minima = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "1s7ks9fqfvqx7qicnkrg76wavg9mjas52f7iyhr89lz9mqiy7p39"; </ins> type = "gem"; <del> sha256 = "1xlkflgxngwkd4nyybccgd1japrba4v3kwnp00alikj404clqx4v"; </del> }; <ins> version = "2.1.0"; </ins> }; <del> "rb-inotify" = { version = "0.9.5"; </del> <ins> pathutil = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "0f444wx6vjd30lkkb2zn1k5a6g33lidrpyy7lmgy66n1gsiipzn7"; </ins> type = "gem"; <del> sha256 = "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9"; </del> }; <del> dependencies = [ "ffi" ]; </del> <ins> version = "0.14.0"; </ins> }; <del> "rdiscount" = { version = "2.1.8"; </del> <ins> public_suffix = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q"; </ins> type = "gem"; <del> sha256 = "0vcyy90r6wfg0b0y5wqp3d25bdyqjbwjhkm1xy9jkz9a7j72n70v"; </del> }; <ins> version = "2.0.5"; </ins> }; <del> "rouge" = { version = "1.10.1"; </del> <ins> rb-fsevent = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "1pdiasp9zlr306yld19szapi6kdjk38rpv1hih9x0ry40x6mb63n"; </ins> type = "gem"; <del> sha256 = "0wp8as9ypdy18kdj9h70kny1rdfq71mr8cj2bpahr9vxjjvjasqz"; </del> }; <ins> version = "0.9.8"; </ins> }; <del> "safe_yaml" = { version = "1.0.4"; </del> <ins> rb-inotify = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "0bq14f3md5nm00kgxgf0r9lcbn0vgbwljgajif0slxcwv622fjg9"; </ins> type = "gem"; <ins> }; version = "0.9.8"; }; rdiscount = { source = { remotes = ["https://rubygems.org"]; sha256 = "1arvk3k06prxasq1djbj065ixar4zl171340g7wr1ww4gj9makx3"; type = "gem"; }; version = "2.2.0.1"; }; RedCloth = { source = { remotes = ["https://rubygems.org"]; sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"; type = "gem"; }; version = "4.3.2"; }; rouge = { source = { remotes = ["https://rubygems.org"]; sha256 = "13amckbdknnc5491ag28y8pqbyfpbzx5n4rlmadxhd3wkrhp92c8"; type = "gem"; }; version = "1.11.1"; }; safe_yaml = { source = { </ins> sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"; <ins> type = "gem"; </ins> }; <ins> version = "1.0.4"; </ins> }; <del> "sass" = { version = "3.4.20"; </del> <ins> sass = { </ins> source = { <ins> remotes = ["https://rubygems.org"]; sha256 = "0da4mn3n60cm1ss1pw1rrpa7fxagglxiwcgvz1asf1qgf4mvcwyr"; </ins> type = "gem"; <del> sha256 = "04rpdcp258arh2wgdk9shbqnzd6cbbbpi3wpi9a0wby8awgpxmyf"; </del> }; <ins> version = "3.4.23"; </ins> }; <del> } </del> <ins> } </ins>  No newline at end of file