Add zed-editor package and overlay to flake (#16783)

Adds a `zed-editor` package to the flake, along with exported overlay.
Uses [`crane`](https://crane.dev) to avoid issues with updating
git-sourced dependencies' hashes. Crane will also be useful if we want
to export separate packages for `stable`, `preview`, and `nightly` in
the future.

Release Notes:

- Added a default package + overlay to Zed's Nix flake. This is useful
for users wanting to pilot nightly builds of Zed on NixOS.
This commit is contained in:
jvmncs 2024-08-26 11:10:34 -04:00 committed by GitHub
parent 7936fe40ae
commit 093f131712
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 341 additions and 81 deletions

View file

@ -1,57 +1,14 @@
{
pkgs ? import <nixpkgs> { },
}:
let
stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.llvmPackages_18.stdenv;
in
if pkgs.stdenv.isDarwin then
# See https://github.com/NixOS/nixpkgs/issues/320084
throw "zed: nix dev-shell isn't supported on darwin yet."
else
(pkgs.mkShell.override { inherit stdenv; }) rec {
nativeBuildInputs = with pkgs; [
copyDesktopItems
curl
perl
pkg-config
protobuf
rustPlatform.bindgenHook
];
buildInputs = with pkgs; [
curl
fontconfig
freetype
libgit2
openssl
sqlite
zlib
zstd
alsa-lib
libxkbcommon
wayland
xorg.libxcb
];
env = {
LD_LIBRARY_PATH =
with pkgs;
lib.makeLibraryPath (
buildInputs
++ [
stdenv.cc.cc.lib
vulkan-loader
]
);
ZSTD_SYS_USE_PKG_CONFIG = true;
FONTCONFIG_FILE = pkgs.makeFontsConf {
fontDirectories = [
"assets/fonts/zed-mono"
"assets/fonts/zed-sans"
];
};
PROTOC = "${pkgs.protobuf}/bin/protoc";
};
}
(
import
(
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{src = ./.;}
)
.shellNix