{
description = "A Pacman inspired frontend for Nix";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = { self, nixpkgs }:
let
lib = nixpkgs.lib;
allSystems = lib.systems.flakeExposed;
forAllSystems = lib.genAttrs allSystems;
in
{
packages = forAllSystems (system:
let
manifest = builtins.fromTOML (builtins.readFile ./Cargo.toml);
pinix =
{ rustPlatform
, installShellFiles
, lib
}:
rustPlatform.buildRustPackage {
pname = manifest.package.name;
version = manifest.package.version;
src = ./.;
nativeBuildInputs = [ installShellFiles ];
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"console-0.16.0" = "sha256-t5hydPT3BXJqPl8zKieaId3KUltEbRPh2xmZMhy8Ut0=";
"indicatif-0.17.8" = "sha256-8xrGqDb6iUDhdvY937XFqC3GIZpq4tPMZAkKm218c/0=";
};
};
meta = with lib; {
description = "A Pacman inspired frontend for Nix";
homepage = "https://github.com/remi-dupre/pinix";
license = licenses.lgpl3;
mainProgram = "pinix";
};
postInstall =
let
wrappers = [ "nix" "nix-collect-garbage" "nixos-rebuild" "nix-shell" ];
install-wrappers =
lib.lists.forEach
wrappers
(nix-cmd:
let
pix-cmd = "pix" + (lib.strings.removePrefix "nix" nix-cmd);
pkg = pkgs.writeShellApplication {
name = pix-cmd;
text = ''pinix --pix-command ${nix-cmd} "$@"'';
};
in
''
cat ${pkg}/bin/${pix-cmd} > $out/bin/${pix-cmd}
chmod +x $out/bin/${pix-cmd}
''
);
in
lib.lists.foldl
(acc: line: acc + "\n" + line) ""
install-wrappers;
cargoSha256 = "sha256-6hKbAL3a1t1mHNUvvi65e/BkFoJQmvpZQlU58csmol4=";
};
pkgs = nixpkgs.legacyPackages.${system};
in
{
pinix = pkgs.callPackage pinix { };
default = self.packages.${system}.pinix;
}
);
};
}