mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
atool is a commandline archive manager that uses packages like gnutar, p7zip, unrar, and zip as backends for viewing, creating, and extracting their corresponding archive formats.
84 lines
2.0 KiB
Nix
84 lines
2.0 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib)
|
|
mkOption
|
|
types
|
|
;
|
|
cfg = config.programs.atool;
|
|
in
|
|
{
|
|
meta.maintainers = [ lib.hm.maintainers.oneorseveralcats ];
|
|
|
|
options.programs.atool = {
|
|
enable = lib.mkEnableOption "atool a commandline archive manager.";
|
|
|
|
package = lib.mkPackageOption pkgs "atool" { nullable = true; };
|
|
|
|
finalPackage = mkOption {
|
|
type = types.package;
|
|
readOnly = true;
|
|
description = ''
|
|
Final atool package bundled with extraPackages.
|
|
'';
|
|
};
|
|
|
|
settings = mkOption {
|
|
type = with types; attrsOf (either str int);
|
|
default = { };
|
|
example = {
|
|
path_unrar = "unrar-free";
|
|
};
|
|
description = ''
|
|
atool settings to generate {file}`~/.atoolrc`.
|
|
'';
|
|
};
|
|
|
|
extraPackages = mkOption {
|
|
type = types.listOf types.package;
|
|
default = [ ];
|
|
example = lib.literalExpression ''
|
|
# all supported archive backends
|
|
with pkgs; [ bzip2 cpio gnutar gzip lhasa lzop p7zip unrar-free unzip xz zip ]
|
|
'';
|
|
description = "Extra packages for atool.";
|
|
};
|
|
};
|
|
|
|
config =
|
|
let
|
|
atoolPackage =
|
|
if (cfg.extraPackages != [ ]) then
|
|
(pkgs.symlinkJoin {
|
|
name = "atool-wrapped";
|
|
paths = [ cfg.package ];
|
|
buildInputs = [ pkgs.makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/atool \
|
|
--suffix PATH : ${lib.makeBinPath cfg.extraPackages}
|
|
'';
|
|
})
|
|
else
|
|
cfg.package;
|
|
in
|
|
lib.mkIf cfg.enable {
|
|
programs.atool.finalPackage = atoolPackage;
|
|
|
|
home.packages = lib.mkIf (cfg.package != null) [
|
|
cfg.finalPackage
|
|
];
|
|
|
|
home.file.".atoolrc" = lib.mkIf (cfg.settings != { }) {
|
|
source = pkgs.writeText ".atoolrc" (
|
|
lib.generators.toKeyValue {
|
|
mkKeyValue = lib.generators.mkKeyValueDefault { } " ";
|
|
} cfg.settings
|
|
);
|
|
};
|
|
};
|
|
}
|