commit 416ff93fd4b78d09a31d671bce0b8e084f55e44f Author: Daniel Winkler Date: Mon Sep 1 16:49:19 2025 +1000 init diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..eea39f3 --- /dev/null +++ b/flake.lock @@ -0,0 +1,44 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nvimcom": { + "flake": false, + "locked": { + "lastModified": 1755532199, + "narHash": "sha256-mb8HCaMasPUP9JZUkH1sPrtdbhM2HMUkJEKDsRt6wTs=", + "owner": "R-nvim", + "repo": "R.nvim", + "rev": "fd992e1c13ad3df794a30af2e937b994bf7bf4db", + "type": "github" + }, + "original": { + "owner": "R-nvim", + "repo": "R.nvim", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "nvimcom": "nvimcom" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..2b13300 --- /dev/null +++ b/flake.nix @@ -0,0 +1,125 @@ +{ + description = "FRAN - The Flakey R Archiving Network"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nvimcom = { + url = "github:R-nvim/R.nvim"; + flake = false; + }; + }; + + outputs = { + self, + nixpkgs, + ... + } @ inputs: let + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + forAllSystems = f: + builtins.listToAttrs (map (system: { + name = system; + value = f system; + }) + systems); + + # The overlay that exposes custom R packages + overlay = final: prev: let + in { + extraRPackages = { + musicMetadata = prev.rPackages.buildRPackage { + name = "musicMetadata"; + src = prev.fetchgit { + url = "https://github.com/hannesdatta/musicMetadata"; + branchName = "master"; + rev = "1b7ca4c1fd208475e961b77edc90ad513b936879"; + sha256 = "sha256-QK1Q6/ta2PqIrjdA6/oS1HxOMgZr/BO00OLjs3/O7EE="; + }; + }; + synthdid = prev.rPackages.buildRPackage { + name = "synthdid"; + src = prev.fetchFromGitHub { + owner = "synth-inference"; + repo = "synthdid"; + rev = "70c1ce3eac58e28c30b67435ca377bb48baa9b8a"; + sha256 = "sha256-rxQqnpKWy4d9ZykRxfILu1lyT6Z3x++gFdC3sbm++pk="; + }; + propagatedBuildInputs = [prev.rPackages.mvtnorm]; + }; + httpgd = prev.rPackages.buildRPackage { + name = "httpgd"; + src = prev.fetchgit { + url = "https://github.com/nx10/httpgd"; + rev = "dd6ed3a687a2d7327bb28ca46725a0a203eb2a19"; + sha256 = "sha256-vs6MTdVJXhTdzPXKqQR+qu1KbhF+vfyzZXIrFsuKMtU="; + }; + propagatedBuildInputs = builtins.attrValues { + inherit + (prev.rPackages) + unigd + cpp11 + AsioHeaders + ; + }; + }; + nvimcom = prev.rPackages.buildRPackage { + name = "nvimcom"; + src = inputs.nvimcom; + sourceRoot = "source/nvimcom"; + buildInputs = with prev; [ + R + stdenv.cc.cc + gnumake + ]; + }; + + # Template for adding more packages: + # somepkg = mkGitR { + # pname = "somepkg"; + # src = somepkg; # from inputs (add it above) + # subdir = "."; # change if the R pkg is in a subfolder + # propagatedBuildInputs = with final.rPackages; [ ]; + # buildInputs = [ ]; + # }; + }; + }; + in { + overlays.default = overlay; + + # Optional: provide an R wrapper with these non-CRAN packages bundled + packages = forAllSystems ( + system: let + pkgs = import nixpkgs { + inherit system; + overlays = [self.overlays.default]; + }; + in { + default = pkgs.rWrapper.override {packages = builtins.attrNames pkgs.extraRPackages;}; + } + ); + # Helpful for overlay users: expose a devShell with R including these pkgs + devShells = forAllSystems (system: let + pkgs = import nixpkgs { + inherit system; + overlays = [self.overlays.default]; + }; + in { + default = pkgs.mkShell { + packages = [ + (pkgs.rWrapper.override { + packages = with pkgs.extraRPackages; [ + nvimcom + musicMetadata + synthdid + httpgd + ]; + }) + ]; + }; + }); + }; +}