/ flake.nix
flake.nix
 1  # SPDX-License-Identifier: AGPL-3.0-or-later
 2  # SPDX-FileCopyrightText: 2024-2025 hyperpolymath
 3  {
 4    description = "Oikos Bot: Ecological & Economic Code Analysis Platform";
 5  
 6    inputs = {
 7      nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 8      flake-utils.url = "github:numtide/flake-utils";
 9      rust-overlay.url = "github:oxalica/rust-overlay";
10    };
11  
12    outputs = { self, nixpkgs, flake-utils, rust-overlay }:
13      flake-utils.lib.eachDefaultSystem (system:
14        let
15          overlays = [ (import rust-overlay) ];
16          pkgs = import nixpkgs {
17            inherit system overlays;
18            config.allowUnfree = true;
19          };
20        in
21        {
22          devShells.default = pkgs.mkShell {
23            buildInputs = with pkgs; [
24              # Haskell
25              ghc
26              cabal-install
27              haskell-language-server
28  
29              # OCaml
30              ocaml
31              dune_3
32              opam
33              ocamlPackages.merlin
34              ocamlPackages.yojson
35              ocamlPackages.ppx_deriving
36              ocamlPackages.re
37              ocamlPackages.cmdliner
38  
39              # ReScript + Deno
40              deno
41              nodejs_20
42  
43              # Python
44              (python311.withPackages (ps: with ps; [
45                numpy torch networkx pyyaml aiohttp pytest
46              ]))
47  
48              # Rust
49              (rust-bin.stable.latest.default.override {
50                extensions = [ "rust-src" "rust-analyzer" ];
51              })
52  
53              # Tools
54              git gnumake jq ripgrep fd
55              podman buildah
56              souffle swiProlog
57            ];
58  
59            shellHook = ''
60              echo "🏛️ Oikos Bot Dev Shell"
61              export DENO_DIR="$PWD/.deno"
62            '';
63          };
64        }
65      );
66  }