| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- {
- description = "OpenCode development flake";
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- };
- outputs =
- { self, nixpkgs, ... }:
- let
- systems = [
- "aarch64-linux"
- "x86_64-linux"
- "aarch64-darwin"
- "x86_64-darwin"
- ];
- forEachSystem = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
- rev = self.shortRev or self.dirtyShortRev or "dirty";
- in
- {
- devShells = forEachSystem (pkgs: {
- default = pkgs.mkShell {
- packages = with pkgs; [
- bun
- nodejs_20
- pkg-config
- openssl
- git
- ];
- };
- });
- packages = forEachSystem (
- pkgs:
- let
- node_modules = pkgs.callPackage ./nix/node_modules.nix {
- inherit rev;
- };
- opencode = pkgs.callPackage ./nix/opencode.nix {
- inherit node_modules;
- };
- desktop = pkgs.callPackage ./nix/desktop.nix {
- inherit opencode;
- };
- # nixpkgs cpu naming to bun cpu naming
- cpuMap = { x86_64 = "x64"; aarch64 = "arm64"; };
- # matrix of node_modules builds - these will always fail due to fakeHash usage
- # but allow computation of the correct hash from any build machine for any cpu/os
- # see the update-nix-hashes workflow for usage
- moduleUpdaters = pkgs.lib.listToAttrs (
- pkgs.lib.concatMap (cpu:
- map (os: {
- name = "${cpu}_${os}_node_modules";
- value = node_modules.override {
- bunCpu = cpuMap.${cpu};
- bunOs = os;
- hash = pkgs.lib.fakeHash;
- };
- }) [ "linux" "darwin" ]
- ) [ "x86_64" "aarch64" ]
- );
- in
- {
- default = opencode;
- inherit opencode desktop;
- } // moduleUpdaters
- );
- };
- }
|