Compare commits

...

2 commits

Author SHA1 Message Date
github-actions[bot]
c67fc21f1e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/4bd9165' (2026-04-14)
  → 'github:nixos/nixpkgs/15f4ee4' (2026-04-30)
• Updated input 'plugins-r':
    'github:R-nvim/R.nvim/b9cfffe' (2026-04-16)
  → 'github:R-nvim/R.nvim/93077db' (2026-05-03)
• Updated input 'wrappers':
    'github:BirdeeHub/nix-wrapper-modules/f11469c' (2026-04-16)
  → 'github:BirdeeHub/nix-wrapper-modules/b1308b5' (2026-05-03)
2026-05-04 06:17:37 +00:00
e9c99811d4 feat(devshell): add language tools conditionally based on cats
- Extract mkWrapperConfig to share cats/settings between package and devshell
- Add python, R, julia, and markdown packages to devShells when their cats are enabled
- Reuse same package construction logic as specs/deps.nix for consistency
- Keep lang_packages overridable via lib.mkDefault for downstream flakes
2026-05-03 16:35:56 +10:00
2 changed files with 97 additions and 41 deletions

18
flake.lock generated
View file

@ -22,11 +22,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1776169885,
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
"lastModified": 1777578337,
"narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
"rev": "15f4ee454b1dce334612fa6843b3e05cf546efab",
"type": "github"
},
"original": {
@ -55,11 +55,11 @@
"plugins-r": {
"flake": false,
"locked": {
"lastModified": 1776340770,
"narHash": "sha256-o/8UZIc/Bq9dWTjA+MpSR5uMUpE7KHTErk+TwWID8Ww=",
"lastModified": 1777830151,
"narHash": "sha256-Ux4Nslz1ts2EnhWylArClMHeVB+WsY0rfD5ZGMIYqoA=",
"owner": "R-nvim",
"repo": "R.nvim",
"rev": "b9cfffeb9b4e484aa9e13f01c0eb80230aada455",
"rev": "93077db270c44814ea7e3d9a66461665f8f2d74a",
"type": "github"
},
"original": {
@ -101,11 +101,11 @@
]
},
"locked": {
"lastModified": 1776375800,
"narHash": "sha256-/SSAR77Brr9fbapsh1cb2K47JXCbvwS1GjM4yyDxle8=",
"lastModified": 1777827587,
"narHash": "sha256-Tz3QSgl1wwWH1jf0BngEkNhoWDIIWSBDE/RI+RpVemc=",
"owner": "BirdeeHub",
"repo": "nix-wrapper-modules",
"rev": "f11469ca69068bac13d9e163b2bd268cc06dff57",
"rev": "b1308b562306f59c7732357655d19cedb292d5e1",
"type": "github"
},
"original": {

120
flake.nix
View file

@ -36,45 +36,58 @@
wrappers,
...
} @ inputs: let
mkWrapperConfig = pkgs: {
cats = {
clickhouse = false;
gitPlugins = true;
julia = false;
lua = true;
markdown = false;
nix = true;
optional = false;
python = false;
r = false;
};
settings = {
lang_packages = {
python = with pkgs.python3Packages; [
duckdb
polars
];
r = with pkgs.rpkgs.rPackages; [
arrow
broom
data_table
janitor
styler
];
julia = ["DataFramesMeta" "QuackIO"];
};
colorscheme = "cyberdream";
background = "dark";
wrapRc = true;
};
binName = "vv";
};
wrapperSettings = pkgs: let
cfg = mkWrapperConfig pkgs;
def = pkgs.lib.mkDefault;
in
wrapper.config.wrap {
inherit pkgs;
cats = {
clickhouse = def false;
gitPlugins = def true;
julia = def false;
lua = def true;
markdown = def false;
nix = def true;
optional = def false;
python = def false;
r = def false;
};
cats = pkgs.lib.mapAttrs (_: v: def v) cfg.cats;
settings = {
lang_packages = {
python = with pkgs.python3Packages; [
duckdb
polars
];
r = with pkgs.rpkgs.rPackages; [
arrow
broom
data_table
janitor
styler
];
julia = ["DataFramesMeta" "QuackIO"];
python = def cfg.settings.lang_packages.python;
r = def cfg.settings.lang_packages.r;
julia = def cfg.settings.lang_packages.julia;
};
colorscheme = def "cyberdream";
background = def "dark";
wrapRc = def true;
colorscheme = def cfg.settings.colorscheme;
background = def cfg.settings.background;
wrapRc = def cfg.settings.wrapRc;
};
binName = def "vv";
binName = def cfg.binName;
};
systems = [
@ -146,12 +159,55 @@
devShells = forAllSystems (
system: let
pkgs = mkPkgs system;
cfg = mkWrapperConfig pkgs;
nvimPkg = wrapperSettings pkgs;
pythonPackages = let
python_packages_fn =
if pkgs ? basePythonPackages
then ps: pkgs.basePythonPackages ps ++ cfg.settings.lang_packages.python
else _: cfg.settings.lang_packages.python;
in
with pkgs; [
(python3.withPackages python_packages_fn)
nodejs
ruff
basedpyright
uv
];
rPackages = let
r_packages = (pkgs.baseRPackages or []) ++ cfg.settings.lang_packages.r;
in
with pkgs; [
(rWrapper.override {packages = r_packages;})
radianWrapper
(quarto.override {extraRPackages = r_packages;})
air-formatter
yaml-language-server
updateR
];
juliaPackages = let
julia_with_packages = pkgs.julia-bin.withPackages cfg.settings.lang_packages.julia;
in [julia_with_packages];
markdownPackages = with pkgs; [
python313Packages.pylatexenc
quarto
zk
];
shellPackages = [nvimPkg]
++ pkgs.lib.optionals cfg.cats.python pythonPackages
++ pkgs.lib.optionals cfg.cats.r rPackages
++ pkgs.lib.optionals cfg.cats.julia juliaPackages
++ pkgs.lib.optionals cfg.cats.markdown markdownPackages;
in {
default = pkgs.mkShell {
name = "vShell";
packages = [nvimPkg];
nativeBuildInputs = with pkgs; [] ++ (pkgs.lib.optionals self.wrappers.default.cats.optional [devenv]);
packages = shellPackages;
nativeBuildInputs = with pkgs; [] ++ (pkgs.lib.optionals cfg.cats.optional [devenv]);
inputsFrom = [];
shellHook = "";
};