switch from devbox to devenv for environment
6 files changed,  +162, -478
M .gitignore
+11, -0
 1@@ -1,3 +1,14 @@
 2 bin/
 3 .devbox
 4 result
 5+
 6+# Devenv
 7+.devenv*
 8+devenv.local.nix
 9+devenv.local.yaml
10+
11+# direnv
12+.direnv
13+
14+# pre-commit
15+.pre-commit-config.yaml
D devbox.json
+0, -21
 1@@ -1,21 +0,0 @@
 2-{
 3-  "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.17.1/.schema/devbox.schema.json",
 4-  "packages": [
 5-    "go@latest",
 6-    "gnumake@latest",
 7-    "ripgrep@latest",
 8-    "yarn@latest",
 9-    "bash@latest",
10-    "coreutils@latest"
11-  ],
12-  "shell": {
13-    "init_hook": [
14-      "echo 'Welcome to devbox!' > /dev/null"
15-    ],
16-    "scripts": {
17-      "test": [
18-        "echo \"Error: no test specified\" && exit 1"
19-      ]
20-    }
21-  }
22-}
D devbox.lock
+0, -457
  1@@ -1,457 +0,0 @@
  2-{
  3-  "lockfile_version": "1",
  4-  "packages": {
  5-    "bash@latest": {
  6-      "last_modified": "2026-04-07T16:32:49Z",
  7-      "resolved": "github:NixOS/nixpkgs/dfd9566f82a6e1d55c30f861879186440614696e#bash",
  8-      "source": "devbox-search",
  9-      "version": "5.3p9",
 10-      "systems": {
 11-        "aarch64-darwin": {
 12-          "outputs": [
 13-            {
 14-              "name": "out",
 15-              "path": "/nix/store/my9bsdsfxcaxkb400i4xvvh1ahb8pybs-bash-interactive-5.3p9",
 16-              "default": true
 17-            },
 18-            {
 19-              "name": "man",
 20-              "path": "/nix/store/5nwbrxj440mxkv8sqzy3d9xsfpswhkkx-bash-interactive-5.3p9-man",
 21-              "default": true
 22-            },
 23-            {
 24-              "name": "dev",
 25-              "path": "/nix/store/047i8vx61kv70j0xahh65x1p0gs4bzp5-bash-interactive-5.3p9-dev"
 26-            },
 27-            {
 28-              "name": "doc",
 29-              "path": "/nix/store/p8v2kq7q82l8cz5axc9lvyj2klib1799-bash-interactive-5.3p9-doc"
 30-            },
 31-            {
 32-              "name": "info",
 33-              "path": "/nix/store/bqh3ll20jibzdrc42lclk29k144fanak-bash-interactive-5.3p9-info"
 34-            }
 35-          ],
 36-          "store_path": "/nix/store/my9bsdsfxcaxkb400i4xvvh1ahb8pybs-bash-interactive-5.3p9"
 37-        },
 38-        "aarch64-linux": {
 39-          "outputs": [
 40-            {
 41-              "name": "out",
 42-              "path": "/nix/store/f6lsdzsgbh5mxaaa91gykyi8mqmlzpr2-bash-interactive-5.3p9",
 43-              "default": true
 44-            },
 45-            {
 46-              "name": "man",
 47-              "path": "/nix/store/87ljrnbjn8w6iqf3bzirh6wd7lpmhvzp-bash-interactive-5.3p9-man",
 48-              "default": true
 49-            },
 50-            {
 51-              "name": "debug",
 52-              "path": "/nix/store/zyi5m4r7wma9vvvfzg7r99avh8sxg9m1-bash-interactive-5.3p9-debug"
 53-            },
 54-            {
 55-              "name": "dev",
 56-              "path": "/nix/store/hkmlf3zy6brfn3xr3magif6c54ln3z4c-bash-interactive-5.3p9-dev"
 57-            },
 58-            {
 59-              "name": "doc",
 60-              "path": "/nix/store/l7bcjyprsmzdnrimjg8al47wsr4vsy6q-bash-interactive-5.3p9-doc"
 61-            },
 62-            {
 63-              "name": "info",
 64-              "path": "/nix/store/cad8ahawmbf12gvh0bq7sf9rjjwbfzg9-bash-interactive-5.3p9-info"
 65-            }
 66-          ],
 67-          "store_path": "/nix/store/f6lsdzsgbh5mxaaa91gykyi8mqmlzpr2-bash-interactive-5.3p9"
 68-        },
 69-        "x86_64-darwin": {
 70-          "outputs": [
 71-            {
 72-              "name": "out",
 73-              "path": "/nix/store/hzc40jxl7zhc1cikxri178a4w6f4fzd6-bash-interactive-5.3p9",
 74-              "default": true
 75-            },
 76-            {
 77-              "name": "man",
 78-              "path": "/nix/store/8lp42ghh8l89v5kj6q5asbfdskssgcxn-bash-interactive-5.3p9-man",
 79-              "default": true
 80-            },
 81-            {
 82-              "name": "dev",
 83-              "path": "/nix/store/jfiwg11dqs0vzg45s58kkabjm0rm8d0c-bash-interactive-5.3p9-dev"
 84-            },
 85-            {
 86-              "name": "doc",
 87-              "path": "/nix/store/rlz86kfy3jxfi7ap587rhrm9ynbw2kvc-bash-interactive-5.3p9-doc"
 88-            },
 89-            {
 90-              "name": "info",
 91-              "path": "/nix/store/d9y32zx4cxwm3h20c0zrzsabjmws3z0m-bash-interactive-5.3p9-info"
 92-            }
 93-          ],
 94-          "store_path": "/nix/store/hzc40jxl7zhc1cikxri178a4w6f4fzd6-bash-interactive-5.3p9"
 95-        },
 96-        "x86_64-linux": {
 97-          "outputs": [
 98-            {
 99-              "name": "out",
100-              "path": "/nix/store/sfvyavxai6qvzmv9p9x6mp4wwdz4v41m-bash-interactive-5.3p9",
101-              "default": true
102-            },
103-            {
104-              "name": "man",
105-              "path": "/nix/store/lw0v8hggdjsqs9zpwwrxajcc4rbsmlfq-bash-interactive-5.3p9-man",
106-              "default": true
107-            },
108-            {
109-              "name": "debug",
110-              "path": "/nix/store/h979dcfkxhswbsdqcwqbzynaqnz1n5a0-bash-interactive-5.3p9-debug"
111-            },
112-            {
113-              "name": "dev",
114-              "path": "/nix/store/832yrsfhq3z41zn9rqsvv0cv22mblv4c-bash-interactive-5.3p9-dev"
115-            },
116-            {
117-              "name": "doc",
118-              "path": "/nix/store/fy5pa2zv8g7l3v0nn6rpwib8nl4whdx1-bash-interactive-5.3p9-doc"
119-            },
120-            {
121-              "name": "info",
122-              "path": "/nix/store/p9lkzmrvl0wqjs4mjv87h5lqcypgrzbp-bash-interactive-5.3p9-info"
123-            }
124-          ],
125-          "store_path": "/nix/store/sfvyavxai6qvzmv9p9x6mp4wwdz4v41m-bash-interactive-5.3p9"
126-        }
127-      }
128-    },
129-    "coreutils@latest": {
130-      "last_modified": "2026-04-06T17:08:15Z",
131-      "resolved": "github:NixOS/nixpkgs/ff048610a1b698607a66f4671821716c2272dc9f#coreutils",
132-      "source": "devbox-search",
133-      "version": "9.10",
134-      "systems": {
135-        "aarch64-darwin": {
136-          "outputs": [
137-            {
138-              "name": "out",
139-              "path": "/nix/store/akih5l2yxpzqyh63xvyc6zsxl7kl2x4v-coreutils-9.10",
140-              "default": true
141-            },
142-            {
143-              "name": "info",
144-              "path": "/nix/store/rqr62g2a1dl14qg090lixy4kyalamxnc-coreutils-9.10-info"
145-            }
146-          ],
147-          "store_path": "/nix/store/akih5l2yxpzqyh63xvyc6zsxl7kl2x4v-coreutils-9.10"
148-        },
149-        "aarch64-linux": {
150-          "outputs": [
151-            {
152-              "name": "out",
153-              "path": "/nix/store/f03gf7yy36rlr9n1wkblvikq12a3hg6c-coreutils-9.10",
154-              "default": true
155-            },
156-            {
157-              "name": "debug",
158-              "path": "/nix/store/l7pb1mavzin4hmwpp87f6xisfprrgnr2-coreutils-9.10-debug"
159-            },
160-            {
161-              "name": "info",
162-              "path": "/nix/store/802yhcvnd2kp712af4v48klcxqzjgdkp-coreutils-9.10-info"
163-            }
164-          ],
165-          "store_path": "/nix/store/f03gf7yy36rlr9n1wkblvikq12a3hg6c-coreutils-9.10"
166-        },
167-        "x86_64-darwin": {
168-          "outputs": [
169-            {
170-              "name": "out",
171-              "path": "/nix/store/33dari5qaqpza7z0yhyzrjg85xmclg8c-coreutils-9.10",
172-              "default": true
173-            },
174-            {
175-              "name": "info",
176-              "path": "/nix/store/mybh7m3jhp3hzp83hsz8aj6w7wr49hxv-coreutils-9.10-info"
177-            }
178-          ],
179-          "store_path": "/nix/store/33dari5qaqpza7z0yhyzrjg85xmclg8c-coreutils-9.10"
180-        },
181-        "x86_64-linux": {
182-          "outputs": [
183-            {
184-              "name": "out",
185-              "path": "/nix/store/74sind1d6vf2bfwd7yklg8chsvzqxmmq-coreutils-9.10",
186-              "default": true
187-            },
188-            {
189-              "name": "debug",
190-              "path": "/nix/store/hm1z5hlgc4p99s3vng7g69cqgdn1j93h-coreutils-9.10-debug"
191-            },
192-            {
193-              "name": "info",
194-              "path": "/nix/store/c5dpvsjmin1cx3ma6jizdzb26bx2avdl-coreutils-9.10-info"
195-            }
196-          ],
197-          "store_path": "/nix/store/74sind1d6vf2bfwd7yklg8chsvzqxmmq-coreutils-9.10"
198-        }
199-      }
200-    },
201-    "github:NixOS/nixpkgs/nixpkgs-unstable": {
202-      "last_modified": "2026-03-16T02:27:38Z",
203-      "resolved": "github:NixOS/nixpkgs/f8573b9c935cfaa162dd62cc9e75ae2db86f85df?lastModified=1773628058&narHash=sha256-hpXH0z3K9xv0fHaje136KY872VT2T5uwxtezlAskQgY%3D"
204-    },
205-    "gnumake@latest": {
206-      "last_modified": "2026-04-06T17:08:15Z",
207-      "resolved": "github:NixOS/nixpkgs/ff048610a1b698607a66f4671821716c2272dc9f#gnumake",
208-      "source": "devbox-search",
209-      "version": "4.4.1",
210-      "systems": {
211-        "aarch64-darwin": {
212-          "outputs": [
213-            {
214-              "name": "out",
215-              "path": "/nix/store/y40n7jzzy9qydb120kxgbzi55mprbkfm-gnumake-4.4.1",
216-              "default": true
217-            },
218-            {
219-              "name": "man",
220-              "path": "/nix/store/b2y9y7i57sml44mk7wl4ba8wr8adgavs-gnumake-4.4.1-man",
221-              "default": true
222-            },
223-            {
224-              "name": "doc",
225-              "path": "/nix/store/hb81l6za1swj09szhxj902bjf9b9cwzc-gnumake-4.4.1-doc"
226-            },
227-            {
228-              "name": "info",
229-              "path": "/nix/store/xynyfhcn9r7jd4iakdr71yb6grabjgf7-gnumake-4.4.1-info"
230-            }
231-          ],
232-          "store_path": "/nix/store/y40n7jzzy9qydb120kxgbzi55mprbkfm-gnumake-4.4.1"
233-        },
234-        "aarch64-linux": {
235-          "outputs": [
236-            {
237-              "name": "out",
238-              "path": "/nix/store/j8hf0sbds6y5il4vb2bz3rx0xivmnsl1-gnumake-4.4.1",
239-              "default": true
240-            },
241-            {
242-              "name": "man",
243-              "path": "/nix/store/j4psv3ifmnw0wa8p38rxv5k6vskz4wcs-gnumake-4.4.1-man",
244-              "default": true
245-            },
246-            {
247-              "name": "debug",
248-              "path": "/nix/store/px43zlq4bz3zjmc91b6wb6949c8dfxvi-gnumake-4.4.1-debug"
249-            },
250-            {
251-              "name": "doc",
252-              "path": "/nix/store/jhss2k9jczl72jk284kvaj9303yvylwy-gnumake-4.4.1-doc"
253-            },
254-            {
255-              "name": "info",
256-              "path": "/nix/store/1qf6j3yza10lw1iy9w0qm9gliqzfw6xk-gnumake-4.4.1-info"
257-            }
258-          ],
259-          "store_path": "/nix/store/j8hf0sbds6y5il4vb2bz3rx0xivmnsl1-gnumake-4.4.1"
260-        },
261-        "x86_64-darwin": {
262-          "outputs": [
263-            {
264-              "name": "out",
265-              "path": "/nix/store/bijx0sq7avqq7apvqsfb3lmza97lpcxz-gnumake-4.4.1",
266-              "default": true
267-            },
268-            {
269-              "name": "man",
270-              "path": "/nix/store/r2qnj53aynk05zan3z2j960klx7085dq-gnumake-4.4.1-man",
271-              "default": true
272-            },
273-            {
274-              "name": "doc",
275-              "path": "/nix/store/2fz6r9nchhyn4i7f9gg5assx9ld2j3mm-gnumake-4.4.1-doc"
276-            },
277-            {
278-              "name": "info",
279-              "path": "/nix/store/h0jgx7zbyyvhcj0lq0la6siv4d3bl9xa-gnumake-4.4.1-info"
280-            }
281-          ],
282-          "store_path": "/nix/store/bijx0sq7avqq7apvqsfb3lmza97lpcxz-gnumake-4.4.1"
283-        },
284-        "x86_64-linux": {
285-          "outputs": [
286-            {
287-              "name": "out",
288-              "path": "/nix/store/45npani18v2m7sbkrzrv2xyilyghrny9-gnumake-4.4.1",
289-              "default": true
290-            },
291-            {
292-              "name": "man",
293-              "path": "/nix/store/p75qwzzsxdhpnhdjx4fbjy20p9qxp326-gnumake-4.4.1-man",
294-              "default": true
295-            },
296-            {
297-              "name": "debug",
298-              "path": "/nix/store/bzap48lhfqcjczhj2ry3gwqjh9klkgxf-gnumake-4.4.1-debug"
299-            },
300-            {
301-              "name": "doc",
302-              "path": "/nix/store/0jx03f9vis4zp8b7s2ybp9anlgk68ihy-gnumake-4.4.1-doc"
303-            },
304-            {
305-              "name": "info",
306-              "path": "/nix/store/pbs6fhcn3gjr6x9fzdlk0kwqg1m5gk5g-gnumake-4.4.1-info"
307-            }
308-          ],
309-          "store_path": "/nix/store/45npani18v2m7sbkrzrv2xyilyghrny9-gnumake-4.4.1"
310-        }
311-      }
312-    },
313-    "go@latest": {
314-      "last_modified": "2026-03-21T07:29:51Z",
315-      "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#go",
316-      "source": "devbox-search",
317-      "version": "1.26.1",
318-      "systems": {
319-        "aarch64-darwin": {
320-          "outputs": [
321-            {
322-              "name": "out",
323-              "path": "/nix/store/kh43nhaz1qcpwws2xq805lrmwpmn9i3k-go-1.26.1",
324-              "default": true
325-            }
326-          ],
327-          "store_path": "/nix/store/kh43nhaz1qcpwws2xq805lrmwpmn9i3k-go-1.26.1"
328-        },
329-        "aarch64-linux": {
330-          "outputs": [
331-            {
332-              "name": "out",
333-              "path": "/nix/store/rz1pqbm5z3zfby250i0djfmfzzj7khg9-go-1.26.1",
334-              "default": true
335-            }
336-          ],
337-          "store_path": "/nix/store/rz1pqbm5z3zfby250i0djfmfzzj7khg9-go-1.26.1"
338-        },
339-        "x86_64-darwin": {
340-          "outputs": [
341-            {
342-              "name": "out",
343-              "path": "/nix/store/yv6jj27racylbfjw6a1cdr91ndxbgyf6-go-1.26.1",
344-              "default": true
345-            }
346-          ],
347-          "store_path": "/nix/store/yv6jj27racylbfjw6a1cdr91ndxbgyf6-go-1.26.1"
348-        },
349-        "x86_64-linux": {
350-          "outputs": [
351-            {
352-              "name": "out",
353-              "path": "/nix/store/ckcq2mj8zk0drhaaacy6mp9d924hnr4m-go-1.26.1",
354-              "default": true
355-            }
356-          ],
357-          "store_path": "/nix/store/ckcq2mj8zk0drhaaacy6mp9d924hnr4m-go-1.26.1"
358-        }
359-      }
360-    },
361-    "ripgrep@latest": {
362-      "last_modified": "2026-03-21T07:29:51Z",
363-      "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#ripgrep",
364-      "source": "devbox-search",
365-      "version": "15.1.0",
366-      "systems": {
367-        "aarch64-darwin": {
368-          "outputs": [
369-            {
370-              "name": "out",
371-              "path": "/nix/store/qx2i265ck9hi773q0hhg96bjchkghpgm-ripgrep-15.1.0",
372-              "default": true
373-            }
374-          ],
375-          "store_path": "/nix/store/qx2i265ck9hi773q0hhg96bjchkghpgm-ripgrep-15.1.0"
376-        },
377-        "aarch64-linux": {
378-          "outputs": [
379-            {
380-              "name": "out",
381-              "path": "/nix/store/p16w1972rd9hj2kdczmdlwv0wa8c0drf-ripgrep-15.1.0",
382-              "default": true
383-            }
384-          ],
385-          "store_path": "/nix/store/p16w1972rd9hj2kdczmdlwv0wa8c0drf-ripgrep-15.1.0"
386-        },
387-        "x86_64-darwin": {
388-          "outputs": [
389-            {
390-              "name": "out",
391-              "path": "/nix/store/hm6mgwzrdznpadk6nxzmlls1p534m2d3-ripgrep-15.1.0",
392-              "default": true
393-            }
394-          ],
395-          "store_path": "/nix/store/hm6mgwzrdznpadk6nxzmlls1p534m2d3-ripgrep-15.1.0"
396-        },
397-        "x86_64-linux": {
398-          "outputs": [
399-            {
400-              "name": "out",
401-              "path": "/nix/store/922crn2k3v8yaqk7anps80hba919lnds-ripgrep-15.1.0",
402-              "default": true
403-            }
404-          ],
405-          "store_path": "/nix/store/922crn2k3v8yaqk7anps80hba919lnds-ripgrep-15.1.0"
406-        }
407-      }
408-    },
409-    "yarn@latest": {
410-      "last_modified": "2026-03-21T07:29:51Z",
411-      "resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#yarn",
412-      "source": "devbox-search",
413-      "version": "1.22.22",
414-      "systems": {
415-        "aarch64-darwin": {
416-          "outputs": [
417-            {
418-              "name": "out",
419-              "path": "/nix/store/59yqhmvbl7bsyv5qc30nmrpaf4iqj79h-yarn-1.22.22",
420-              "default": true
421-            }
422-          ],
423-          "store_path": "/nix/store/59yqhmvbl7bsyv5qc30nmrpaf4iqj79h-yarn-1.22.22"
424-        },
425-        "aarch64-linux": {
426-          "outputs": [
427-            {
428-              "name": "out",
429-              "path": "/nix/store/ybspc2b9q9j9drfpa5d1bmw2qgrkx4qc-yarn-1.22.22",
430-              "default": true
431-            }
432-          ],
433-          "store_path": "/nix/store/ybspc2b9q9j9drfpa5d1bmw2qgrkx4qc-yarn-1.22.22"
434-        },
435-        "x86_64-darwin": {
436-          "outputs": [
437-            {
438-              "name": "out",
439-              "path": "/nix/store/8j2xmk7ijy7nijpy2yc3mcjf7hxpnpyl-yarn-1.22.22",
440-              "default": true
441-            }
442-          ],
443-          "store_path": "/nix/store/8j2xmk7ijy7nijpy2yc3mcjf7hxpnpyl-yarn-1.22.22"
444-        },
445-        "x86_64-linux": {
446-          "outputs": [
447-            {
448-              "name": "out",
449-              "path": "/nix/store/g1ksanljq7v16gj8yb7zs6wkv7ikycy3-yarn-1.22.22",
450-              "default": true
451-            }
452-          ],
453-          "store_path": "/nix/store/g1ksanljq7v16gj8yb7zs6wkv7ikycy3-yarn-1.22.22"
454-        }
455-      }
456-    }
457-  }
458-}
A devenv.lock
+65, -0
 1@@ -0,0 +1,65 @@
 2+{
 3+  "nodes": {
 4+    "devenv": {
 5+      "locked": {
 6+        "dir": "src/modules",
 7+        "lastModified": 1789152246,
 8+        "narHash": "sha256-8ESHEGygXS5lmDepm5cMbmVd8DjcwgwzsmjHc9ffY1c=",
 9+        "owner": "cachix",
10+        "repo": "devenv",
11+        "rev": "6e323832a55097670dbd8eed04b1e63efc841dfa",
12+        "type": "github"
13+      },
14+      "original": {
15+        "dir": "src/modules",
16+        "owner": "cachix",
17+        "repo": "devenv",
18+        "type": "github"
19+      }
20+    },
21+    "nixpkgs": {
22+      "inputs": {
23+        "nixpkgs-src": "nixpkgs-src"
24+      },
25+      "locked": {
26+        "lastModified": 1787753358,
27+        "narHash": "sha256-Tl77VbWyAKrOfRNQhL6JbQtb/MLzbYa/1RG1gWWfICk=",
28+        "owner": "cachix",
29+        "repo": "devenv-nixpkgs",
30+        "rev": "256551e45f6303e142ab4a98be1bf243feb77dc0",
31+        "type": "github"
32+      },
33+      "original": {
34+        "owner": "cachix",
35+        "ref": "rolling",
36+        "repo": "devenv-nixpkgs",
37+        "type": "github"
38+      }
39+    },
40+    "nixpkgs-src": {
41+      "flake": false,
42+      "locked": {
43+        "lastModified": 1787394516,
44+        "narHash": "sha256-pRGOQSClnXNI2iLUG6DYpsGvYcuw0drOutVZFTJNw90=",
45+        "owner": "NixOS",
46+        "repo": "nixpkgs",
47+        "rev": "c8f90650c15282fa8656a041bfbbd2403997a9a7",
48+        "type": "github"
49+      },
50+      "original": {
51+        "owner": "NixOS",
52+        "ref": "nixpkgs-unstable",
53+        "repo": "nixpkgs",
54+        "type": "github"
55+      }
56+    },
57+    "root": {
58+      "inputs": {
59+        "devenv": "devenv",
60+        "nixpkgs": "nixpkgs"
61+      }
62+    }
63+  },
64+  "root": "root",
65+  "version": 7
66+}
A devenv.nix
+68, -0
 1@@ -0,0 +1,68 @@
 2+{ pkgs, lib, config, inputs, ... }:
 3+
 4+{
 5+  # https://devenv.sh/basics/
 6+  env.ENV = "development";
 7+
 8+  # https://devenv.sh/packages/
 9+  packages = [
10+    pkgs.jujutsu
11+    pkgs.gnumake
12+    pkgs.go
13+    pkgs.golangci-lint
14+    pkgs.bash
15+    pkgs.bashInteractive
16+    pkgs.bash-completion
17+  ];
18+
19+  # https://devenv.sh/languages/
20+  # languages.rust.enable = true;
21+
22+  # https://devenv.sh/processes/
23+  # processes.dev.exec = "${lib.getExe pkgs.watchexec} -n -- ls -la";
24+
25+  # https://devenv.sh/services/
26+  # services.postgres.enable = true;
27+
28+
29+  # https://devenv.sh/basics/
30+  enterShell = ''
31+    # Configure bash with fish-like features
32+    bind 'set completion-ignore-case on'  # Case-insensitive completion
33+    bind 'set show-all-if-ambiguous on'   # Show all completions on first tab
34+    bind 'set menu-complete-display-prefix on'
35+    bind 'TAB:menu-complete'              # Tab cycles through completions
36+    bind '\e[A:history-search-backward'   # Up arrow searches history
37+    bind '\e[B:history-search-forward'    # Down arrow searches history
38+    bind 'set colored-completion-prefix on'  # Color the completion prefix
39+    bind 'set colored-stats on'           # Color the completion stats
40+
41+    # Enable bash-completion if available
42+    if [ -f ${pkgs.bash-completion}/etc/profile.d/bash_completion.sh ]; then
43+      source ${pkgs.bash-completion}/etc/profile.d/bash_completion.sh
44+    fi
45+
46+    # Better directory navigation
47+    shopt -s autocd 2>/dev/null          # Type directory name to cd
48+    shopt -s dirspell 2>/dev/null        # Correct spelling of dir names
49+    shopt -s cdspell 2>/dev/null         # Correct spelling of cd args
50+
51+    # Enable ** globbing for recursive directory matching
52+    shopt -s globstar 2>/dev/null
53+  '';
54+
55+  # https://devenv.sh/tasks/
56+  # tasks = {
57+  #   "myproj:setup".exec = "mytool build";
58+  #   "devenv:enterShell".after = [ "myproj:setup" ];
59+  # };
60+
61+  # https://devenv.sh/tests/
62+  enterTest = ''
63+  '';
64+
65+  # https://devenv.sh/git-hooks/
66+  # git-hooks.hooks.shellcheck.enable = true;
67+
68+  # See full reference at https://devenv.sh/reference/options/
69+}
A devenv.yaml
+18, -0
 1@@ -0,0 +1,18 @@
 2+# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
 3+inputs:
 4+  nixpkgs:
 5+    url: github:cachix/devenv-nixpkgs/rolling
 6+
 7+# If you're using non-OSS software, you can set allow_unfree to true.
 8+# allow_unfree: true
 9+
10+# If you're not willing to allow unsupported packages:
11+# allow_unsupported_system: false
12+
13+# If you're willing to use a package that's vulnerable
14+# permitted_insecure_packages:
15+#  - "openssl-1.1.1w"
16+
17+# If you have more than one devenv you can merge them
18+#imports:
19+# - ./backend