From 5bc23f92d3d4e22342e33aa1c45c12410ba3f26b Mon Sep 17 00:00:00 2001 From: jackjohn7 <70782491+jackjohn7@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:40:38 -0600 Subject: [PATCH] setup flake --- .envrc | 3 ++ .gitignore | 1 + flake.lock | 27 ++++++++++++++++++ flake.nix | 20 ++++++++++++++ rustfmt.toml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ treefmt.toml | 7 +++++ 6 files changed, 136 insertions(+) create mode 100644 .envrc create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 rustfmt.toml create mode 100644 treefmt.toml diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..b9238c3 --- /dev/null +++ b/.envrc @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +use flake diff --git a/.gitignore b/.gitignore index eb5a316..75e92a9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target +.direnv diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..b161c00 --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..492ff35 --- /dev/null +++ b/flake.nix @@ -0,0 +1,20 @@ +{ + description = "A very basic flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = { self, nixpkgs }: let + pkgs = nixpkgs.legacyPackages."x86_64-linux"; + in { + + devShells."x86_64-linux".default = pkgs.mkShell { + buildInputs = with pkgs; [ + cargo rustc rustfmt clippy rust-analyzer glibc + ]; + nativeBuildInputs = [ pkgs.pkg-config ]; + env.RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + }; + }; +} diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..d997c8e --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,78 @@ +max_width = 80 +hard_tabs = true +tab_spaces = 4 +newline_style = "Unix" +use_small_heuristics = "Default" +fn_call_width = 60 +attr_fn_like_width = 70 +struct_lit_width = 18 +struct_variant_width = 35 +array_width = 60 +chain_width = 60 +single_line_if_else_max_width = 50 +reorder_imports = true +reorder_modules = true +remove_nested_parens = true +short_array_element_width_threshold = 10 +match_arm_leading_pipes = "Never" +fn_args_layout = "Vertical" +match_block_trailing_comma = false +edition = "2021" +merge_derives = true +use_try_shorthand = true +use_field_init_shorthand = true +force_explicit_abi = true +disable_all_formatting = false + +# --- unstable settings --- +# indent_style = "Block" +# wrap_comments = false +# format_code_in_doc_comments = false +# doc_comment_code_block_width = 100 +# normalize_comments = false +# normalize_doc_attributes = false +# format_strings = false +# format_macro_matchers = false +# format_macro_bodies = true +# hex_literal_case = "Preserve" +# empty_item_single_line = true +# struct_lit_single_line = true +# fn_single_line = false +# comment_width = 80 +# where_single_line = false +# imports_indent = "Block" +# imports_layout = "Mixed" +# imports_granularity = "Preserve" +# group_imports = "Preserve" +# reorder_impl_items = false +# type_punctuation_density = "Wide" +# space_before_colon = false +# space_after_colon = true +# spaces_around_ranges = false +# binop_separator = "Front" +# combine_control_expr = true +# overflow_delimited_expr = false +# struct_field_align_threshold = 0 +# enum_discrim_align_threshold = 0 +# match_arm_blocks = true +# force_multiline_blocks = false +# brace_style = "SameLineWhere" +# control_brace_style = "AlwaysSameLine" +# trailing_semicolon = true +# trailing_comma = "Vertical" +# version = "One" +# blank_lines_upper_bound = 1 +# blank_lines_lower_bound = 0 +# inline_attribute_width = 0 +# format_generated_files = true +# condense_wildcard_suffixes = false +# color = "Auto" +# required_version = "1.5.1" +# unstable_features = false +# skip_children = false +# hide_parse_errors = false +# error_on_line_overflow = false +# error_on_unformatted = false +# ignore = [] +# emit_mode = "Files" +# make_backup = false diff --git a/treefmt.toml b/treefmt.toml new file mode 100644 index 0000000..d87a324 --- /dev/null +++ b/treefmt.toml @@ -0,0 +1,7 @@ +[formatter.rust] +command = "rustfmt" +includes = ["*.rs"] + +[formatter.nix] +command = "alejandra" +includes = ["*.nix"] \ No newline at end of file