mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-07-07 15:55:00 +00:00
Add config for nix-shell (#1359)
* Add config for nix-shell This adds a development environment for Nix users, which automatically installs all libraries needed for building and fixes some nix stuff. * Add Mold This adds the Mold-Linker to improve build times. I also added an alias, so cargo is run through mold.
This commit is contained in:
parent
388d51deac
commit
48e3f7c54a
1 changed files with 63 additions and 0 deletions
63
shell.nix
Normal file
63
shell.nix
Normal file
|
@ -0,0 +1,63 @@
|
|||
# This is a helper file for people using NixOs as their Operating System
|
||||
# > If you don't know what this file does you can safely ignore it :D
|
||||
|
||||
# If you are using nix as your package manager, you can run 'nix-shell'
|
||||
# in the root directory of the project and nix will open a bash shell
|
||||
# with all the packages needed to build and run Graphite installed.
|
||||
# A shell.nix file is used in the Nix ecosystem to define a development
|
||||
# environment with specific dependencies. When you enter a Nix shell using
|
||||
# this file, it ensures that all the specified tools and libraries are
|
||||
# available regardless of the host system's configuration. This provides
|
||||
# a reproducible development environment across different machines and developers.
|
||||
|
||||
# If you don't need the shell, you can build Graphite using this command:
|
||||
# nix-shell --command "npm start"
|
||||
|
||||
let
|
||||
# Get oxalica's Rust overlay for better Rust integration
|
||||
rust-overlay-source = builtins.fetchGit {
|
||||
url = "https://github.com/oxalica/rust-overlay";
|
||||
};
|
||||
|
||||
# Import it so we can use it in Nix
|
||||
rust-overlay = import rust-overlay-source;
|
||||
|
||||
# Import system packages overlaid with the Rust overlay
|
||||
pkgs = import <nixpkgs> {
|
||||
overlays = [ rust-overlay ];
|
||||
};
|
||||
|
||||
# Define the rustc we need
|
||||
rustc-wasm = pkgs.rust-bin.stable.latest.default.override {
|
||||
targets = [ "wasm32-unknown-unknown" ];
|
||||
# wasm-pack needs this
|
||||
extensions = [ "rust-src" ];
|
||||
};
|
||||
in
|
||||
# Make a shell with the dependencies we need
|
||||
pkgs.mkShell {
|
||||
packages = [
|
||||
rustc-wasm
|
||||
pkgs.nodejs
|
||||
pkgs.cargo
|
||||
pkgs.cargo-watch
|
||||
pkgs.wasm-pack
|
||||
|
||||
pkgs.openssl
|
||||
pkgs.glib
|
||||
pkgs.gtk3
|
||||
pkgs.libsoup
|
||||
pkgs.webkitgtk
|
||||
|
||||
pkgs.pkg-config
|
||||
|
||||
# Use Mold as a Linke
|
||||
pkgs.mold
|
||||
];
|
||||
|
||||
# Hacky way to run cago through Mold
|
||||
shellHook = ''
|
||||
alias cargo='mold --run cargo'
|
||||
'';
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue