#home-dir #config-file #home

home-config

Use configuration file in the HOME directory

2 unstable releases

Uses new Rust 2024

0.7.0 Jan 25, 2026
0.6.0 Nov 1, 2022
0.5.0 Sep 14, 2022
0.4.0 May 24, 2022
0.1.0 Mar 5, 2022

#328 in Configuration

Download history 76/week @ 2025-10-20 94/week @ 2025-10-27 63/week @ 2025-11-03 39/week @ 2025-11-10 59/week @ 2025-11-17 212/week @ 2025-11-24 37/week @ 2025-12-01 51/week @ 2025-12-08 111/week @ 2025-12-15 132/week @ 2025-12-22 62/week @ 2025-12-29 117/week @ 2026-01-05 99/week @ 2026-01-12 127/week @ 2026-01-19 255/week @ 2026-01-26 213/week @ 2026-02-02

696 downloads per month
Used in wpe

MIT license

14KB
227 lines

home-config

Crates.io docs.rs LICENSE

Use configuration file in the HOME directory

Usage

use home_config::HomeConfig;

let config = HomeConfig::with_config_dir("app", "config");
// Linux: /home/name/.config/app/config
// macOS: /Users/name/.config/app/config
// Windows: C:\Users\name\.config\app\config

// Write
config.save("123456789").unwrap();

// Read
let data = config.read_to_string().unwrap();
// 123456789

Serde format support

home-config = { version = "*", features = ["json", "yaml", "toml", "hcl"] }

A JSON example:

use home_config::HomeConfig;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Default)]
struct People {
    name: String,
    age: u32,
}

let config = HomeConfig::with_file("test.json");
// Linux: /home/name/test.json
// macOS: /Users/name/test.json
// Windows: C:\Users\name\test.json

// Parse
let people = config.json::<People>().unwrap();
// people.name == "XiaoMing";
// people.age == 18;

// Save to file
config.save_json(&people).unwrap();

Dependencies

~0–3MB
~58K SLoC