| Crates.io | nixman |
| lib.rs | nixman |
| version | 0.2.0 |
| created_at | 2025-06-05 07:39:37.741339+00 |
| updated_at | 2025-06-06 03:02:20.473887+00 |
| description | Recreate the Nix package manager style of package management for Arch Linux. |
| homepage | |
| repository | https://github.com/ofluffydev/nixman |
| max_upload_size | |
| id | 1701199 |
| size | 46,033 |
A Nix-inspired package manager for Arch Linux, designed to make system package management reproducible, auditable, and scriptable—without overstepping into areas you want to control yourself.
packages.yml)pacman or paru from the command lineArch Linux is powerful, but keeping your package list in sync across machines is tedious. nixman lets you:
nixman apply --pacstrapUnlike NixOS, nixman does not automate partitioning, timezones, or other system setup—just package management. You keep full control over your install process.
You can install nixman using Cargo, either from crates.io or from your local clone:
From crates.io:
cargo install nixman
From a local clone:
git clone https://github.com/ofluffydev/nixman.git
cd nixman
cargo install --path .
Freeze your current package list to YAML:
nixman freeze
This creates (or updates) ~/.config/nixman/packages.yml.
Copy your packages.yml to the new system, then run:
nixman apply --pacstrap
This will install all packages listed in the YAML using pacstrap (for initial installs) or pacman/paru.
Install a package and update your YAML:
nixman -S htop
Remove a package and update your YAML:
nixman -R htop
nixman update
The YAML file is simple and versioned:
packages:
- name: htop
version: 3.2.2-1
- name: neovim
version: 0.9.5-2
- git
You can edit this file by hand and/or keep it in git.
If you want to use the --paru flag (for installing/removing AUR packages), paru must be installed on your system. If your YAML file contains AUR packages and you do not have paru installed, nixman will fail to install or remove those packages.
Note: Bootstrapping a new system (e.g., with --pacstrap) that includes AUR packages in your YAML is currently unsupported. You can use the --continue flag to ignore failed packages and circumvent this limitation, but you will need to manually install AUR packages or rerun with --paru after the initial bootstrap.
You can use nixman as a Rust library to programmatically manage packages:
use nixman::{ensure_yml, write_package_list_to_yaml, parse_explicit_packages};
let yml_path = ensure_yml().unwrap();
let pkgs = parse_explicit_packages("htop 1.0.0-1", true);
write_package_list_to_yaml(&pkgs, &yml_path).unwrap();
Q: Does this replace Nix or NixOS?
A: No. This is for Arch users who want reproducible package management, not full system declarativity.
Q: Can I use this with AUR packages?
A: Yes! Use the --paru flag to install/remove AUR packages with paru. Note: If your YAML contains AUR packages, you must have paru installed, or those packages will not be handled.
Q: What about dotfiles, system config, etc?
A: nixman only manages packages. Use your favorite dotfile manager for the rest, optionally including your packages.yml in version control.
PRs and issues welcome! See the issues tab for more.
MIT OR Apache-2.0