From cf1df57e6f6cfefaa578822b413d46cc4598ad14 Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Sat, 4 Oct 2025 20:04:50 +0200 Subject: [PATCH] Add rust devshell --- .gitignore | 1 + flake.lock | 23 ++++++++++++++++++++++- flake.nix | 46 +++++++++++++++++++++++++++++++--------------- 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index a169f0d..0bd64b9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.pro.user* .idea/ .direnv/ +**/target diff --git a/flake.lock b/flake.lock index 7ca0dc3..a4ac182 100644 --- a/flake.lock +++ b/flake.lock @@ -18,7 +18,28 @@ }, "root": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1759544920, + "narHash": "sha256-yQwP0JOHi3Icq09GG5ufGuGrq2zIijglVFj3kkF2MHA=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "bd3a63bbff2c4cb3cd48e9d49f54c2ccad457f70", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 9b71f51..40dd6bf 100644 --- a/flake.nix +++ b/flake.nix @@ -1,29 +1,45 @@ { - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; outputs = - { self, nixpkgs }: + { nixpkgs, rust-overlay, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; in { devShells.${system} = { - cpp = - pkgs.mkShell.override - { - stdenv = pkgs.clangStdenv; - } - { - packages = with pkgs; [ - gdb - clang-tools - qt6.full - ]; - }; - go = pkgs.mkShell { + cpp = pkgs.mkShell.override { stdenv = pkgs.clangStdenv; } { + packages = with pkgs; [ + gdb + clang-tools + qt6.full + ]; + }; + + go = pkgs.mkShellNoCC { packages = with pkgs; [ go ]; }; + + rust = + let + pkgs = import nixpkgs { + inherit system; + overlays = [ rust-overlay.overlays.default ]; + }; + rust-toolchain = pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-src" ]; }; + in + pkgs.mkShellNoCC { + packages = [ rust-toolchain ]; + RUST_SRC_PATH = "${rust-toolchain}/lib/rustlib/src/rust/library"; + }; }; formatter.${system} = pkgs.nixfmt-tree;