Skip to content

Instantly share code, notes, and snippets.

@MMesch
Last active July 29, 2023 17:25
Show Gist options
  • Save MMesch/cecf9f86f3d18b8adacb0670bba15b51 to your computer and use it in GitHub Desktop.
Save MMesch/cecf9f86f3d18b8adacb0670bba15b51 to your computer and use it in GitHub Desktop.
a development shell for inkscape
{ pkgs ? import (builtins.fetchGit {
url = https://github.com/nixos/nixpkgs/;
rev = "ec97c20fff7fac51dc3eb3f2d91ff7f0376c8c8f";
}) {} }:
let
python3Env = pkgs.python37.withPackages(ps: with ps;
[ pytest ipdb pylint numpy lxml scour pyserial ]);
in
pkgs.stdenv.mkDerivation {
name = "inkscape-dev";
buildInputs = with pkgs; [
mypy
pkgconfig cmake perl gtk3 gsettings-desktop-schemas
xorg.libXft libpng libsoup pcre double-conversion gdl
utillinuxMinimal gnome3.gtkmm xorg.libpthreadstubs zlib popt boehmgc
xorg.libXdmcp libselinux libsepol gtkspell3 sqlite libpsl libwpd
brotli icu libxkbcommon epoxy at-spi2-atk ccache
libxml2 libxslt glib gtkmm2 glibmm libsigcxx lcms boost gettext
gsl poppler imagemagick libwpg librevenge
libvisio libcdr libexif potrace
wrapGAppsHook vim
cups
hicolor-icon-theme
librsvg # for loading icons
python3Env perlPackages.perl
];
shellHook = ''
export GIO_EXTRA_MODULES="${pkgs.gnome3.dconf}/lib/gio/modules"
export GDK_PIXBUF_MODULE_FILE='/nix/store/6f515bb69f62ig45y56imja2hx891452-librsvg-2.44.15/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache'
export XDG_DATA_DIRS="${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
export XDG_DATA_DIRS="${pkgs.hicolor-icon-theme}/share/"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
export XDG_DATA_DIRS="${pkgs.cups}/share/"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
export XDG_DATA_DIRS="''${pwd}/build/install_dir/share/"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
'';
}
@the-nick-of-time
Copy link

Thanks for this! I've used the starting point to make a version for my Bazel project that builds Inkscape as a dependency.

{ pkgs ? import (builtins.fetchGit {
  url = https://github.com/nixos/nixpkgs/;
  rev = "380be19fbd2d9079f677978361792cb25e8a3635";
  ref = "nixos-22.05";
}) {} }:

let
  python3Env = pkgs.python37.withPackages(ps: with ps;
    [ pytest lxml scour pyserial ]);
in
pkgs.stdenv.mkDerivation {
  name = "world-build";

  buildInputs = with pkgs; [
    mypy
    pkgconfig cmake ninja perl gtk3 gsettings-desktop-schemas
    xorg.libXft libpng libsoup pcre double-conversion gdl
    utillinux gtkmm3 xorg.libpthreadstubs zlib popt boehmgc
    xorg.libXdmcp libselinux libsepol gtkspell3 sqlite libpsl libwpd
    brotli icu libxkbcommon epoxy at-spi2-atk ccache
    libxml2 libxslt glib gtkmm2 glibmm libsigcxx lcms boost gettext
    gsl poppler imagemagick libwpg librevenge
    libvisio libcdr libexif potrace
    wrapGAppsHook vim
    cups
    hicolor-icon-theme
    librsvg # for loading icons

    # fontforge
    libspiro

    # Basics
    bazel_5 bazel-buildtools gcc openjdk11_headless
#    poetry

    python3Env perlPackages.perl
  ];

  shellHook = ''
    export GIO_EXTRA_MODULES="${pkgs.dconf}/lib/gio/modules"
    export GDK_PIXBUF_MODULE_FILE='/nix/store/6f515bb69f62ig45y56imja2hx891452-librsvg-2.44.15/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache'
    export XDG_DATA_DIRS="${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
    export XDG_DATA_DIRS="${pkgs.hicolor-icon-theme}/share/"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
    export XDG_DATA_DIRS="${pkgs.cups}/share/"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
    export XDG_DATA_DIRS="''${pwd}/build/install_dir/share/"''${XDG_DATA_DIRS:+':'}$XDG_DATA_DIRS
    '';
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment