@@ -0,0 +1 @@ | |||
Unbreak the nix development environment by pinning the Rust version to 1.70.0. |
@@ -22,27 +22,6 @@ | |||
"type": "github" | |||
} | |||
}, | |||
"fenix": { | |||
"inputs": { | |||
"nixpkgs": [ | |||
"nixpkgs" | |||
], | |||
"rust-analyzer-src": "rust-analyzer-src" | |||
}, | |||
"locked": { | |||
"lastModified": 1682490133, | |||
"narHash": "sha256-tR2Qx0uuk97WySpSSk4rGS/oH7xb5LykbjATcw1vw1I=", | |||
"owner": "nix-community", | |||
"repo": "fenix", | |||
"rev": "4e9412753ab75ef0e038a5fe54a062fb44c27c6a", | |||
"type": "github" | |||
}, | |||
"original": { | |||
"owner": "nix-community", | |||
"repo": "fenix", | |||
"type": "github" | |||
} | |||
}, | |||
"flake-compat": { | |||
"flake": false, | |||
"locked": { | |||
@@ -74,6 +53,24 @@ | |||
"type": "github" | |||
} | |||
}, | |||
"flake-utils_2": { | |||
"inputs": { | |||
"systems": "systems" | |||
}, | |||
"locked": { | |||
"lastModified": 1681202837, | |||
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", | |||
"owner": "numtide", | |||
"repo": "flake-utils", | |||
"rev": "cfacdce06f30d2b68473a46042957675eebb3401", | |||
"type": "github" | |||
}, | |||
"original": { | |||
"owner": "numtide", | |||
"repo": "flake-utils", | |||
"type": "github" | |||
} | |||
}, | |||
"gitignore": { | |||
"inputs": { | |||
"nixpkgs": [ | |||
@@ -200,6 +197,22 @@ | |||
"type": "github" | |||
} | |||
}, | |||
"nixpkgs_3": { | |||
"locked": { | |||
"lastModified": 1681358109, | |||
"narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", | |||
"owner": "NixOS", | |||
"repo": "nixpkgs", | |||
"rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", | |||
"type": "github" | |||
}, | |||
"original": { | |||
"owner": "NixOS", | |||
"ref": "nixpkgs-unstable", | |||
"repo": "nixpkgs", | |||
"type": "github" | |||
} | |||
}, | |||
"pre-commit-hooks": { | |||
"inputs": { | |||
"flake-compat": [ | |||
@@ -231,25 +244,27 @@ | |||
"root": { | |||
"inputs": { | |||
"devenv": "devenv", | |||
"fenix": "fenix", | |||
"nixpkgs": "nixpkgs_2", | |||
"systems": "systems" | |||
"rust-overlay": "rust-overlay", | |||
"systems": "systems_2" | |||
} | |||
}, | |||
"rust-analyzer-src": { | |||
"flake": false, | |||
"rust-overlay": { | |||
"inputs": { | |||
"flake-utils": "flake-utils_2", | |||
"nixpkgs": "nixpkgs_3" | |||
}, | |||
"locked": { | |||
"lastModified": 1682426789, | |||
"narHash": "sha256-UqnLmJESRZE0tTEaGbRAw05Hm19TWIPA+R3meqi5I4w=", | |||
"owner": "rust-lang", | |||
"repo": "rust-analyzer", | |||
"rev": "943d2a8a1ca15e8b28a1f51f5a5c135e3728da04", | |||
"lastModified": 1689302058, | |||
"narHash": "sha256-yD74lcHTrw4niXcE9goJLbzsgyce48rQQoy5jK5ZK40=", | |||
"owner": "oxalica", | |||
"repo": "rust-overlay", | |||
"rev": "7b8dbbf4c67ed05a9bf3d9e658c12d4108bc24c8", | |||
"type": "github" | |||
}, | |||
"original": { | |||
"owner": "rust-lang", | |||
"ref": "nightly", | |||
"repo": "rust-analyzer", | |||
"owner": "oxalica", | |||
"repo": "rust-overlay", | |||
"type": "github" | |||
} | |||
}, | |||
@@ -267,6 +282,21 @@ | |||
"repo": "default", | |||
"type": "github" | |||
} | |||
}, | |||
"systems_2": { | |||
"locked": { | |||
"lastModified": 1681028828, | |||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | |||
"owner": "nix-systems", | |||
"repo": "default", | |||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | |||
"type": "github" | |||
}, | |||
"original": { | |||
"owner": "nix-systems", | |||
"repo": "default", | |||
"type": "github" | |||
} | |||
} | |||
}, | |||
"root": "root", | |||
@@ -46,20 +46,20 @@ | |||
systems.url = "github:nix-systems/default"; | |||
# A development environment manager built on Nix. See https://devenv.sh. | |||
devenv.url = "github:cachix/devenv/main"; | |||
# Rust toolchains and rust-analyzer nightly. | |||
fenix = { | |||
url = "github:nix-community/fenix"; | |||
inputs.nixpkgs.follows = "nixpkgs"; | |||
}; | |||
# Rust toolchain. | |||
rust-overlay.url = "github:oxalica/rust-overlay"; | |||
}; | |||
outputs = { self, nixpkgs, devenv, systems, ... } @ inputs: | |||
outputs = { self, nixpkgs, devenv, systems, rust-overlay, ... } @ inputs: | |||
let | |||
forEachSystem = nixpkgs.lib.genAttrs (import systems); | |||
in { | |||
devShells = forEachSystem (system: | |||
let | |||
pkgs = nixpkgs.legacyPackages.${system}; | |||
overlays = [ (import rust-overlay) ]; | |||
pkgs = import nixpkgs { | |||
inherit system overlays; | |||
}; | |||
in { | |||
# Everything is configured via devenv - a Nix module for creating declarative | |||
# developer environments. See https://devenv.sh/reference/options/ for a list | |||
@@ -76,6 +76,20 @@ | |||
# Configure packages to install. | |||
# Search for package names at https://search.nixos.org/packages?channel=unstable | |||
packages = with pkgs; [ | |||
# The rust toolchain and related tools. | |||
# This will install the "default" profile of rust components. | |||
# https://rust-lang.github.io/rustup/concepts/profiles.html | |||
# | |||
# NOTE: We currently need to set the Rust version unnecessarily high | |||
# in order to work around https://github.com/matrix-org/synapse/issues/15939 | |||
(rust-bin.stable."1.70.0".default.override { | |||
# Additionally install the "rust-src" extension to allow diving into the | |||
# Rust source code in an IDE (rust-analyzer will also make use of it). | |||
extensions = [ "rust-src" ]; | |||
}) | |||
# The rust-analyzer language server implementation. | |||
rust-analyzer | |||
# Native dependencies for running Synapse. | |||
icu | |||
libffi | |||
@@ -124,12 +138,11 @@ | |||
# Install dependencies for the additional programming languages | |||
# involved with Synapse development. | |||
# | |||
# * Rust is used for developing and running Synapse. | |||
# * Golang is needed to run the Complement test suite. | |||
# * Perl is needed to run the SyTest test suite. | |||
# * Rust is used for developing and running Synapse. | |||
# It is installed manually with `packages` above. | |||
languages.go.enable = true; | |||
languages.rust.enable = true; | |||
languages.rust.version = "stable"; | |||
languages.perl.enable = true; | |||
# Postgres is needed to run Synapse with postgres support and | |||