Signumone-ks para NixOS

Hola a todxs, publico acá porque creo que Signumone es solo utilizado en Costa Rica y actualmente uso Debian con Nix (Un admin. de paquetes muy cool disponible para Linux y MacOS). Esto también puede ser útil para quién planea usar NixOS (Nix, pero hecho un sistema operativo. Otro concepto bastante cool que podrían probar si están interesados).

Como necesito reportar a Hacienda y uso Signumone-ks, decidí hacer un paquete en Nix para poder instalarlo (sin tener que descargar el .deb/.rpm cada vez). Acá está la receta (el default.nix):

{ stdenv, fetchurl, dpkg, autoPatchelfHook, makeWrapper,
  atk, ffmpeg, ffmpeg_2, ffmpeg_3, gdk-pixbuf, glibc, gtk2-x11, gtk3, libav_0_8,
  libXtst, pango }:

stdenv.mkDerivation rec {
  pname = "signumone-ks";
  version = "3.1.2";

  src = fetchurl {
    url = "https://cdn-dist.signum.one/${version}/${pname}-${version}.deb";
    sha256 = "4efd80e61619ccf26df1292194fcec68eb14d77dfcf0a1a673da4cf5bf41f4b7";
  };

  nativeBuildInputs = [
    autoPatchelfHook
    dpkg
    makeWrapper
  ];

  # Test Pango
  buildInputs = [
    atk glibc gdk-pixbuf stdenv.cc.cc ffmpeg ffmpeg_2 ffmpeg_3
    libav_0_8 gtk2-x11 gtk3 pango libXtst
  ];

  libPath = stdenv.lib.makeLibraryPath buildInputs;

  unpackPhase = ''
    dpkg-deb -x ${src} ./
  '';

  installPhase = ''
    DESKTOP_PATH=$out/share/applications/signumone-ks.desktop
    LIB_DIR=$out/lib/signumone-ks

    mkdir -p $out/{bin,share/applications,lib/signumone-ks}
    mv opt/SignumOne-KS/SignumOne-KS.desktop $DESKTOP_PATH
    mv opt $out

    # Based on https://github.com/NixOS/nixpkgs/pull/50220/files
    # Wasn't able to find them
    ln -s ${ffmpeg_2.out}/lib/libavcodec.so.56 $LIB_DIR/libavcodec-ffmpeg.so.56
    ln -s ${ffmpeg_2.out}/lib/libavcodec.so.56 $LIB_DIR/libavcodec.so.55
    ln -s ${ffmpeg_2.out}/lib/libavcodec.so.56 $LIB_DIR/libavcodec.so.54
    ln -s ${ffmpeg_2.out}/lib/libavformat.so.56 $LIB_DIR/libavformat-ffmpeg.so.56
    ln -s ${ffmpeg_2.out}/lib/libavformat.so.56 $LIB_DIR/libavformat.so.55
    ln -s ${ffmpeg_2.out}/lib/libavformat.so.56 $LIB_DIR/libavformat.so.54

    sed -e "s|\(Exec=\)/opt/SignumOne-KS|\1$out/bin|g" -i $DESKTOP_PATH
    sed -e "s|\(Icon=\)|\1$out|g" -i $DESKTOP_PATH

    makeWrapper $out/opt/SignumOne-KS/SignumOne-KS \
      $out/bin/SignumOne-KS \
      --prefix LD_LIBRARY_PATH : ${libPath}
  '';

  meta = with stdenv.lib; {
    description = "Software intended for usage with Costa Rica's \"Firma Digital\" requirements";
    homepage = "https://signum.one/download.html";
    license = licenses.unfree;
  };
}

Para instalar, necesitan instalar Nix. Luego, sería correr:

nix-build -E 'with import <nixpkgs> { }; callPackage ./direccion/del/default.nix {}'

Ojalá sea útil. Definitivamente necesita modificaciones porque está cargando bastantes bibliotecas, pero sí aseguro que en este estado corre bien.

1 me gusta

Hola, ya me aprobaron el código en el repositorio general de nixpkgs, entonces pueden usar lo siguiente:

#Para NixOS
nix-env -iA nixos.signumone-ks

#Usando solo Nix
nix-env -iA nixpkgs.signumone-ks