every.channel/flake.nix
2026-02-15 17:29:20 -05:00

95 lines
2.8 KiB
Nix

{
description = "every.channel development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay.url = "github:oxalica/rust-overlay";
agenix.url = "github:ryantm/agenix";
};
outputs = { self, nixpkgs, flake-utils, rust-overlay, agenix }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
rust = pkgs.rust-bin.stable.latest.default.override {
targets = [ "wasm32-unknown-unknown" ];
};
agenixPkg =
if pkgs ? agenix then pkgs.agenix
else agenix.packages.${system}.default;
webkitgtk =
if pkgs ? webkitgtk_4_1 then pkgs.webkitgtk_4_1
else if pkgs ? webkitgtk_4_0 then pkgs.webkitgtk_4_0
else throw "nixpkgs is missing webkitgtk_4_1/webkitgtk_4_0 (required for tauri on Linux)";
linuxTauriDeps = with pkgs; [
gtk3
webkitgtk
librsvg
libappindicator
libsoup_3
glib
pango
gdk-pixbuf
];
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
rust
cargo
cargo-tauri
cargo-llvm-cov
llvmPackages.llvm
clang
pkg-config
openssl
ffmpeg
nodejs_22
nodePackages.wrangler
agenixPkg
forgejo-cli
uv
git
just
cargo-watch
wasm-bindgen-cli
trunk
] ++ lib.optionals stdenv.isLinux linuxTauriDeps;
shellHook = ''
export FFMPEG_INCLUDE_DIR=${pkgs.ffmpeg.dev}/include
export FFMPEG_LIB_DIR=${pkgs.ffmpeg.lib}/lib
export LLVM_COV=${pkgs.llvmPackages.llvm}/bin/llvm-cov
export LLVM_PROFDATA=${pkgs.llvmPackages.llvm}/bin/llvm-profdata
'';
};
# Minimal shell for headless publishers/relays (e.g. remote boxes).
# Avoid pulling in node/wrangler/trunk/tauri deps.
devShells.rust = pkgs.mkShell {
buildInputs = with pkgs; [
rust
cargo
llvmPackages.llvm
clang
pkg-config
openssl
ffmpeg
agenixPkg
forgejo-cli
git
];
shellHook = ''
export FFMPEG_INCLUDE_DIR=${pkgs.ffmpeg.dev}/include
export FFMPEG_LIB_DIR=${pkgs.ffmpeg.lib}/lib
export LLVM_COV=${pkgs.llvmPackages.llvm}/bin/llvm-cov
export LLVM_PROFDATA=${pkgs.llvmPackages.llvm}/bin/llvm-profdata
'';
};
});
}