nix: Use flake-parts, partitions, and treefmt-nix (#45321)
Release Notes: Refactored: - Use [flake-parts](https://flake.parts/index.html) modules - `nix/shell.nix` -> `nix/modules/devshells.nix` Added: - Use [flake-parts.partitions](https://flake.parts/options/flake-parts-partitions.html) to isolate dev dependencies so that flakes that use `zed-editor` don't fetch dev-only inputs such as `treefmt-nix` - [treefmt-nix](https://github.com/numtide/treefmt-nix) - nixfmt - rustfmt Fixed: - `shell.nix` and `default.nix` fetching `flake-compat` from `flake.lock` which added an extra and unnecessary input/dependency to `flake.nix`. Fixed by setting a fixed rev and sha256 instead. - `nixfmt-rfc-style` is deprecated and is now `nixfmt` - Fixes #45338 by using rust-overlay toolchain directly - Previously, the devShell included `rustup` which caused slow startup times as Nix would build rustup from source (including running its test suite). Additionally, rust tooling (cargo, rustfmt, clippy, rust-analyzer) wasn't available in the dev shell. - cargo, rustc, and rust-toolchain.toml components included in `rustToolchain` Chore: - Update `flake.lock` - Format Rust code with `rustfmt` via `treefmt-nix` --------- Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
This commit is contained in:
1 parent
90180f8633
commit
57ead85727
19 files changed
+257
-138
No files matched your search
@@ -2,23 +2,18 @@
|
||||
description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
crane.url = "github:ipetkov/crane";
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
crane.url = "github:ipetkov/crane";
|
||||
flake-compat.url = "github:edolstra/flake-compat";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
rust-overlay,
|
||||
crane,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inputs@{ flake-parts, ... }:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"x86_64-darwin"
|
||||
@@ -26,31 +21,11 @@
|
||||
"aarch64-darwin"
|
||||
];
|
||||
|
||||
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
|
||||
mkZed =
|
||||
pkgs:
|
||||
let
|
||||
rustBin = rust-overlay.lib.mkRustBin { } pkgs;
|
||||
in
|
||||
pkgs.callPackage ./nix/build.nix {
|
||||
crane = crane.mkLib pkgs;
|
||||
rustToolchain = rustBin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
};
|
||||
in
|
||||
{
|
||||
packages = forAllSystems (pkgs: rec {
|
||||
default = mkZed pkgs;
|
||||
debug = default.override { profile = "dev"; };
|
||||
});
|
||||
devShells = forAllSystems (pkgs: {
|
||||
default = pkgs.callPackage ./nix/shell.nix {
|
||||
zed-editor = mkZed pkgs;
|
||||
};
|
||||
});
|
||||
formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
|
||||
overlays.default = final: _: {
|
||||
zed-editor = mkZed final;
|
||||
};
|
||||
imports = [
|
||||
./nix/modules/overlays.nix
|
||||
./nix/modules/packages.nix
|
||||
./nix/modules/partitions.nix
|
||||
];
|
||||
};
|
||||
|
||||
nixConfig = {
|
||||
|
||||
Reference in new issue
Block a user