From 1ee35d233f7510cc35d00877f01a3f823dab0a73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20K=C3=A4nner?= Date: Mon, 16 Sep 2024 10:21:57 +0200 Subject: [PATCH] add support for more systems --- .gitignore | 3 ++ clang.nix | 87 +++++++++++++++++++++++++++++++++++------------------- flake.lock | 34 +++++++++++++++++++++ flake.nix | 26 +++++++++------- rust.nix | 87 ++++++++++++++++++++++++++++++++++-------------------- 5 files changed, 164 insertions(+), 73 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15be90c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/result +/esp-clang +.null-ls* diff --git a/clang.nix b/clang.nix index ff279b1..6f7654d 100644 --- a/clang.nix +++ b/clang.nix @@ -1,34 +1,61 @@ -{pkgs ? import {}}: -pkgs.stdenv.mkDerivation rec { - pname = "esp-clang"; - version = "18.1.2_20240912"; - srcs = [ - (builtins.fetchurl - { - url = "https://github.com/espressif/llvm-project/releases/download/esp-${version}/clang-esp-${version}-x86_64-linux-gnu.tar.xz"; - sha256 = "0k8c596y7nsnyjf1yw54cayhsh6w45v023q7m339w3s40a75pqdf"; - }) - (builtins.fetchurl - { - url = "https://github.com/espressif/llvm-project/releases/download/esp-${version}/libs-clang-esp-${version}-x86_64-linux-gnu.tar.xz"; - sha256 = "1i85rm77wzzpijclrzqdd0zb94dnw383gfxxwzim2dkd3nsgrmng"; - }) - ]; +{ + pkgs ? import {}, + system ? builtins.currentSystem, +}: let + systems_table = { + "x86_64-linux" = { + system = "x86_64-linux-gnu"; + binhash = "aee15b8e02440f9ec6a8070f017621dc400dbd62a4701f9cf456dbe34d2a0c4d"; + libhash = "cfd6fcb41d6d3651e3e7bdbb37d0e0b691b43e680dff4c998cf77f7e4ecd05c5"; + }; + "x86_64-darwin" = { + system = "x86_64-apple-darwin"; + binhash = "b4641ec4dd574b6b7d037aa1bb2e5ff5a8a4623c88e89668db656282eb1d9dc8"; + libhash = "80c086c29235016382b9ab95b41556ff5bdb40186f7f1c60c64acb2af420607b"; + }; + "aarch64-linux" = { + system = "aarch64-linux-gnu"; + binhash = "14abbc368d9c153270aa4d22ce28d78633cb0f1ca83d4be70591d9e39ae9bc82"; + libhash = "d49dfda7331a26b5d0da41bac91d5240a14ee731cbfa49f1ead3aa6377bd1b7e"; + }; + "aarch64-darwin" = { + system = "aarch64-apple-darwin"; + binhash = "5d2e187ef40ecc9996630a7c6efcc19bdfd32ec4ce8cc4dd3014cd24e7016560"; + libhash = "8b9c6bab01bffaed5f24e37e6e255bc4e0905cd175473e7d480f301f9b0d3f0d"; + }; + }; + system_download = systems_table.${system}; +in + pkgs.stdenv.mkDerivation rec { + pname = "esp-clang"; + version = "18.1.2_20240912"; + srcs = [ + (builtins.fetchurl + { + url = "https://github.com/espressif/llvm-project/releases/download/esp-${version}/clang-esp-${version}-${system_download.system}.tar.xz"; + sha256 = system_download.binhash; + }) + (builtins.fetchurl + { + url = "https://github.com/espressif/llvm-project/releases/download/esp-${version}/libs-clang-esp-${version}-${system_download.system}.tar.xz"; + sha256 = system_download.libhash; + }) + ]; - preferLocalBuild = true; + preferLocalBuild = true; - nativeBuildInputs = with pkgs; [ - autoPatchelfHook - ]; + nativeBuildInputs = with pkgs; [ + autoPatchelfHook + ]; - buildInputs = with pkgs; [ - stdenv.cc.cc.lib - libz - libxml2 - ]; + buildInputs = with pkgs; [ + stdenv.cc.cc.lib + libz + libxml2 + ]; - installPhase = '' - mkdir -p "$out" - cp -R ./{bin,share,lib,include} "$out" - ''; -} + installPhase = '' + mkdir -p "$out" + cp -R ./{bin,share,lib,include} "$out" + ''; + } diff --git a/flake.lock b/flake.lock index db42797..d4abe38 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,23 @@ { "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1725983898, @@ -18,8 +36,24 @@ }, "root": { "inputs": { + "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } + }, + "systems": { + "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", diff --git a/flake.nix b/flake.nix index 05cb87a..955f268 100644 --- a/flake.nix +++ b/flake.nix @@ -3,19 +3,23 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; }; outputs = { - self, nixpkgs, - }: let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; - in { - packages.${system} = { - rust = import ./rust.nix {inherit pkgs;}; - clang = import ./clang.nix {inherit pkgs;}; - default = self.packages.${system}.rust; - }; - }; + flake-utils, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: let + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages = rec { + rust = import ./rust.nix {inherit pkgs system;}; + clang = import ./clang.nix {inherit pkgs system;}; + default = rust; + }; + } + ); } diff --git a/rust.nix b/rust.nix index 9ed26d8..7c74f15 100644 --- a/rust.nix +++ b/rust.nix @@ -1,36 +1,59 @@ -{pkgs ? import {}}: -pkgs.stdenv.mkDerivation rec { - pname = "esp-rust"; - version = "1.81.0"; - srcs = [ - (builtins.fetchurl - { - url = "https://github.com/esp-rs/rust-build/releases/download/v${version}.0/rust-${version}.0-x86_64-unknown-linux-gnu.tar.xz"; - sha256 = "1pilzw6lqygysdrklzs64vb07a3ni0pw24qklkwc5gjqwgzc4ka4"; - }) - (builtins.fetchurl - { - url = "https://github.com/esp-rs/rust-build/releases/download/v${version}.0/rust-src-${version}.0.tar.xz"; - sha256 = "0w7fy0biml8ddvwpmrn9js4x6vkqjhm118gxy2431fnxl97v947f"; - }) - ]; - sourceRoot = "."; +{ + pkgs ? import {}, + system ? builtins.currentSystem, +}: let + systems_table = { + "x86_64-linux" = { + system = "x86_64-unknown-linux-gnu"; + hash = "1pilzw6lqygysdrklzs64vb07a3ni0pw24qklkwc5gjqwgzc4ka4"; + }; + "x86_64-darwin" = { + system = "x86_64-apple-darwin"; + hash = "09j72xspg1bq82hk9w9ij9h17yk4lr0wfv20ybm1pah4bfxw6mha"; + }; + "aarch64-linux" = { + system = "aarch64-unknown-linux-gnu"; + hash = "170013pw7rllqzc03i39xrwy486jllxjjh53sgnywqz0ylycx7j8"; + }; + "aarch64-darwin" = { + system = "aarch64-apple-darwin"; + hash = "143kb7vawssg6b5h8c7k4szm43qqif3sjniwzc60avhn60zrc00j"; + }; + }; + download_system = systems_table.${system}; +in + pkgs.stdenv.mkDerivation rec { + pname = "esp-rust"; + version = "1.81.0.0"; + srcs = [ + (builtins.fetchurl + { + url = "https://github.com/esp-rs/rust-build/releases/download/v${version}/rust-${version}-${download_system.system}.tar.xz"; + sha256 = download_system.hash; + }) + (builtins.fetchurl + { + url = "https://github.com/esp-rs/rust-build/releases/download/v${version}.0/rust-src-${version}.tar.xz"; + sha256 = "0w7fy0biml8ddvwpmrn9js4x6vkqjhm118gxy2431fnxl97v947f"; + }) + ]; + sourceRoot = "."; - preferLocalBuild = true; + preferLocalBuild = true; - nativeBuildInputs = with pkgs; [ - autoPatchelfHook - ]; + nativeBuildInputs = with pkgs; [ + autoPatchelfHook + ]; - buildInputs = with pkgs; [ - stdenv.cc.cc.lib - libz - ]; + buildInputs = with pkgs; [ + stdenv.cc.cc.lib + libz + ]; - installPhase = '' - runHook preInstall - mkdir -p "$out" - cp -R ./*/*/{bin,share,lib} "$out" - runHook postInstall - ''; -} + installPhase = '' + runHook preInstall + mkdir -p "$out" + cp -R ./*/*/{bin,share,lib} "$out" + runHook postInstall + ''; + }