Unofficial reproducible Nix package for the Archil distributed storage client.
Archil is a distributed storage service that allows you to mount cloud storage as a local filesystem using FUSE.
This flake packages the official Archil client binary for use with Nix and NixOS.
- ✅ Multi-architecture support (x86_64-linux, aarch64-linux)
- ✅ Automatic dependency management via autoPatchelfHook
- ✅ Reproducible builds with locked dependencies
- ✅ Declarative configuration for NixOS
Build and run directly:
# Build the package
nix build github:conneroisu/archil-flake#archil
# Run the client
./result/bin/archil --versionAdd to your flake.nix:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
archil.url = "github:conneroisu/archil-flake";
};
outputs = { nixpkgs, archil, ... }: {
nixosConfigurations.your-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
{
environment.systemPackages = [
archil.packages.x86_64-linux.archil
];
}
];
};
};
}{
inputs.archil.url = "github:conneroisu/archil-flake";
# In your home-manager configuration:
home.packages = [
inputs.archil.packages.${pkgs.system}.archil
];
}# Enter a shell with archil available
nix shell github:conneroisu/archil-flake#archil
# Or use nix develop if you've cloned the repo
nix develop
archil --versionIf you're not using Nix, install via the official method:
curl https://s3.amazonaws.com/archil-client/install | shRequirements:
- Linux kernel 5.1 or greater
- libfuse2 installed (
apt install fuseon Debian/Ubuntu)
Before mounting, you need to authenticate. Archil supports multiple authentication methods:
- Email/Password: Interactive login
- API Key: Non-interactive (recommended for servers)
- OAuth: Web-based authentication
See Archil Console for authentication setup.
Basic mount command:
sudo archil mount <[email protected]>/<disk-name> /mnt/archil --region <region>Example (using the disk from your console):
# Create mount point
sudo mkdir -p /mnt/archil
# Mount the disk
sudo archil mount [email protected]/connix-t /mnt/archil --region aws-us-east-1
# Verify the mount
df -h /mnt/archil# Write files
echo "Hello from Archil!" | sudo tee /mnt/archil/test.txt
# Read files
cat /mnt/archil/test.txt
# List contents
ls -la /mnt/archil/sudo archil unmount /mnt/archilarchil mount # Mount a disk to a local path
archil unmount # Unmount a disk
archil checkout # Check out a disk for offline use
archil checkin # Check in changes after offline use
archil delegations # Manage access delegations
archil status # Show disk and mount status
archil set-log-level # Configure logging verbosity
archil set-cache-expiry # Configure cache settings
archil version # Show version information
| Feature | Nix Flake | Traditional (curl | sh) |
|---|---|---|
| Reproducibility | ✅ Pinned versions, reproducible | ❌ "Latest" version, can change |
| Dependency Management | ✅ Automatic, isolated | |
| Rollback | ✅ Easy with Nix generations | ❌ Manual reinstall |
| Multi-version | ✅ Can run multiple versions | ❌ Only one system-wide |
| NixOS Integration | ✅ Native | |
| Setup Complexity | ✅ Single command | |
| CI/CD | ✅ Ideal for reproducible builds |
Recommendation:
- Use Nix Flake if you're on NixOS or using Nix for development
- Use Traditional for quick setups on standard Linux distributions
- Nix with flakes enabled (Nix 2.4+)
- One of: x86_64-linux, aarch64-linux
- All dependencies (FUSE2, OpenSSL, libcap) are handled automatically
- Linux kernel 5.1+
- libfuse2 (FUSE version 2.x)
- Root or sudo access for mounting
Nix users: The package includes FUSE2 automatically, but you may need to enable FUSE in your kernel:
# In your NixOS configuration:
boot.kernelModules = [ "fuse" ];Traditional users: Install libfuse2:
# Debian/Ubuntu
sudo apt install fuse libfuse2
# Fedora/RHEL
sudo dnf install fuse fuse-libs
# Arch Linux
sudo pacman -S fuse2Archil requires root privileges to mount filesystems:
sudo archil mount ...Or add your user to the fuse group:
sudo usermod -a -G fuse $USER- Verify your credentials at Archil Console
- Ensure you're using the correct region (
--region aws-us-east-1) - Check disk name format:
[email protected]/disk-name
# Clone the repository
git clone https://github.com/conneroisu/archil-flake.git
cd archil-flake
# Build
nix build .#archil
# Test
./result/bin/archil --version
# Enter development shell
nix developThis repository uses a GitHub Actions workflow that automatically checks for new Archil versions every Monday at 00:00 UTC. When a new version is detected:
- The workflow runs
./update.shto update version and hashes - A pull request is automatically created with the changes
- Comprehensive validation runs on multiple architectures:
- x86_64-linux build test
- aarch64-linux build test
- Nix flake validation
- Code formatting verification
- If all checks pass, the PR is automatically merged
You can also trigger the update workflow manually:
- Go to the "Actions" tab in GitHub
- Select "Update Archil Version"
- Click "Run workflow"
To manually update to a newer Archil version:
- Run the update script:
./update.sh --verboseThe script will automatically:
- Fetch the latest version from upstream
- Verify packages exist for both architectures
- Compute SHA256 hashes using
nix-prefetch-url - Update
flake.nixwith new version and hashes
- Test the build:
nix build .#archil
./result/bin/archil --version- Commit and push:
git add flake.nix
git commit -m "chore: update archil to X.Y.Z-TIMESTAMP"
git pushAlternatively, you can manually update:
- Update the version number in
flake.nix:84 - Fetch new hashes:
# x86_64
nix-prefetch-url https://s3.amazonaws.com/archil-client/pkg/archil-<VERSION>.x86_64.rpm
# aarch64
nix-prefetch-url https://s3.amazonaws.com/archil-client/pkg/archil-<VERSION>.aarch64.rpm- Update the
sha256hashes inflake.nix:91-94 - Rebuild and test
The Archil client binary is proprietary software by Archil, Inc. This Nix flake packaging is provided as-is for convenience.
Contributions are welcome! Please open an issue or pull request on GitHub.