fran/flake.nix
copilot-swe-agent[bot] c365b44ff2 Refactor packages into modular structure under packages/ directory
Co-authored-by: dwinkler1 <22460147+dwinkler1@users.noreply.github.com>
2026-01-19 05:06:39 +00:00

94 lines
2.4 KiB
Nix

{
description = "FRAN - The Flakey R Archiving Network";
inputs = {
nixpkgs.url = "github:rstats-on-nix/nixpkgs/2025-11-10";
};
outputs = {
self,
nixpkgs,
...
} @ inputs: let
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
forAllSystems = nixpkgs.lib.genAttrs systems;
mkR = {
pkgs,
packages,
}: let
juliaPackages = builtins.concatMap (p: (p.passthru or {}).juliaPackages or []) packages;
in
pkgs.buildEnv {
name = "rWithDependencies";
paths =
[
(pkgs.rWrapper.override {inherit packages;})
]
++ (pkgs.lib.optionals (builtins.length juliaPackages > 0) [
(pkgs.julia-bin.withPackages juliaPackages)
]);
};
# The overlay that exposes custom R packages
overlay = final: prev: {
extraRPackageDeps = {
julia-fwildclusterboot = prev.julia-bin.withPackages ["WildBootTests" "StableRNGs"];
};
extraRPackages = import ./packages {inherit final prev;};
};
in {
# Helper to install R with system dependencies if required
lib = {inherit mkR;};
# For imports in other flakes
overlays.default = overlay;
# run these with `nix run .#NAME`
packages = forAllSystems (
system: let
pkgs = import nixpkgs {
inherit system;
overlays = [self.overlays.default];
};
in {
default = mkR {
inherit pkgs;
packages = builtins.attrValues pkgs.extraRPackages;
};
franUpdate = pkgs.writeShellScriptBin "fran-update" (import ./versions pkgs);
}
);
# Run this with `nix develop`
devShells = forAllSystems (
system: let
pkgs = import nixpkgs {
inherit system;
overlays = [self.overlays.default];
};
in {
default = pkgs.mkShell {
packages = with self.packages."${system}"; [
default
franUpdate
];
};
}
);
};
nixConfig = {
extra-substituters = [
"https://rstats-on-nix.cachix.org"
"https://rde.cachix.org"
];
extra-trusted-public-keys = [
"rstats-on-nix.cachix.org-1:vdiiVgocg6WeJrODIqdprZRUrhi1JzhBnXv7aWI6+F0="
"rde.cachix.org-1:yRxQYM+69N/dVER6HNWRjsjytZnJVXLS/+t/LI9d1D4="
];
};
}