Use flake compat to provide the nix flakes dev shell to non flake users (#2926)
* Use flake compat to provide the nix flakes dev shell to non flake users * Move shell.nix to .nix sub folder
This commit is contained in:
parent
f184e4aab2
commit
45bd031a36
|
|
@ -1,5 +1,19 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"flake-compat": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733328505,
|
||||||
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
|
"revCount": 69,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
|
|
@ -52,6 +66,7 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,9 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
# This is used to provide a identical development shell at `shell.nix` for users that do not use flakes
|
||||||
|
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { nixpkgs, nixpkgs-unstable, rust-overlay, flake-utils, ... }:
|
outputs = { nixpkgs, nixpkgs-unstable, rust-overlay, flake-utils, ... }:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# If you are using Nix as your package manager, you can run 'nix-shell .nix'
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# You can enter the Nix shell and run Graphite like normal with:
|
||||||
|
# > npm start
|
||||||
|
# Or you can run it like this without needing to first enter the Nix shell:
|
||||||
|
# > nix-shell .nix --command "npm start"
|
||||||
|
|
||||||
|
# Uses flake compat to provide a development shell that is identical to the one defined in the flake
|
||||||
|
(import
|
||||||
|
(
|
||||||
|
let
|
||||||
|
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||||
|
nodeName = lock.nodes.root.inputs.flake-compat;
|
||||||
|
in
|
||||||
|
fetchTarball {
|
||||||
|
url = lock.nodes.${nodeName}.locked.url;
|
||||||
|
sha256 = lock.nodes.${nodeName}.locked.narHash;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{ src = ./.; }
|
||||||
|
).shellNix
|
||||||
85
shell.nix
85
shell.nix
|
|
@ -1,85 +0,0 @@
|
||||||
# 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.
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# You can enter the Nix shell and run Graphite like normal with:
|
|
||||||
# > npm start
|
|
||||||
# Or you can run it like this without needing to first enter the Nix shell:
|
|
||||||
# > 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" "rust-analyzer" "clippy" "cargo"];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
# Make a shell with the dependencies we need
|
|
||||||
pkgs.mkShell {
|
|
||||||
packages = with pkgs; [
|
|
||||||
rustc-wasm
|
|
||||||
nodejs
|
|
||||||
cargo-watch
|
|
||||||
cargo-nextest
|
|
||||||
cargo-expand
|
|
||||||
cargo-about
|
|
||||||
wasm-pack
|
|
||||||
binaryen
|
|
||||||
wasm-bindgen-cli
|
|
||||||
vulkan-loader
|
|
||||||
libxkbcommon
|
|
||||||
pkg-config
|
|
||||||
# used for profiling
|
|
||||||
gnuplot
|
|
||||||
samply
|
|
||||||
cargo-flamegraph
|
|
||||||
|
|
||||||
# For Tauri
|
|
||||||
at-spi2-atk
|
|
||||||
atkmm
|
|
||||||
cairo
|
|
||||||
gdk-pixbuf
|
|
||||||
glib
|
|
||||||
gtk3
|
|
||||||
harfbuzz
|
|
||||||
librsvg
|
|
||||||
libsoup_3
|
|
||||||
pango
|
|
||||||
webkitgtk_4_1
|
|
||||||
openssl
|
|
||||||
|
|
||||||
# For Rawkit tests
|
|
||||||
libraw
|
|
||||||
|
|
||||||
# Use Mold as a linker
|
|
||||||
mold
|
|
||||||
];
|
|
||||||
|
|
||||||
# Hacky way to run Cargo through Mold
|
|
||||||
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.openssl pkgs.vulkan-loader pkgs.libxkbcommon pkgs.llvmPackages.libcxxStdenv pkgs.gcc-unwrapped.lib pkgs.llvm pkgs.libraw];
|
|
||||||
shellHook = ''
|
|
||||||
alias cargo='mold --run cargo'
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue