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.