Skip to content

Commit f844bdf

Browse files
committed
refactor for better runtime dep management
1 parent 5d8c198 commit f844bdf

2 files changed

Lines changed: 83 additions & 45 deletions

File tree

templates/ed/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
.nvimcom
2+
.commandcode/

templates/ed/flake.nix

Lines changed: 82 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
rPackages = pkgs:
2929
(with pkgs.rpkgs.rPackages; [
3030
fixest
31-
# pkgs.extraRPackages.musicMetadata
3231
])
3332
++ (
3433
if builtins.pathExists ./r-packages.nix
@@ -58,11 +57,89 @@
5857
else []
5958
);
6059

60+
# ── Per-language runtime dependencies ──────────────────────────
61+
# Single source of truth for system/toolchain packages that
62+
# flow to both runtimePkgs (wrapper PATH) and devShells.
63+
mkRuntimeDeps = pkgs: {
64+
always = [
65+
pkgs.git
66+
pkgs.pre-commit
67+
pkgs.cowsay
68+
];
69+
nix = [
70+
pkgs.nil
71+
pkgs.nixfmt
72+
];
73+
r = let
74+
r_packages = (pkgs.baseRPackages or []) ++ rPackages pkgs;
75+
in [
76+
(pkgs.rWrapper.override {packages = r_packages;})
77+
pkgs.radianWrapper
78+
pkgs.air-formatter
79+
pkgs.yaml-language-server
80+
pkgs.nvimcom
81+
pkgs.rnvimserver
82+
];
83+
python = [
84+
(pkgs.python3.withPackages (ps:
85+
(pkgs.basePythonPackages or (_: [])) ps
86+
++ pythonPackages pkgs))
87+
pkgs.nodejs
88+
pkgs.ruff
89+
pkgs.basedpyright
90+
pkgs.uv
91+
];
92+
julia = [
93+
(pkgs.julia-bin.withPackages juliaPackages)
94+
];
95+
markdown = let
96+
r_packages = (pkgs.baseRPackages or []) ++ rPackages pkgs;
97+
quarto =
98+
if cats.r
99+
then pkgs.quarto.override {extraRPackages = r_packages;}
100+
else pkgs.quarto;
101+
in [
102+
pkgs.python313Packages.pylatexenc
103+
quarto
104+
pkgs.zk
105+
];
106+
};
107+
108+
enabledRuntimeDeps = pkgs: let
109+
deps = mkRuntimeDeps pkgs;
110+
in
111+
deps.always
112+
++ (
113+
if cats.nix
114+
then deps.nix
115+
else []
116+
)
117+
++ (
118+
if cats.r
119+
then deps.r
120+
else []
121+
)
122+
++ (
123+
if cats.python
124+
then deps.python
125+
else []
126+
)
127+
++ (
128+
if cats.julia
129+
then deps.julia
130+
else []
131+
)
132+
++ (
133+
if cats.markdown
134+
then deps.markdown
135+
else []
136+
);
137+
61138
systems = ["aarch64-darwin" "x86_64-linux" "aarch64-linux"];
62139
forAllSystems = nixpkgs.lib.genAttrs systems;
63140
overlays = [inputs.nvimConfig.overlays.dependencies];
64141
in {
65-
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
142+
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt);
66143

67144
packages = forAllSystems (system: let
68145
pkgs = import nixpkgs {
@@ -92,12 +169,10 @@
92169
IS_PROJECT_EDITOR = "1";
93170
};
94171

95-
runtimePkgs = with pkgs; [
96-
cowsay
97-
];
172+
runtimePkgs = enabledRuntimeDeps pkgs;
98173

99174
specs.extraLua = let
100-
name = builtins.baseNameOf (builtins.toString ./.);
175+
name = builtins.baseNameOf (builtins.toString "${self.outPath}");
101176
in {
102177
data = pkgs.vimPlugins.mini-notify;
103178
before = ["INIT_MAIN"];
@@ -137,47 +212,9 @@
137212
packages =
138213
[
139214
nv
140-
pkgs.git
141-
pkgs.pre-commit
142215
pkgs.nushell
143216
]
144-
# ── R toolchain (R REPL, quarto, LSP, formatter) ─────
145-
++ pkgs.lib.optionals cats.r (let
146-
r_packages = (pkgs.baseRPackages or []) ++ rPackages pkgs;
147-
in [
148-
(pkgs.rWrapper.override {packages = r_packages;})
149-
pkgs.radianWrapper
150-
pkgs.air-formatter
151-
pkgs.yaml-language-server
152-
pkgs.nvimcom
153-
pkgs.rnvimserver
154-
])
155-
# ── Python toolchain (interpreter, LSP, formatter) ────
156-
++ pkgs.lib.optionals cats.python [
157-
(pkgs.python3.withPackages (ps: pkgs.basePythonPackages ps ++ pythonPackages pkgs))
158-
pkgs.nodejs
159-
pkgs.ruff
160-
pkgs.basedpyright
161-
pkgs.uv
162-
]
163-
# ── Julia toolchain ───────────────────────────────────
164-
++ pkgs.lib.optionals cats.julia [
165-
pkgs.julia-bin.withPackages
166-
juliaPackages
167-
]
168-
# ── Markdown toolchain (quarto, zk) ───────────────────
169-
++ (let
170-
r_packages = (pkgs.baseRPackages or []) ++ rPackages pkgs;
171-
quarto =
172-
if cats.r
173-
then pkgs.quarto.override {extraRPackages = r_packages;}
174-
else pkgs.quarto;
175-
in
176-
pkgs.lib.optionals cats.markdown [
177-
pkgs.python313Packages.pylatexenc
178-
quarto
179-
pkgs.zk
180-
]);
217+
++ enabledRuntimeDeps pkgs;
181218
};
182219
});
183220
};

0 commit comments

Comments
 (0)