Nix packages and a NixOS module for the ArtCraft apps, open-source native alternatives to the Adobe suite, built from their official release AppImages. Every release is verified and mirrored, so installs keep working even if the upstream releases disappear.
Unofficial: not affiliated with the ArtCraft authors. x86_64-linux only for now.
nix run github:ipeglin/artcraft-nix#photocraftEach package ships the GUI and its <app>-cli companion.
# flake.nix
inputs.artcraft.url = "github:ipeglin/artcraft-nix";
# in your nixosSystem modules
modules = [
inputs.artcraft.nixosModules.default
{ programs.artcraft.enable = true; }
];The module installs every app, enables fonts.fontDir and links
/usr/share/fonts to the system fonts. The apps' text tools only look there,
not through fontconfig. Options:
programs.artcraft = {
enable = true;
apps = [ "photocraft" "vectorcraft_0_4_0" ]; # default: every app, newest version
linkFonts = false; # if you manage /usr/share/fonts yourself
};Alternatives: inputs.artcraft.packages.x86_64-linux.<app>, or
overlays.default, which adds pkgs.artcraft.<app> built against your
nixpkgs. nix profile install github:ipeglin/artcraft-nix installs all of them.
- <app>is the newest release;- <app>_<x>_<y>_<z>pins a version (e.g.- photocraft_0_3_0). Every stable release ever published is kept.
- nix flake update artcraftpicks up new releases; until then your- flake.lockkeeps you where you are.
Each version lists three download sources, tried in order:
- the upstream GitHub release
- this repo's release mirror-<app>
- the GitLab package registry of ipeglin/artcraft-nix
All of them serve byte-identical files, pinned by the sha256 that upstream
published, so a mirror cannot substitute anything. If GitHub becomes
unavailable, the flake is also mirrored to GitLab: use
gitlab:ipeglin/artcraft-nix.
Completely offline, from any copy of an AppImage with its original filename:
nix-store --add-fixed sha256 photocraft-0.3.0-linux-x86_64.AppImageNix then finds it in the store and never downloads it.
The source code is mirrored too, at gitlab.com/ipeglin/<repo>-mirror
(e.g. photocraft-mirror). Pushes
are never forced, so upstream deleting history does not erase the mirror.
.github/workflows/update.yml runs daily
(scripts/update.py):
- finds new stable releases and their published sha256
- builds each one, runs <app>-cli --version, and checks that the binary loads no library outside the set inpackage.nix
- commits passing versions to versions.json(failing ones are retried the next day and reported)
- fills any gaps in both binary mirrors and pushes the source mirrors
- on Mondays, bumps nixpkgs, and keeps it only if every app still builds
- GitLab token: the GITLAB_TOKENrepo secret is a GitLab personal access token (scopesapi,write_repository) and expires yearly. GitLab emails before it does. To renew it, create a new token and rungh secret set GITLAB_TOKEN -R ipeglin/artcraft-nix. Until then the GitLab steps fail; the next run after renewal fills in whatever is missing.
- "references unknown libraries": upstream started loading something new.
Add the nixpkgs package to runtimeDependenciesinpackage.nixand the library name toKNOWN_LIBSinscripts/verify.py.
- New app: add an entry under appsinversions.jsonwith an emptyversionsobject; the next run fills it in.
- Local run: python3 scripts/update.py --no-mirrordiscovers and verifies without uploading.
The packaging in this repo is MIT (LICENSE). The ArtCraft apps are licensed MIT OR Apache-2.0 by their authors. Their license files are attached to every mirror release and GitLab package.