generated from andy/linux-nixos-hyprland-config-dotfiles
Initial commit
This commit is contained in:
10
home/projects/.gitconfig.personal
Normal file
10
home/projects/.gitconfig.personal
Normal file
@@ -0,0 +1,10 @@
|
||||
[user]
|
||||
email = artem.shv@proton.me
|
||||
name = xnm
|
||||
signingkey = ~/.ssh/github_xnm1.pub
|
||||
|
||||
[github]
|
||||
user = "XNM1"
|
||||
|
||||
[core]
|
||||
sshCommand = "ssh -i ~/.ssh/github_xnm1"
|
33
home/projects/optimized-pre-config-rust/Cargo.toml
Normal file
33
home/projects/optimized-pre-config-rust/Cargo.toml
Normal file
@@ -0,0 +1,33 @@
|
||||
### Cargo code snippets for different optimizations
|
||||
|
||||
## Dev build compilation speed optimization (more https://benw.is/posts/how-i-improved-my-rust-compile-times-by-seventy-five-percent)
|
||||
# Work only with the nightly version of Rust by the time it was written; it is recommended NOT to use it in production for now
|
||||
cargo-features = [ "codegen-backend", "profile-rustflags" ]
|
||||
# Important: It provides less useful error messages during compilation
|
||||
[profile.dev]
|
||||
opt-level = 1
|
||||
codegen-backend = "cranelift"
|
||||
rustflags = [
|
||||
"-Z", "threads=8", # Enable parallel frontend compiling
|
||||
"-C", "linker=clang", # Use clang as the linker
|
||||
"-C", "link-arg=-fuse-ld=mold", # Use mold as the linker backend
|
||||
"-C", "link-arg=-static",
|
||||
]
|
||||
[profile.dev.package."*"]
|
||||
opt-level = 3
|
||||
codegen-backend = "cranelift"
|
||||
|
||||
[profile.dev.build-override]
|
||||
rustflags = [ "-Z", "threads=8", "-C", "link-arg=-fuse-ld=/run/current-system/sw/bin/mold" ] # `/run/current-system/sw/bin/mold` is an absolute path to the mold executable
|
||||
|
||||
## Release build size optimization (more https://github.com/johnthagen/min-sized-rust)
|
||||
# You can also use programs such as `upx` for size optimization
|
||||
[profile.release]
|
||||
strip = true
|
||||
opt-level = "z" # You can try 's' instead of 'z' if you want to optimize for speed
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
panic = "abort" # DELETE extra unwinding code that provides helpful backtrace information for runtime errors
|
||||
|
||||
[profile.release.build-override]
|
||||
rustflags = [ "-Z", "location-detail=none" ] # DELETE a useful traceback information such as file, line, and column information for panic!() and [track_caller]
|
157
home/projects/optimized-pre-config-rust/flake.nix
Normal file
157
home/projects/optimized-pre-config-rust/flake.nix
Normal file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
description = "Flake for my-crate";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
|
||||
crane = {
|
||||
url = "github:ipetkov/crane";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
flake-utils.follows = "flake-utils";
|
||||
};
|
||||
};
|
||||
|
||||
advisory-db = {
|
||||
url = "github:rustsec/advisory-db";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, crane, flake-utils, rust-overlay, advisory-db, ... }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ (import rust-overlay) ];
|
||||
};
|
||||
|
||||
inherit (pkgs) lib;
|
||||
|
||||
rustCustomToolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
|
||||
craneLib = (crane.mkLib pkgs).overrideToolchain rustCustomToolchain;
|
||||
src = craneLib.cleanCargoSource (craneLib.path ./.);
|
||||
|
||||
# Common arguments can be set here to avoid repeating them later
|
||||
commonArgs = {
|
||||
inherit src;
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkgs.pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
# Add additional build inputs here
|
||||
pkgs.openssl
|
||||
pkgs.taplo
|
||||
] ++ lib.optionals pkgs.stdenv.isDarwin [
|
||||
# Additional darwin specific inputs can be set here
|
||||
pkgs.libiconv
|
||||
];
|
||||
|
||||
# Additional environment variables can be set directly
|
||||
# MY_CUSTOM_VAR = "some value";
|
||||
};
|
||||
|
||||
# Build *just* the cargo dependencies, so we can reuse
|
||||
# all of that work (e.g. via cachix) when running in CI
|
||||
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
||||
|
||||
# Build the actual crate itself, reusing the dependency
|
||||
# artifacts from above.
|
||||
my-crate = craneLib.buildPackage (commonArgs // {
|
||||
inherit cargoArtifacts;
|
||||
});
|
||||
in
|
||||
{
|
||||
checks = {
|
||||
# Build the crate as part of `nix flake check` for convenience
|
||||
inherit my-crate;
|
||||
|
||||
# Run clippy (and deny all warnings) on the crate source,
|
||||
# again, resuing the dependency artifacts from above.
|
||||
#
|
||||
# Note that this is done as a separate derivation so that
|
||||
# we can block the CI if there are issues here, but not
|
||||
# prevent downstream consumers from building our crate by itself.
|
||||
my-crate-clippy = craneLib.cargoClippy (commonArgs // {
|
||||
inherit cargoArtifacts;
|
||||
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
|
||||
});
|
||||
|
||||
my-crate-doc = craneLib.cargoDoc (commonArgs // {
|
||||
inherit cargoArtifacts;
|
||||
});
|
||||
|
||||
# Check formatting
|
||||
my-crate-fmt = craneLib.cargoFmt {
|
||||
inherit src;
|
||||
};
|
||||
|
||||
# Audit dependencies
|
||||
my-crate-audit = craneLib.cargoAudit {
|
||||
inherit src advisory-db;
|
||||
};
|
||||
|
||||
# Audit licenses
|
||||
my-crate-deny = craneLib.cargoDeny {
|
||||
inherit src;
|
||||
};
|
||||
|
||||
# Run tests with cargo-nextest
|
||||
# Consider setting `doCheck = false` on `my-crate` if you do not want
|
||||
# the tests to run twice
|
||||
my-crate-nextest = craneLib.cargoNextest (commonArgs // {
|
||||
inherit cargoArtifacts;
|
||||
partitions = 1;
|
||||
partitionType = "count";
|
||||
});
|
||||
};
|
||||
|
||||
packages = {
|
||||
default = my-crate;
|
||||
};
|
||||
|
||||
apps.default = flake-utils.lib.mkApp {
|
||||
drv = my-crate;
|
||||
};
|
||||
|
||||
devShells.default = craneLib.devShell {
|
||||
# Inherit inputs from checks.
|
||||
checks = self.checks.${system};
|
||||
|
||||
# Additional dev-shell environment variables can be set directly
|
||||
# MY_CUSTOM_DEVELOPMENT_VAR = "something else";
|
||||
|
||||
# Extra inputs can be added here; cargo and rustc are provided by default.
|
||||
packages = with pkgs; [
|
||||
cargo-watch
|
||||
cargo-deny
|
||||
cargo-audit
|
||||
cargo-update
|
||||
cargo-edit
|
||||
cargo-outdated
|
||||
cargo-license
|
||||
cargo-tarpaulin
|
||||
cargo-zigbuild
|
||||
cargo-nextest
|
||||
cargo-spellcheck
|
||||
cargo-modules
|
||||
cargo-bloat
|
||||
cargo-unused-features
|
||||
bacon
|
||||
helix
|
||||
just
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
42
home/projects/optimized-pre-config-rust/justfile
Normal file
42
home/projects/optimized-pre-config-rust/justfile
Normal file
@@ -0,0 +1,42 @@
|
||||
set export
|
||||
|
||||
set shell := ["fish", "-c"]
|
||||
|
||||
alias w := watch
|
||||
alias b := build
|
||||
alias r := release
|
||||
alias l := lint
|
||||
alias t := test
|
||||
alias c := coverage
|
||||
|
||||
# run `just --list` for project
|
||||
default:
|
||||
just --list
|
||||
|
||||
# run `cargo watch` for project
|
||||
watch:
|
||||
cargo watch
|
||||
|
||||
# run `cargo build` for project
|
||||
build:
|
||||
cargo build
|
||||
|
||||
# run `cargo build --release` for project
|
||||
release: test
|
||||
cargo build --release
|
||||
|
||||
# run `cargo zigbuild --target {target} --release` for project
|
||||
cross target: test
|
||||
cargo zigbuild --target $target --release
|
||||
|
||||
# run `cargo clippy` for project
|
||||
lint:
|
||||
cargo clippy
|
||||
|
||||
# run `carog nextest run` for project
|
||||
test:
|
||||
cargo nextest run
|
||||
|
||||
# run `cargo tarpaulin` for project
|
||||
coverage:
|
||||
cargo tarpaulin
|
11
home/projects/optimized-pre-config-rust/rust-toolchain.toml
Normal file
11
home/projects/optimized-pre-config-rust/rust-toolchain.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
[toolchain]
|
||||
channel = "nightly"
|
||||
components = [ "rust-src", "rust-analyzer", "rustc-codegen-cranelift", "miri", "llvm-tools", "rust-docs-json" ]
|
||||
targets = [
|
||||
"wasm32-unknown-unknown",
|
||||
"wasm32-wasi",
|
||||
"wasm32-wasi-preview1-threads",
|
||||
"x86_64-pc-windows-gnu",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
]
|
||||
profile = "default"
|
Reference in New Issue
Block a user