From e5faf58ba8c51f6cd8658dbfe2c61062f09418b9 Mon Sep 17 00:00:00 2001 From: Kiana Sheibani Date: Wed, 26 Nov 2025 17:45:12 -0500 Subject: [PATCH] feat: Rust templates --- flake.nix | 3 +- rust/cargo-nightly/crane+fenix/.envrc | 2 + rust/cargo-nightly/crane+fenix/Cargo.lock | 7 ++ rust/cargo-nightly/crane+fenix/Cargo.toml | 6 ++ rust/cargo-nightly/crane+fenix/flake.lock | 98 ++++++++++++++++++++ rust/cargo-nightly/crane+fenix/flake.nix | 59 ++++++++++++ rust/cargo-nightly/crane+fenix/package.nix | 19 ++++ rust/cargo-nightly/crane+fenix/shell.nix | 12 +++ rust/cargo-nightly/crane+fenix/src/main.rs | 3 + rust/cargo-nightly/nixpkgs+fenix/.envrc | 2 + rust/cargo-nightly/nixpkgs+fenix/Cargo.lock | 7 ++ rust/cargo-nightly/nixpkgs+fenix/Cargo.toml | 6 ++ rust/cargo-nightly/nixpkgs+fenix/flake.lock | 82 ++++++++++++++++ rust/cargo-nightly/nixpkgs+fenix/flake.nix | 35 +++++++ rust/cargo-nightly/nixpkgs+fenix/package.nix | 12 +++ rust/cargo-nightly/nixpkgs+fenix/shell.nix | 11 +++ rust/cargo-nightly/nixpkgs+fenix/src/main.rs | 3 + rust/cargo-stable/crane/.envrc | 2 + rust/cargo-stable/crane/Cargo.lock | 7 ++ rust/cargo-stable/crane/Cargo.toml | 6 ++ rust/cargo-stable/crane/flake.lock | 59 ++++++++++++ rust/cargo-stable/crane/flake.nix | 52 +++++++++++ rust/cargo-stable/crane/package.nix | 19 ++++ rust/cargo-stable/crane/shell.nix | 10 ++ rust/cargo-stable/crane/src/main.rs | 3 + rust/cargo-stable/nixpkgs/.envrc | 2 + rust/cargo-stable/nixpkgs/Cargo.lock | 7 ++ rust/cargo-stable/nixpkgs/Cargo.toml | 6 ++ rust/cargo-stable/nixpkgs/flake.lock | 43 +++++++++ rust/cargo-stable/nixpkgs/flake.nix | 23 +++++ rust/cargo-stable/nixpkgs/package.nix | 12 +++ rust/cargo-stable/nixpkgs/shell.nix | 10 ++ rust/cargo-stable/nixpkgs/src/main.rs | 3 + 33 files changed, 630 insertions(+), 1 deletion(-) create mode 100644 rust/cargo-nightly/crane+fenix/.envrc create mode 100644 rust/cargo-nightly/crane+fenix/Cargo.lock create mode 100644 rust/cargo-nightly/crane+fenix/Cargo.toml create mode 100644 rust/cargo-nightly/crane+fenix/flake.lock create mode 100644 rust/cargo-nightly/crane+fenix/flake.nix create mode 100644 rust/cargo-nightly/crane+fenix/package.nix create mode 100644 rust/cargo-nightly/crane+fenix/shell.nix create mode 100644 rust/cargo-nightly/crane+fenix/src/main.rs create mode 100644 rust/cargo-nightly/nixpkgs+fenix/.envrc create mode 100644 rust/cargo-nightly/nixpkgs+fenix/Cargo.lock create mode 100644 rust/cargo-nightly/nixpkgs+fenix/Cargo.toml create mode 100644 rust/cargo-nightly/nixpkgs+fenix/flake.lock create mode 100644 rust/cargo-nightly/nixpkgs+fenix/flake.nix create mode 100644 rust/cargo-nightly/nixpkgs+fenix/package.nix create mode 100644 rust/cargo-nightly/nixpkgs+fenix/shell.nix create mode 100644 rust/cargo-nightly/nixpkgs+fenix/src/main.rs create mode 100644 rust/cargo-stable/crane/.envrc create mode 100644 rust/cargo-stable/crane/Cargo.lock create mode 100644 rust/cargo-stable/crane/Cargo.toml create mode 100644 rust/cargo-stable/crane/flake.lock create mode 100644 rust/cargo-stable/crane/flake.nix create mode 100644 rust/cargo-stable/crane/package.nix create mode 100644 rust/cargo-stable/crane/shell.nix create mode 100644 rust/cargo-stable/crane/src/main.rs create mode 100644 rust/cargo-stable/nixpkgs/.envrc create mode 100644 rust/cargo-stable/nixpkgs/Cargo.lock create mode 100644 rust/cargo-stable/nixpkgs/Cargo.toml create mode 100644 rust/cargo-stable/nixpkgs/flake.lock create mode 100644 rust/cargo-stable/nixpkgs/flake.nix create mode 100644 rust/cargo-stable/nixpkgs/package.nix create mode 100644 rust/cargo-stable/nixpkgs/shell.nix create mode 100644 rust/cargo-stable/nixpkgs/src/main.rs diff --git a/flake.nix b/flake.nix index 2ec1f3f..02907d6 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,7 @@ bash = "bash_script_nixpkgs"; fish = "fish_script_nixpkgs"; python = "python_pyproject_nixpkgs_basic"; + rust = "rust_cargo-nightly_crane+fenix"; }; # Get all subdirectories of the given path @@ -35,7 +36,7 @@ ${concatStringsSep "_" subds} = { description = generateDesc subds; path = filterSource - (p: _: baseNameOf p != "flake.lock") + (p: _: !(elem (baseNameOf p) [ "flake.lock" "Cargo.lock" ])) (foldl' (dir: subd: /${dir}/${subd}) ./. subds); }; }) (flakeSubdirs ./.) // mapAttrs (from: to: diff --git a/rust/cargo-nightly/crane+fenix/.envrc b/rust/cargo-nightly/crane+fenix/.envrc new file mode 100644 index 0000000..af0cc93 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/.envrc @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +use flake diff --git a/rust/cargo-nightly/crane+fenix/Cargo.lock b/rust/cargo-nightly/crane+fenix/Cargo.lock new file mode 100644 index 0000000..bdfea16 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "hello" +version = "0.1.0" diff --git a/rust/cargo-nightly/crane+fenix/Cargo.toml b/rust/cargo-nightly/crane+fenix/Cargo.toml new file mode 100644 index 0000000..f6f3649 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "hello" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/rust/cargo-nightly/crane+fenix/flake.lock b/rust/cargo-nightly/crane+fenix/flake.lock new file mode 100644 index 0000000..641ec50 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/flake.lock @@ -0,0 +1,98 @@ +{ + "nodes": { + "crane": { + "locked": { + "lastModified": 1763938834, + "narHash": "sha256-j8iB0Yr4zAvQLueCZ5abxfk6fnG/SJ5JnGUziETjwfg=", + "owner": "ipetkov", + "repo": "crane", + "rev": "d9e753122e51cee64eb8d2dddfe11148f339f5a2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1764226020, + "narHash": "sha256-FzUCFwXNjLnnZmVqYj/FjlBhUpat59SExflEaIGT62s=", + "owner": "nix-community", + "repo": "fenix", + "rev": "2d8176c02f7be6d13578d24d5fd5049f1b46a4c5", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1764138170, + "narHash": "sha256-2bCmfCUZyi2yj9FFXYKwsDiaZmizN75cLhI/eWmf3tk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb813de6d2241bcb1b5af2d3059f560c66329967", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1764175386, + "narHash": "sha256-LfgFqvPz3C80VjaffSjy8lLyRWfbThhB7gE7IWXHjYU=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "71ddf07c1c75046df3bb496cf824de5c053d99ad", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "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", + "version": 7 +} diff --git a/rust/cargo-nightly/crane+fenix/flake.nix b/rust/cargo-nightly/crane+fenix/flake.nix new file mode 100644 index 0000000..23f75ed --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/flake.nix @@ -0,0 +1,59 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + systems.url = "github:nix-systems/default"; + + crane.url = "github:ipetkov/crane"; + fenix.url = "github:nix-community/fenix"; + fenix.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { self, nixpkgs, systems, crane, fenix, ... }: + let + eachSystem = nixpkgs.lib.genAttrs (import systems); + fenixToolchain = "default"; + in { + packages = eachSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + toolchain = fenix.packages.${system}.${fenixToolchain}.toolchain; + in { + hello = pkgs.callPackage ./package.nix { + craneLib = (crane.mkLib pkgs).overrideToolchain toolchain; + }; + default = self.packages.${system}.hello; + }); + + devShells = eachSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + default = import ./shell.nix { inherit pkgs crane fenix fenixToolchain; }; + }); + + checks = eachSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + toolchain = fenix.packages.${system}.${fenixToolchain}.toolchain; + craneLib = (crane.mkLib pkgs).overrideToolchain toolchain; + crate = self.packages.${system}.default; + in { + inherit crate; + + clippy = craneLib.cargoClippy ( + crate.commonArgs + // { + inherit (crate) cargoArtifacts; + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; + } + ); + + doc = craneLib.cargoDoc ( + crate.commonArgs + // { + inherit (crate) cargoArtifacts; + env.RUSTDOCFLAGS = "--deny warnings"; + } + ); + }); + }; +} diff --git a/rust/cargo-nightly/crane+fenix/package.nix b/rust/cargo-nightly/crane+fenix/package.nix new file mode 100644 index 0000000..6945646 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/package.nix @@ -0,0 +1,19 @@ +{ + craneLib, +}: + +let + commonArgs = { + src = craneLib.cleanCargoSource ./.; + strictDeps = true; + + buildInputs = [ + # Additional runtime dependencies + ]; + + passthru.commonArgs = commonArgs; + }; + + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + crate = craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; }); +in crate diff --git a/rust/cargo-nightly/crane+fenix/shell.nix b/rust/cargo-nightly/crane+fenix/shell.nix new file mode 100644 index 0000000..e53fb11 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/shell.nix @@ -0,0 +1,12 @@ +{ pkgs ? import {}, + crane ? builtins.getFlake "github:ipetkov/crane", + fenix ? builtins.getFlake "github:nix-community/fenix", + fenixToolchain ? "default" +}: +let + fenixPkgs = fenix.packages.${pkgs.system}; + toolchain = fenixPkgs.${fenixToolchain}.toolchain; + craneLib = (crane.mkLib pkgs).overrideToolchain toolchain; +in craneLib.devShell { + packages = [ fenixPkgs.rust-analyzer ]; +} diff --git a/rust/cargo-nightly/crane+fenix/src/main.rs b/rust/cargo-nightly/crane+fenix/src/main.rs new file mode 100644 index 0000000..0672e51 --- /dev/null +++ b/rust/cargo-nightly/crane+fenix/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, World!"); +} diff --git a/rust/cargo-nightly/nixpkgs+fenix/.envrc b/rust/cargo-nightly/nixpkgs+fenix/.envrc new file mode 100644 index 0000000..af0cc93 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/.envrc @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +use flake diff --git a/rust/cargo-nightly/nixpkgs+fenix/Cargo.lock b/rust/cargo-nightly/nixpkgs+fenix/Cargo.lock new file mode 100644 index 0000000..bdfea16 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "hello" +version = "0.1.0" diff --git a/rust/cargo-nightly/nixpkgs+fenix/Cargo.toml b/rust/cargo-nightly/nixpkgs+fenix/Cargo.toml new file mode 100644 index 0000000..f6f3649 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "hello" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/rust/cargo-nightly/nixpkgs+fenix/flake.lock b/rust/cargo-nightly/nixpkgs+fenix/flake.lock new file mode 100644 index 0000000..ef578f0 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/flake.lock @@ -0,0 +1,82 @@ +{ + "nodes": { + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1764226020, + "narHash": "sha256-FzUCFwXNjLnnZmVqYj/FjlBhUpat59SExflEaIGT62s=", + "owner": "nix-community", + "repo": "fenix", + "rev": "2d8176c02f7be6d13578d24d5fd5049f1b46a4c5", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1764138170, + "narHash": "sha256-2bCmfCUZyi2yj9FFXYKwsDiaZmizN75cLhI/eWmf3tk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb813de6d2241bcb1b5af2d3059f560c66329967", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1764175386, + "narHash": "sha256-LfgFqvPz3C80VjaffSjy8lLyRWfbThhB7gE7IWXHjYU=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "71ddf07c1c75046df3bb496cf824de5c053d99ad", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "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", + "version": 7 +} diff --git a/rust/cargo-nightly/nixpkgs+fenix/flake.nix b/rust/cargo-nightly/nixpkgs+fenix/flake.nix new file mode 100644 index 0000000..7441f09 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/flake.nix @@ -0,0 +1,35 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + systems.url = "github:nix-systems/default"; + + fenix.url = "github:nix-community/fenix"; + fenix.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { self, nixpkgs, systems, fenix, ... }: + let + eachSystem = nixpkgs.lib.genAttrs (import systems); + fenixToolchain = "default"; + in { + packages = eachSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + toolchain = fenix.packages.${system}.${fenixToolchain}.toolchain; + in { + hello = pkgs.callPackage ./package.nix { + rustPlatform = pkgs.makeRustPlatform { + rustc = toolchain; + cargo = toolchain; + }; + }; + default = self.packages.${system}.hello; + }); + + devShells = eachSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + default = import ./shell.nix { inherit pkgs fenix fenixToolchain; }; + }); + }; +} diff --git a/rust/cargo-nightly/nixpkgs+fenix/package.nix b/rust/cargo-nightly/nixpkgs+fenix/package.nix new file mode 100644 index 0000000..242ad5a --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/package.nix @@ -0,0 +1,12 @@ +{ + lib, + rustPlatform, +}: + +rustPlatform.buildRustPackage { + pname = "hello"; + version = "0.1"; + src = ./.; + + cargoLock.lockFile = ./Cargo.lock; +} diff --git a/rust/cargo-nightly/nixpkgs+fenix/shell.nix b/rust/cargo-nightly/nixpkgs+fenix/shell.nix new file mode 100644 index 0000000..42f8825 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/shell.nix @@ -0,0 +1,11 @@ +{ pkgs ? import {}, + fenix ? builtins.getFlake "github:nix-community/fenix", + fenixToolchain ? "default" +}: +let + inherit (pkgs) mkShellNoCC; + fenixPkgs = fenix.packages.${pkgs.system}; + toolchain = fenixPkgs.${fenixToolchain}.toolchain; +in mkShellNoCC { + packages = [ toolchain fenixPkgs.rust-analyzer ]; +} diff --git a/rust/cargo-nightly/nixpkgs+fenix/src/main.rs b/rust/cargo-nightly/nixpkgs+fenix/src/main.rs new file mode 100644 index 0000000..0672e51 --- /dev/null +++ b/rust/cargo-nightly/nixpkgs+fenix/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, World!"); +} diff --git a/rust/cargo-stable/crane/.envrc b/rust/cargo-stable/crane/.envrc new file mode 100644 index 0000000..af0cc93 --- /dev/null +++ b/rust/cargo-stable/crane/.envrc @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +use flake diff --git a/rust/cargo-stable/crane/Cargo.lock b/rust/cargo-stable/crane/Cargo.lock new file mode 100644 index 0000000..bdfea16 --- /dev/null +++ b/rust/cargo-stable/crane/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "hello" +version = "0.1.0" diff --git a/rust/cargo-stable/crane/Cargo.toml b/rust/cargo-stable/crane/Cargo.toml new file mode 100644 index 0000000..f6f3649 --- /dev/null +++ b/rust/cargo-stable/crane/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "hello" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/rust/cargo-stable/crane/flake.lock b/rust/cargo-stable/crane/flake.lock new file mode 100644 index 0000000..0a37cf6 --- /dev/null +++ b/rust/cargo-stable/crane/flake.lock @@ -0,0 +1,59 @@ +{ + "nodes": { + "crane": { + "locked": { + "lastModified": 1763938834, + "narHash": "sha256-j8iB0Yr4zAvQLueCZ5abxfk6fnG/SJ5JnGUziETjwfg=", + "owner": "ipetkov", + "repo": "crane", + "rev": "d9e753122e51cee64eb8d2dddfe11148f339f5a2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1764138170, + "narHash": "sha256-2bCmfCUZyi2yj9FFXYKwsDiaZmizN75cLhI/eWmf3tk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb813de6d2241bcb1b5af2d3059f560c66329967", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "crane": "crane", + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "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", + "version": 7 +} diff --git a/rust/cargo-stable/crane/flake.nix b/rust/cargo-stable/crane/flake.nix new file mode 100644 index 0000000..d524296 --- /dev/null +++ b/rust/cargo-stable/crane/flake.nix @@ -0,0 +1,52 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + systems.url = "github:nix-systems/default"; + + crane.url = "github:ipetkov/crane"; + }; + + outputs = { self, nixpkgs, systems, crane, ... }: + let eachSystem = nixpkgs.lib.genAttrs (import systems); + in { + packages = eachSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + hello = pkgs.callPackage ./package.nix { + craneLib = crane.mkLib pkgs; + }; + default = self.packages.${system}.hello; + }); + + devShells = eachSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + default = import ./shell.nix { inherit pkgs crane; }; + }); + + checks = eachSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + craneLib = crane.mkLib pkgs; + crate = self.packages.${system}.default; + in { + inherit crate; + + clippy = craneLib.cargoClippy ( + crate.commonArgs + // { + inherit (crate) cargoArtifacts; + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; + } + ); + + doc = craneLib.cargoDoc ( + crate.commonArgs + // { + inherit (crate) cargoArtifacts; + env.RUSTDOCFLAGS = "--deny warnings"; + } + ); + }); + }; +} diff --git a/rust/cargo-stable/crane/package.nix b/rust/cargo-stable/crane/package.nix new file mode 100644 index 0000000..6945646 --- /dev/null +++ b/rust/cargo-stable/crane/package.nix @@ -0,0 +1,19 @@ +{ + craneLib, +}: + +let + commonArgs = { + src = craneLib.cleanCargoSource ./.; + strictDeps = true; + + buildInputs = [ + # Additional runtime dependencies + ]; + + passthru.commonArgs = commonArgs; + }; + + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + crate = craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; }); +in crate diff --git a/rust/cargo-stable/crane/shell.nix b/rust/cargo-stable/crane/shell.nix new file mode 100644 index 0000000..7a34e46 --- /dev/null +++ b/rust/cargo-stable/crane/shell.nix @@ -0,0 +1,10 @@ +{ pkgs ? import {}, + crane ? builtins.getFlake "github:ipetkov/crane" +}: +let + inherit (pkgs) + rust-analyzer +; +in (crane.mkLib pkgs).devShell { + packages = [ rust-analyzer ]; +} diff --git a/rust/cargo-stable/crane/src/main.rs b/rust/cargo-stable/crane/src/main.rs new file mode 100644 index 0000000..0672e51 --- /dev/null +++ b/rust/cargo-stable/crane/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, World!"); +} diff --git a/rust/cargo-stable/nixpkgs/.envrc b/rust/cargo-stable/nixpkgs/.envrc new file mode 100644 index 0000000..af0cc93 --- /dev/null +++ b/rust/cargo-stable/nixpkgs/.envrc @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +use flake diff --git a/rust/cargo-stable/nixpkgs/Cargo.lock b/rust/cargo-stable/nixpkgs/Cargo.lock new file mode 100644 index 0000000..bdfea16 --- /dev/null +++ b/rust/cargo-stable/nixpkgs/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "hello" +version = "0.1.0" diff --git a/rust/cargo-stable/nixpkgs/Cargo.toml b/rust/cargo-stable/nixpkgs/Cargo.toml new file mode 100644 index 0000000..f6f3649 --- /dev/null +++ b/rust/cargo-stable/nixpkgs/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "hello" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/rust/cargo-stable/nixpkgs/flake.lock b/rust/cargo-stable/nixpkgs/flake.lock new file mode 100644 index 0000000..72ee575 --- /dev/null +++ b/rust/cargo-stable/nixpkgs/flake.lock @@ -0,0 +1,43 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1764138170, + "narHash": "sha256-2bCmfCUZyi2yj9FFXYKwsDiaZmizN75cLhI/eWmf3tk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb813de6d2241bcb1b5af2d3059f560c66329967", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "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", + "version": 7 +} diff --git a/rust/cargo-stable/nixpkgs/flake.nix b/rust/cargo-stable/nixpkgs/flake.nix new file mode 100644 index 0000000..9b0c8a8 --- /dev/null +++ b/rust/cargo-stable/nixpkgs/flake.nix @@ -0,0 +1,23 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + systems.url = "github:nix-systems/default"; + }; + + outputs = { self, nixpkgs, systems, ... }: + let eachSystem = nixpkgs.lib.genAttrs (import systems); + in { + packages = eachSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + hello = pkgs.callPackage ./package.nix {}; + default = self.packages.${system}.hello; + }); + + devShells = eachSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + default = import ./shell.nix { inherit pkgs; }; + }); + }; +} diff --git a/rust/cargo-stable/nixpkgs/package.nix b/rust/cargo-stable/nixpkgs/package.nix new file mode 100644 index 0000000..242ad5a --- /dev/null +++ b/rust/cargo-stable/nixpkgs/package.nix @@ -0,0 +1,12 @@ +{ + lib, + rustPlatform, +}: + +rustPlatform.buildRustPackage { + pname = "hello"; + version = "0.1"; + src = ./.; + + cargoLock.lockFile = ./Cargo.lock; +} diff --git a/rust/cargo-stable/nixpkgs/shell.nix b/rust/cargo-stable/nixpkgs/shell.nix new file mode 100644 index 0000000..b5dd7fd --- /dev/null +++ b/rust/cargo-stable/nixpkgs/shell.nix @@ -0,0 +1,10 @@ +{ pkgs ? import {} }: +let inherit (pkgs) + mkShellNoCC + rustc + cargo + rust-analyzer +; +in mkShellNoCC { + packages = [ rustc cargo rust-analyzer ]; +} diff --git a/rust/cargo-stable/nixpkgs/src/main.rs b/rust/cargo-stable/nixpkgs/src/main.rs new file mode 100644 index 0000000..0672e51 --- /dev/null +++ b/rust/cargo-stable/nixpkgs/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, World!"); +}