mirror of
https://github.com/dwinkler1/np.git
synced 2026-02-19 22:40:57 -05:00
134 lines
3.3 KiB
Nix
134 lines
3.3 KiB
Nix
{
|
|
description = "Project Editor";
|
|
|
|
outputs = {
|
|
self,
|
|
nixpkgs,
|
|
nvimConfig,
|
|
...
|
|
} @ inputs: let
|
|
projectSettings = {pkgs}: {
|
|
cats = {
|
|
clickhouse = false;
|
|
gitPlugins = false;
|
|
julia = false;
|
|
lua = false;
|
|
markdown = false;
|
|
nix = true;
|
|
optional = false;
|
|
python = false;
|
|
r = false;
|
|
};
|
|
|
|
settings = let
|
|
# With `replace` packages are replaced otherwise they are merged with base packages
|
|
replace = pkgs.lib.mkForce;
|
|
in {
|
|
lang_packages = {
|
|
python = replace (
|
|
(with pkgs.python3Packages; [
|
|
duckdb
|
|
polars
|
|
])
|
|
++ (
|
|
if builtins.pathExists ./python-packages.nix
|
|
# p: with p; [ ... ]
|
|
then import ./python-packages.nix pkgs.python3Packages
|
|
else []
|
|
)
|
|
);
|
|
|
|
r = replace (
|
|
(with pkgs.rpkgs.rPackages; [
|
|
fixest
|
|
# pkgs.extraRPackages.musicMetadata
|
|
])
|
|
++ (
|
|
if builtins.pathExists ./r-packages.nix
|
|
# p: with p.rPackages; [ ... ]
|
|
then import ./r-packages.nix pkgs.rpkgs
|
|
else []
|
|
)
|
|
);
|
|
|
|
julia = replace ([
|
|
"StatsBase"
|
|
]
|
|
++ (
|
|
if builtins.pathExists ./julia-packages.nix
|
|
# [ ... ]
|
|
then import ./julia-packages.nix
|
|
else []
|
|
));
|
|
};
|
|
colorscheme = "kanagawa";
|
|
background = "dark";
|
|
wrapRc = true;
|
|
};
|
|
binName = "vv";
|
|
|
|
env = {
|
|
IS_PROJECT_EDITOR = "1";
|
|
R_LIBS_USER = "./.nvimcom";
|
|
};
|
|
|
|
extraPackages = with pkgs; [
|
|
cowsay
|
|
];
|
|
|
|
specs.extraLua = let
|
|
name = builtins.baseNameOf (builtins.toString ./.);
|
|
in {
|
|
data = pkgs.vimPlugins.mini-notify;
|
|
before = ["INIT_MAIN"];
|
|
config = ''
|
|
require("mini.notify").setup()
|
|
vim.notify = MiniNotify.make_notify()
|
|
vim.notify("Welcome to ${name}!")
|
|
'';
|
|
};
|
|
};
|
|
|
|
systems = nixpkgs.lib.systems.flakeExposed;
|
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
|
overlays = [inputs.nvimConfig.overlays.dependencies];
|
|
in {
|
|
packages = forAllSystems (system: let
|
|
pkgs = import nixpkgs {inherit system overlays;};
|
|
baseNvim = nvimConfig.packages.${system}.default;
|
|
|
|
nvim = (baseNvim.eval (projectSettings {inherit pkgs;})).config.wrapper;
|
|
default = nvim;
|
|
in {
|
|
default = nvim;
|
|
});
|
|
|
|
devShells = forAllSystems (system: let
|
|
pkgs = import nixpkgs {inherit system overlays;};
|
|
nv = self.packages.${system}.default;
|
|
in {
|
|
default = pkgs.mkShell {
|
|
packages = [nv pkgs.updateR];
|
|
};
|
|
});
|
|
};
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
|
rixpkgs.url = "github:dwinkler1/rixpkgs/nixpkgs";
|
|
fran = {
|
|
url = "github:dwinkler1/fran";
|
|
inputs = {
|
|
nixpkgs.follows = "rixpkgs";
|
|
};
|
|
};
|
|
nvimConfig = {
|
|
url = "github:dwinkler1/nvimConfig";
|
|
inputs = {
|
|
rixpkgs.follows = "rixpkgs";
|
|
nixpkgs.follows = "nixpkgs";
|
|
fran.follows = "fran";
|
|
};
|
|
};
|
|
};
|
|
}
|