Add Nix/NixOS dev-shell (#13407)

This PR adds a Nix/NixOS development-shell (`shell.nix`), which is based
on the upstream
[nixpkgs](c5d4d45811/pkgs/by-name/ze/zed-editor/package.nix),
as well as its corresponding `flake.nix` file.

To use it, run either the `nix-shell` command (uses the `shell.nix`
file), or the newer but experimental `nix develop` command (uses
`flake.nix`)

~~This has not been tested on macOS, tho preliminary code is there to
try and support it, feel free to report any issues.~~ Zed unfortunately
doesn't build on nix-darwin (see
https://github.com/NixOS/nixpkgs/issues/320084), so this PR doesn't aim
to add darwin support.

---

Release Notes:

- N/A

---------

Signed-off-by: xtrm <oss@xtrm.me>
Co-authored-by: Niklas Korz <niklas@niklaskorz.de>
This commit is contained in:
killian 2024-07-09 09:21:42 +02:00 committed by GitHub
parent 034d905435
commit 5e1c690888
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 115 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/.direnv
.idea
**/target
**/cargo-target

27
flake.lock Normal file
View File

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1719690277,
"narHash": "sha256-0xSej1g7eP2kaUF+JQp8jdyNmpmCJKRpO12mKl/36Kc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2741b4b489b55df32afac57bc4bfd220e8bf617e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

31
flake.nix Normal file
View File

@ -0,0 +1,31 @@
{
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
};
outputs =
{ self, nixpkgs }:
let
inherit (self) outputs;
systems = [
"aarch64-linux"
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
forAllSystems = nixpkgs.lib.genAttrs systems;
in
{
devShells = forAllSystems (
system:
let
pkgs = import nixpkgs { inherit system; };
in
{
default = import ./shell.nix { inherit pkgs; };
}
);
};
}

56
shell.nix Normal file
View File

@ -0,0 +1,56 @@
{
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"
];
};
};
}