Monday, November 25, 2024
roxide
is a lightweight, high-performance alternative to the traditional rm
command, designed with an emphasis on speed and data preservation. Unlike
standard rm, which permanently deletes files, roxide safely moves them to a
designated "trash
" directory. This approach enables efficient and fast file
removal without risking unintended data loss.
Note: I am an amateur Rust programmer, so while this code might not be the most refined, it prioritizes safety and has been thoroughly tested. If you have ideas for improvement or notice any issues, contributions are very welcome! This project is open to suggestions, code reviews, and pull requests from developers of all experience levels.
roxide file.txt
: files will moved to trash dir
. ie,
$HOME/.local/share/Trash/files/roxide revert
: restores perviously removed file/directory to its pervious
pathroxide -r | --recursive
: Remove directories and their contents recursivelyroxide -f | --force
: Remove without moving to trash directoryroxide -v | --verbose
: will print the file name and its out pathroxide some/dir/ -p .pdf
: will remove files matching the pattern from
some/dirroxide some/dir/ -rp .pdf
: will recursively remove files matching the
pattern from some/dirroxide some/dir/ -rp .pdf -l
: will list files, like dry runroxide some/* -i never
: will never promptroxide some/* -i once
: Prompt once before removing more than three files or
when removing recursivlyroxide some/* -i always
: Prompt before every removalroxide some/* -p .pdf -i always
: Prompt before every removalWarning
revert
flag but you can still access it from Trash dirgit clone https://github.com/abhi-xyz/roxide.git --depth=1
cd roxide
cargo build --release
cp target/release/roxide /usr/local/bin/
cargo install roxide
Add roxide
as a flake input: In your flake.nix file, add the roxide input
pointing to its GitHub repository.
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
roxide = {
url = "github:abhi-xyz/roxide";
inputs.nixpkgs.follows = "nixpkgs"; # Follows the nixpkgs input
};
};
outputs = { self, roxide, nixpkgs, ... }@inputs:
{
# Your NixOS configuration or other settings
};
}
Include roxide in NixOS configuration: In the outputs section, set up nixosConfigurations and add roxide as a module to enable it within your system configuration.
{
outputs = { self, roxide, nixpkgs, ... }@inputs:
{
nixosConfigurations."my-nixos-host" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/configuration.nix # Main NixOS configuration file
roxide.nixosModules.roxide # Enable the "roxide" module from the flake
];
};
};
}
Activate "roxide" in configuration.nix: Within configuration.nix, enable the "roxide" program:
{
# Other configurations...
program.roxide.enable = true; # note: its program not programs
}
Apply Configuration: After updating your configuration, apply it with:
sudo nixos-rebuild switch --flake .