np/templates/sci_minimal/flake.nix

140 lines
4.1 KiB
Nix

{
description = "Project Template";
inputs = {
rixpkgs.url = "https://github.com/rstats-on-nix/nixpkgs/archive/2025-05-19.tar.gz";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nCats.url = "github:dwinkler1/nixCatsConfig";
nCats.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
self,
nixpkgs,
nCats,
...
} @ inputs: let
forSystems = nixpkgs.lib.genAttrs nixpkgs.lib.platforms.all;
in {
packages = forSystems (
system: let
inherit (nCats) utils;
finalPackage = nCats.packages.${system}.default.override (prev: {
dependencyOverlays =
prev.dependencyOverlays
++ [
(utils.standardPluginOverlay inputs)
(final: prev: {
rpkgs = inputs.rixpkgs.legacyPackages.${system};
})
(import (builtins.path {
path = ./rpkgs.nix;
name = "my-rpackages";
}))
(import (builtins.path {
path = ./pypkgs.nix;
name = "my-pypackages";
}))
];
categoryDefinitions = utils.mergeCatDefs prev.categoryDefinitions (
{
pkgs,
settings,
categories,
name,
extra,
mkPlugin,
...
} @ packageDef: {
lspsAndRuntimeDeps = {
meta = with pkgs; [
just
wget
gh
];
rdev = with pkgs; [
rWrapper
];
pydev = with pkgs; [
py
uv
pyright
nodejs
];
jldev = with pkgs; [
julia-bin
];
quarto = with pkgs; [
quarto
];
};
environmentVariables = {
rdev = {
R_LIBS_USER = "./.Rlibs";
};
pydev = {
# Prevent uv from managing Python downloads
UV_PYTHON_DOWNLOADS = "never";
# Force uv to use nixpkgs Python interpreter
UV_PYTHON = pkgs.py.interpreter;
};
};
extraWrapperArgs = {
pydev = [
"--unset PYTHONPATH"
];
};
bashBeforeWrapper = {
pydev = [
"export UV_PYTHON=${pkgs.py.interpreter}"
"export UV_PYTHON_DOWNLOADS=\"never\""
"${pkgs.uv}/bin/uv sync"
];
};
}
);
packageDefinitions =
prev.packageDefinitions
// {
nixCats = utils.mergeCatDefs prev.packageDefinitions.nixCats (
{pkgs, name, ...}: {
settings = {
suffix-path = false;
suffix-LD = false;
hosts = {
python3.enable = true;
marimo = {
enable = true;
path = {
value = "${pkgs.uv}/bin/uv";
args = ["--add-flags" "run marimo edit"];
};
};
neovide = {
enable = true;
path = {
value = "${pkgs.neovide}/bin/neovide";
args = [
"--add-flags"
"--neovim-bin ${name}"
];
};
};
};
};
categories = {
meta = true;
rdev = true;
pydev = true;
jldev = true;
quarto = true;
};
}
);
};
});
in
utils.mkAllWithDefault finalPackage
);
};
}