95 lines
2.8 KiB
Nix
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
|
|
'';
|
|
};
|
|
});
|
|
}
|