Add extract.sh script

This commit is contained in:
Hoang Nguyen 2024-03-14 00:00:00 +07:00
parent 50f8194fac
commit 59199874a3
Signed by: folliehiyuki
GPG Key ID: B0567C20730E9B11
6 changed files with 115 additions and 45 deletions

View File

@ -8,11 +8,11 @@
]
},
"locked": {
"lastModified": 1709485267,
"narHash": "sha256-bunOdYTK9YNiy+u0D6YN8q40oAeHoQ+9EgoatF3InJ8=",
"lastModified": 1710003968,
"narHash": "sha256-g8+K+mLiNG5uch35Oy9oDQBAmGSkCcqrd0Jjme7xiG0=",
"owner": "ipetkov",
"repo": "crane",
"rev": "e4a71521a8eafc07524c55326ecc4ea942b06e25",
"rev": "10484f86201bb94bd61ecc5335b1496794fedb78",
"type": "github"
},
"original": {
@ -28,11 +28,11 @@
]
},
"locked": {
"lastModified": 1709771483,
"narHash": "sha256-Hjzu9nCknHLQvhdaRFfCEprH0o15KcaNu1QDr3J88DI=",
"lastModified": 1710281379,
"narHash": "sha256-uFo9hxt982L3nFJeweW4Gip2esiGrIQlbvEGrNTh4AY=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "550340062c16d7ef8c2cc20a3d2b97bcd3c6b6f6",
"rev": "d9ea313bc4851670dc99c5cc979cb79750e7d670",
"type": "github"
},
"original": {
@ -48,11 +48,11 @@
]
},
"locked": {
"lastModified": 1709967935,
"narHash": "sha256-ZLLdGWs9njivxZsfSzfQN05g6WIyIe24bPb61y7FVqo=",
"lastModified": 1710427903,
"narHash": "sha256-sV0Q5ndvfjK9JfCg/QM/HX/fcittohvtq8dD62isxdM=",
"owner": "nix-community",
"repo": "disko",
"rev": "72818e54ec29427f8d9f9cfa6fc859d01ca6dc66",
"rev": "21d89b333ca300bef82c928c856d48b94a9f997c",
"type": "github"
},
"original": {
@ -102,11 +102,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1709126324,
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@ -144,11 +144,11 @@
]
},
"locked": {
"lastModified": 1709988192,
"narHash": "sha256-qxwIkl85P0I1/EyTT+NJwzbXdOv86vgZxcv4UKicjK8=",
"lastModified": 1710423955,
"narHash": "sha256-6N/65EqYVqCaz5SVoPMx2HgA+DJZAlw5lW+U9VHSSbE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b0b0c3d94345050a7f86d1ebc6c56eea4389d030",
"rev": "587719494ed18a184c98c4d55dde9469af4446bf",
"type": "github"
},
"original": {
@ -191,11 +191,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1709641033,
"narHash": "sha256-Eegyvq56NiXgrDrZ6FgE1lNCD2Mi6aLY/HFOeVG8ZtI=",
"lastModified": 1710171982,
"narHash": "sha256-WFMB+Yohcvego1/vOtaq+MJ8Wvp5meOANfNifg26Ie4=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "3881267e84cc966ded48601390e88fc13d960319",
"rev": "19ad7fd5724f30868748b8156ff25be838cd2bc5",
"type": "github"
},
"original": {
@ -211,11 +211,11 @@
]
},
"locked": {
"lastModified": 1709906691,
"narHash": "sha256-206XMy1NGW42bnHukJl5W2F90yHNoJc7+H3i+/8i2Pg=",
"lastModified": 1710120787,
"narHash": "sha256-tlLuB73OCOKtU2j83bQzSYFyzjJo3rjpITZE5MoofG8=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "2ad5ebce1e1be47a8cf330d85265ac09ffa15178",
"rev": "e76ff2df6bfd2abe06abd8e7b9f217df941c1b07",
"type": "github"
},
"original": {
@ -226,11 +226,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1709703039,
"narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=",
"lastModified": 1710272261,
"narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d",
"rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2",
"type": "github"
},
"original": {
@ -258,11 +258,11 @@
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1709428628,
"narHash": "sha256-//ZCCnpVai/ShtO2vPjh3AWgo8riXCaret6V9s7Hew4=",
"lastModified": 1710033658,
"narHash": "sha256-yiZiVKP5Ya813iYLho2+CcFuuHpaqKc/CoxOlANKcqM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "66d65cb00b82ffa04ee03347595aa20e41fe3555",
"rev": "b17375d3bb7c79ffc52f3538028b2ec06eb79ef8",
"type": "github"
},
"original": {
@ -356,11 +356,11 @@
]
},
"locked": {
"lastModified": 1709431943,
"narHash": "sha256-CqTcEJGITB3rfSuAcWC1QZnbVnIipXmIDbZHfxsAy80=",
"lastModified": 1710036830,
"narHash": "sha256-pnV4gO3N/7/GzyRSKTRlSfS/19KJiPSvYcL4apnSkoQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "362184acf4a991f27fc222864e94a2e81b3c3c9f",
"rev": "d09dac6a63a2ac4b74ac2ecdc19acd8c46c2da2c",
"type": "github"
},
"original": {
@ -377,11 +377,11 @@
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1709711091,
"narHash": "sha256-L0rSIU9IguTG4YqSj4B/02SyTEz55ACq5t8gXpzteYc=",
"lastModified": 1710427647,
"narHash": "sha256-X9vtu0cAi9V3wdGR0adNI20q9rzAILhdWIW/HE/K1iw=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "25dd60fdd08fcacee2567a26ba6b91fe098941dc",
"rev": "ebbca9385855f896a53aaf1eeb73770adb52fc0c",
"type": "github"
},
"original": {
@ -412,11 +412,11 @@
]
},
"locked": {
"lastModified": 1709911575,
"narHash": "sha256-yC2iOKe0BSZAeXLNPXPrsGn5BwUTYYZESKb+OblLnXY=",
"lastModified": 1710278050,
"narHash": "sha256-Oc6BP7soXqb8itlHI8UKkdf3V9GeJpa1S39SR5+HJys=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "9c57261c71871d2208a6dd4394774cca226c6dbc",
"rev": "35791f76524086ab4b785a33e4abbedfda64bd22",
"type": "github"
},
"original": {
@ -438,11 +438,11 @@
]
},
"locked": {
"lastModified": 1709946748,
"narHash": "sha256-cqa0y3qY0IhDyWtsv+YXF18tJaAMxScP70Zr+eELJKs=",
"lastModified": 1710379006,
"narHash": "sha256-n4C2wIUCi+aDDEejrRBERfhwvXsZbS5BDxfDvVc54Nk=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "7ec18304623cad3d51e469a6ac630444893baab0",
"rev": "dae307e517aba2d464ad09072d5b96c6e20f3a1f",
"type": "github"
},
"original": {

View File

@ -0,0 +1,63 @@
#!/bin/bash
# Require at least 1 argument
if [ $# -lt 1 ]; then
echo "Require at least 1 argument."
exit 1
fi
extract() {
local file="$1"
local mimetype="$(file --dereference --brief --mime-type -- "$file")"
local filename="$(basename "$file")"
if [[ $filename == @(*.tar.@(zst|gz|lz|lzma|lzo|xz|Z)|*.tb2|*.tz2|*.tbz|*.tbz2|*.taz|*.tgz|*.tlz|*.txz|*.tZ|*.taZ|*.tzst) ]] || [[ $mimetype == @(application/x-?(g)tar*|application/*-compressed-tar) ]]; then
tar -xf "$file" || bsdtar -xf "$file"
return
fi
if [[ $mimetype == application/zstd ]]; then
zstd -d "$file"; return
fi
if [[ $mimetype == @(application/x-xz*|application/*-xz-compressed) ]]; then
xz -kd "$file" || bsdtar -xf "$file"
return
fi
if [[ $mimetype == @(application/vnd.rar|application/vnd.comicbook-rar|application/x-rar*) ]]; then
unrar x -p- -- "$file" || bsdtar -xf "$file"
return
fi
if [[ $mimetype == application/x-7z-compressed ]]; then
7z x -p -- "$file" || bsdtar -xf "$file"
return
fi
if [[ $mimetype == @(application/vnd.efi.iso|application/x-*-rom|application/x-compressed-iso|application/x*-iso?(9660)-?(app)image) ]]; then
isoinfo -X -i "$file" || bsdtar -xf "$file"
return
fi
if [[ $mimetype == application/x-cpio* ]]; then
cpio -iF "$file" || bsdtar -xf "$file"
return
fi
if [[ $mimetype == application/?(x-)gzip ]]; then
bsdtar -xf "$file" || gzip -d "$file"
return
fi
if [[ $mimetype == @(application/vnd.ms-cab-compressed|application/x-archive|application/?(x-)bzip*|application/x-lzma|application/x-lzip|application/x-lha|application/x-lzh-compressed|application/x-lhz|application/x-lzop|application/x-lz4|application/x-lrzip) ]]; then
bsdtar -xf "$file"; return
fi
echo "File $file with mimetype $mimetype is not supported."
return 1
}
for file in "$@"; do
extract "$file" || exit 1
done

View File

@ -157,7 +157,7 @@ if [[ $mimetype == application/x-7z-compressed ]]; then
fi
if [[ $mimetype == @(application/vnd.efi.iso|application/x-*-rom|application/x-compressed-iso|application/x*-iso?(9660)-?(app)image) ]]; then
isoinfo -l -i "$FILE" || bsdtar -tf "$FILE"
isoinfo -f -i "$FILE" || bsdtar -tf "$FILE"
exit
fi
@ -166,7 +166,12 @@ if [[ $mimetype == application/x-cpio* ]]; then
exit
fi
if [[ $mimetype == @(application/?(x-)gzip|application/vnd.ms-cab-compressed|application/x-archive|application/?(x-)bzip*|application/x-lzma|application/x-lzip|application/x-lha|application/x-lzh-compressed|application/x-lhz|application/x-lzop|application/x-lz4|application/x-lrzip) ]]; then
if [[ $mimetype == application/?(x-)gzip ]]; then
bsdtar -tf "$FILE" || gzip -l "$FILE"
exit
fi
if [[ $mimetype == @(application/vnd.ms-cab-compressed|application/x-archive|application/?(x-)bzip*|application/x-lzma|application/x-lzip|application/x-lha|application/x-lzh-compressed|application/x-lhz|application/x-lzop|application/x-lz4|application/x-lrzip) ]]; then
bsdtar -tf "$FILE"; exit
fi

View File

@ -35,7 +35,6 @@ lib.mkMerge [
"$emacsDir"/bin/doom sync -e
'';
xdg.configFile = with lib; mkIf config.programs.emacs.enable
(mapAttrs' (key: val: nameValuePair "doom/${key}" val) doomConfigEntries);
xdg.configFile = with lib; (mapAttrs' (key: val: nameValuePair "doom/${key}" val) doomConfigEntries);
})
]

View File

@ -106,7 +106,7 @@
p = "pulumi";
t = "tofu";
v = "nvim";
vv = ''fzf --prompt "Edit files: " --preview "${config.xdg.binHome}/preview.sh {} 2>/dev/null" --bind "enter:become(nvim {+})"'';
vv = ''fzf --prompt "Edit files: " --preview "${config.xdg.binHome}/preview.sh {} \$FZF_PREVIEW_COLUMNS \$FZF_PREVIEW_LINES 2>/dev/null" --bind "enter:become(nvim {+})"'';
# special abbr, available for fish-shell only
"!!" = {

View File

@ -1,4 +1,4 @@
_: {
{ config, ... }: {
programs.fzf = {
defaultCommand = "fd --type f --follow --hidden --exclude .git --color never";
defaultOptions = [
@ -21,5 +21,8 @@ _: {
];
fileWidgetCommand = "fd . \$dir --follow --hidden --exclude .git --color never";
fileWidgetOptions = [
"--no-height --preview '${config.xdg.binHome}/preview.sh {} $FZF_PREVIEW_COLUMNS $FZF_PREVIEW_LINES 2>/dev/null'"
];
};
}