новый файл: flake.lock
новый файл: flake.nix новый файл: pkgs/codesys2/default.nix новый файл: pkgs/codesys2/setup.iss новый файл: pkgs/codesys3/default.nix новый файл: pkgs/mfc42/default.nix новый файл: pkgs/mspaintxp/default.nix новый файл: pkgs/vcredist2019/default.nix
This commit is contained in:
commit
04398840c0
8 changed files with 411 additions and 0 deletions
86
pkgs/mspaintxp/default.nix
Normal file
86
pkgs/mspaintxp/default.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
stdenv,
|
||||
makeWrapper,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
icoutils,
|
||||
wine,
|
||||
mfc42,
|
||||
# The Paint binary lifted out of a Windows XP install.
|
||||
exe,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "mspaintxp";
|
||||
version = "xp";
|
||||
|
||||
src = exe;
|
||||
dontUnpack = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
copyDesktopItems
|
||||
icoutils
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "mspaintxp";
|
||||
desktopName = "Paint (Windows XP)";
|
||||
genericName = "Image Editor";
|
||||
exec = "mspaintxp %f";
|
||||
icon = "mspaintxp";
|
||||
categories = [
|
||||
"Graphics"
|
||||
"2DGraphics"
|
||||
"RasterGraphics"
|
||||
];
|
||||
mimeTypes = [
|
||||
"image/bmp"
|
||||
"image/gif"
|
||||
"image/jpeg"
|
||||
"image/png"
|
||||
"image/tiff"
|
||||
];
|
||||
# Wine names the window class after the .exe; this lets the taskbar
|
||||
# match the running window back to this entry.
|
||||
startupWMClass = "mspaint.exe";
|
||||
})
|
||||
];
|
||||
|
||||
# Windows DLLs this .exe needs at runtime. Works like buildInputs: Nix hands
|
||||
# the list to the builder as a space-separated string of store paths, and
|
||||
# installPhase pulls $dep/windll out of each one. Add a dependency by adding
|
||||
# a package here.
|
||||
winDlls = [ mfc42 ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
app=$out/share/mspaintxp
|
||||
install -Dm644 $src $app/mspaint.exe
|
||||
|
||||
# Wine resolves imports from the .exe's own directory first, so the
|
||||
# dependencies only have to land next to it.
|
||||
for dep in $winDlls; do
|
||||
install -Dm644 $dep/windll/*.dll -t $app
|
||||
done
|
||||
|
||||
makeWrapper ${wine}/bin/wine $out/bin/mspaintxp \
|
||||
--add-flags $app/mspaint.exe
|
||||
|
||||
# Resource group 2 is Paint's own application icon (the pencil cup);
|
||||
# it ships 16/32/48px variants, of which the 32-bit ones look best.
|
||||
wrestool -x -t 14 -n 2 $src -o app.ico
|
||||
for size in 16 32 48; do
|
||||
icons=$out/share/icons/hicolor/''${size}x''${size}/apps
|
||||
mkdir -p $icons
|
||||
icotool -x --bit-depth=32 --width=$size --height=$size \
|
||||
-o $icons/mspaintxp.png app.ico
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta.mainProgram = "mspaintxp";
|
||||
}
|
||||
Loading…
Reference in a new issue