home/cargo: init

This commit is contained in:
2025-04-03 16:12:25 +02:00
parent c374c8916e
commit 48ac907d9e
4 changed files with 52 additions and 0 deletions

View File

@@ -151,6 +151,7 @@
direnv-auto-prune = ./home/modules/programs/direnv/auto-prune.nix;
newsboat = ./home/modules/programs/newsboat;
mpd-auto-updater = ./home/modules/services/mpd.nix;
cargo = ./home/modules/programs/cargo;
};
homeConfigurations = {

View File

@@ -14,6 +14,7 @@ in {
./programs/bat.nix
./programs/beets.nix
./programs/bottom.nix
./programs/cargo.nix
./programs/comma.nix
./programs/direnv
./programs/eza.nix
@@ -49,6 +50,7 @@ in {
./modules/colors.nix
./modules/shellAliases.nix
./modules/uidGid.nix
./modules/programs/cargo
./modules/programs/gpg
./modules/programs/neovim/auto-clean-swapfiles.nix
./modules/programs/nix-index/auto-update-database.nix

View File

@@ -0,0 +1,40 @@
{ config, pkgs, lib, ... }:
let
cfg = config.programs.cargo;
format = pkgs.formats.toml { };
cargoHome = lib.traceVal (config.home.sessionVariables.CARGO_HOME or "${config.home.homeDirectory}/.cargo");
relativeCargoHome = lib.strings.removePrefix config.home.homeDirectory cargoHome;
in
{
options.programs.cargo = {
enable = lib.mkEnableOption "cargo, the rust package manager and build tool";
package = lib.mkPackageOption pkgs "cargo" { };
addPackageToEnvironment = lib.mkOption {
description = "Whether to add cargo to the user's environment.";
type = lib.types.bool;
default = true;
example = false;
};
settings = lib.mkOption {
description = "cargo settings";
type = lib.types.submodule {
freeformType = format.type;
};
};
};
config = lib.mkIf cfg.enable {
home = {
sessionVariables.CARGO_HOME = lib.mkIf config.home.preferXdgDirectories (lib.mkDefault "${config.xdg.dataHome}/cargo");
packages = lib.mkIf cfg.addPackageToEnvironment [ cfg.package ];
file."${relativeCargoHome}/config.toml" = lib.mkIf (cfg.settings != { }) {
source = format.generate "cargo-config.toml" cfg.settings;
};
};
};
}

9
home/programs/cargo.nix Normal file
View File

@@ -0,0 +1,9 @@
{ ... }:
{
programs.cargo = {
enable = true;
settings = {
cargo-new.vcs = "git";
};
};
}