A collection of easily useable/reusable nilla shells
1let
2 pins = import ./npins;
3
4 nilla = import pins.nilla;
5in
6nilla.create (
7 { config }:
8 {
9 config = {
10 inputs = {
11 fenix.src = pins.fenix;
12 nixpkgs = {
13 src = pins.nixpkgs;
14
15 settings.overlays = [
16 config.inputs.fenix.result.overlays.default
17 ];
18 };
19 treefmt-nix.src = pins.treefmt-nix;
20 };
21
22 packages.treefmt = {
23 systems = [ "x86_64-linux" ];
24
25 package =
26 { pkgs }:
27 config.inputs.treefmt-nix.result.lib.mkWrapper pkgs {
28 programs.nixfmt.enable = true;
29 };
30 };
31
32 shells.nix = {
33 systems = [ "x86_64-linux" ];
34
35 shell =
36 {
37 pkgs,
38 mkShell,
39 }:
40 mkShell {
41 packages = [
42 pkgs.nil
43 pkgs.nixd
44 config.packages.treefmt.result."x86_64-linux"
45 ];
46 };
47 };
48
49 shells.node = {
50 systems = [ "x86_64-linux" ];
51
52 shell =
53 {
54 pkgs,
55 mkShell,
56 }:
57 mkShell {
58 packages = [
59 pkgs.nodejs_24
60 pkgs.eslint_d
61 pkgs.eslint
62 pkgs.typescript
63 pkgs.typescript-language-server
64 pkgs.package-version-server
65 ];
66 };
67 };
68
69 shells.python = {
70 systems = [ "x86_64-linux" ];
71
72 shell =
73 {
74 pkgs,
75 mkShell,
76 }:
77 mkShell {
78 packages = [
79 pkgs.python314
80 pkgs.python314Packages.pip
81 ];
82 };
83 };
84
85 shells.rust = {
86 systems = [ "x86_64-linux" ];
87
88 shell =
89 {
90 bacon,
91 fenix,
92 mkShell,
93 }:
94 mkShell {
95 packages = [
96 bacon
97 (fenix.complete.withComponents [
98 "cargo"
99 "clippy"
100 "rust-src"
101 "rustc"
102 "rustfmt"
103 "rust-analyzer"
104 ])
105 ];
106 };
107 };
108
109 shells.typst = {
110 systems = [ "x86_64-linux" ];
111
112 shell =
113 {
114 pkgs,
115 mkShell,
116 }:
117 mkShell {
118 packages = [
119 pkgs.typst
120 pkgs.tinymist
121 ];
122 };
123 };
124 };
125 }
126)