tools for building gleam projects with nix

gleam2nix: make workspace

foxgirl.engineering 056a504d c1375239

verified
+25 -62
+3 -42
Cargo.toml
··· 2 2 # 3 3 # SPDX-License-Identifier: 0BSD 4 4 5 - [package] 6 - name = "gleam2nix" 7 - version = "0.1.0" 8 - edition = "2024" 9 - 10 - # Read <https://corrode.dev/blog/pitfalls-of-safe-rust/#clippy-can-prevent-many-of-these-issues> 11 - [lints.rust] 12 - arithmetic_overflow = "deny" 13 - 14 - [lints.clippy] 15 - checked_conversions = "deny" 16 - cast_possible_truncation = "deny" 17 - cast_sign_loss = "deny" 18 - cast_possible_wrap = "deny" 19 - cast_precision_loss = "deny" 20 - integer_division = "deny" 21 - arithmetic_side_effects = "deny" 22 - unchecked_duration_subtraction = "deny" 23 - unwrap_used = "warn" 24 - expect_used = "warn" 25 - panicking_unwrap = "deny" 26 - option_env_unwrap = "deny" 27 - indexing_slicing = "deny" 28 - join_absolute_paths = "deny" 29 - serde_api_misuse = "deny" 30 - uninit_vec = "deny" 31 - transmute_int_to_char = "deny" 32 - transmute_int_to_float = "deny" 33 - transmute_ptr_to_ref = "deny" 34 - transmute_undefined_repr = "deny" 35 - 36 - [dependencies] 37 - base64 = "0.22.1" 38 - facet = "0.29" 39 - facet-args = "0.29" 40 - facet-json = { version = "0.29", default-features = false } 41 - facet-toml = { version = "0.29", default-features = false, features = [ 42 - "std", 43 - "deserialize", 44 - ] } 45 - hex = "0.4.3" 46 - miette = { version = "7.6.0", features = ["fancy"], default-features = false } 5 + [workspace] 6 + resolver = "3" 7 + members = ["gleam2nix"]
+20
gleam2nix/Cargo.toml
··· 1 + # SPDX-FileCopyrightText: 2025 Ruby Iris Juric <ruby@srxl.me> 2 + # 3 + # SPDX-License-Identifier: 0BSD 4 + 5 + [package] 6 + name = "gleam2nix" 7 + version = "0.1.0" 8 + edition = "2024" 9 + 10 + [dependencies] 11 + base64 = "0.22.1" 12 + facet = "0.29" 13 + facet-args = "0.29" 14 + facet-json = { version = "0.29", default-features = false } 15 + facet-toml = { version = "0.29", default-features = false, features = [ 16 + "std", 17 + "deserialize", 18 + ] } 19 + hex = "0.4.3" 20 + miette = { version = "7.6.0", features = ["fancy"], default-features = false }
+1 -1
nix/Cargo.nix
··· 742 742 requiredFeatures = [ ]; 743 743 } 744 744 ]; 745 - src = lib.cleanSourceWith { filter = sourceFilter; src = ../.; }; 745 + src = lib.cleanSourceWith { filter = sourceFilter; src = ../gleam2nix; }; 746 746 dependencies = [ 747 747 { 748 748 name = "base64";
+1 -19
nix/gleam2nix.nix
··· 3 3 # SPDX-License-Identifier: 0BSD 4 4 5 5 { 6 - lib, 7 6 pkgs, 8 7 rust-toolchain, 9 8 }: 10 9 11 - let 12 - fs = lib.fileset; 13 - fileset = fs.intersection (fs.gitTracked ../.) ( 14 - fs.unions [ 15 - ../src 16 - ../Cargo.lock 17 - ../Cargo.toml 18 - ] 19 - ); 20 - in 21 - 22 10 (pkgs.callPackage ./Cargo.nix { 23 11 buildRustCrateForPkgs = 24 12 pkgs': ··· 26 14 cargo = rust-toolchain; 27 15 rustc = rust-toolchain; 28 16 }; 29 - }).rootCrate.build.overrideAttrs 30 - { 31 - src = fs.toSource { 32 - root = ../.; 33 - inherit fileset; 34 - }; 35 - } 17 + }).workspaceMembers.gleam2nix.build
src/app.rs gleam2nix/src/app.rs
src/entrypoint.rs gleam2nix/src/entrypoint.rs
src/gleam_toml.rs gleam2nix/src/gleam_toml.rs
src/hash.rs gleam2nix/src/hash.rs
src/main.rs gleam2nix/src/main.rs
src/manifest.rs gleam2nix/src/manifest.rs
src/nix.rs gleam2nix/src/nix.rs