pinix 0.3.2

Progress In Nix - Pacman inspired frontend for Nix
Documentation
{
  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-dydgMgkqvBNW7eJntFIhBBWqOQnGnpQsVPRIBdqf0fY=";
                  "indicatif-0.17.8" = "sha256-KaTEGLU904ZVz2tEFZ/ls6B3LKCxhOVVuWSSLOifSAk=";
                };
              };

              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;
        }
      );
    };
}