push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchFromGitHub,
callPackage,
jq,
cmake,
flex,
bison,
gecode,
mpfr,
cbc,
zlib,
}:
let
gecode_6_3_0 = gecode.overrideAttrs (_: {
version = "6.3.0";
src = fetchFromGitHub {
owner = "gecode";
repo = "gecode";
rev = "f7f0d7c273d6844698f01cec8229ebe0b66a016a";
hash = "sha256-skf2JEtNkRqEwfHb44WjDGedSygxVuqUixskTozi/5k=";
};
patches = [ ];
});
in
let
gecode = gecode_6_3_0;
in
stdenv.mkDerivation (finalAttrs: {
pname = "minizinc";
version = "2.9.3";
src = fetchFromGitHub {
owner = "MiniZinc";
repo = "libminizinc";
rev = finalAttrs.version;
sha256 = "sha256-eu2yNRESypXWCn8INTjGwwRXTWdGYvah/hc2iqFKQmw=";
};
nativeBuildInputs = [
bison
cmake
flex
jq
];
buildInputs = [
gecode
mpfr
cbc
zlib
];
postInstall = ''
mkdir -p $out/share/minizinc/solvers/
jq \
'.version = "${gecode.version}"
| .mznlib = "${gecode}/share/minizinc/gecode/"
| .executable = "${gecode}/bin/fzn-gecode"' \
${./gecode.msc} \
>$out/share/minizinc/solvers/gecode.msc
'';
passthru.tests = {
simple = callPackage ./simple-test { };
};
meta = with lib; {
homepage = "https://www.minizinc.org/";
description = "Medium-level constraint modelling language";
longDescription = ''
MiniZinc is a medium-level constraint modelling
language. It is high-level enough to express most
constraint problems easily, but low-level enough
that it can be mapped onto existing solvers easily and consistently.
It is a subset of the higher-level language Zinc.
'';
license = licenses.mpl20;
platforms = platforms.unix;
maintainers = [ maintainers.sheenobu ];
};
})

View File

@@ -0,0 +1,16 @@
{
"id": "org.gecode.gecode",
"name": "Gecode",
"description": "Gecode FlatZinc executable",
"version": "VERSION-WILL-BE-REPLACED-BY-JQ",
"mznlib": "MZNLIB-WILL-BE-REPLACED-BY-JQ",
"executable": "FZN_GECODE-WILL-BE-REPLACED-BY-JQ",
"tags": ["cp","int", "float", "set", "restart"],
"stdFlags": ["-a","-f","-n","-p","-r","-s","-t"],
"supportsMzn": false,
"supportsFzn": true,
"needsSolns2Out": true,
"needsMznExecutable": false,
"needsStdlibDir": false,
"isGUIApplication": false
}

View File

@@ -0,0 +1,97 @@
{
lib,
stdenv,
fetchFromGitHub,
qtbase,
qmake,
qtwebsockets,
minizinc,
makeWrapper,
copyDesktopItems,
makeDesktopItem,
imagemagick,
}:
let
executableLoc =
if stdenv.hostPlatform.isDarwin then
"$out/Applications/MiniZincIDE.app/Contents/MacOS/MiniZincIDE"
else
"$out/bin/MiniZincIDE";
in
stdenv.mkDerivation rec {
pname = "minizinc-ide";
version = "2.9.4";
src = fetchFromGitHub {
owner = "MiniZinc";
repo = "MiniZincIDE";
rev = version;
hash = "sha256-ZESd83aqXr4vxEt9PvgarnELPi9BaEf68IUALYaTfzI=";
fetchSubmodules = true;
};
nativeBuildInputs = [
qmake
makeWrapper
copyDesktopItems
imagemagick
];
buildInputs = [
qtbase
qtwebsockets
];
desktopItems = [
(makeDesktopItem {
name = "MiniZincIDE";
desktopName = "MiniZincIDE";
icon = "minizinc";
comment = meta.description;
exec = "MiniZincIDE";
type = "Application";
terminal = false;
categories = [
"Science"
"Development"
"Education"
];
})
];
sourceRoot = "${src.name}/MiniZincIDE";
dontWrapQtApps = true;
postInstall =
lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications
mv $out/bin/MiniZincIDE.app $out/Applications/
''
+ ''
wrapProgram ${executableLoc} \
--prefix PATH ":" ${lib.makeBinPath [ minizinc ]} \
--set QT_QPA_PLATFORM_PLUGIN_PATH "${qtbase}/lib/qt-6/plugins/platforms"
for size in 16 24 32 48 64 128 256 512; do
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
magick -background none ${src}/MiniZincIDE/images/mznicon.png -resize "$size"x"$size" $out/share/icons/hicolor/"$size"x"$size"/apps/minizinc.png
done
'';
meta = with lib; {
homepage = "https://www.minizinc.org/";
description = "IDE for MiniZinc, a medium-level constraint modelling language";
mainProgram = "MiniZincIDE";
longDescription = ''
MiniZinc is a medium-level constraint modelling
language. It is high-level enough to express most
constraint problems easily, but low-level enough
that it can be mapped onto existing solvers easily and consistently.
It is a subset of the higher-level language Zinc.
'';
license = licenses.mpl20;
platforms = platforms.unix;
maintainers = [ maintainers.dtzWill ];
};
}

View File

@@ -0,0 +1,20 @@
% Taken from https://www.minizinc.org/doc-2.7.3/en/modelling.html
int: nc = 3;
var 1..nc: wa; var 1..nc: nt; var 1..nc: sa; var 1..nc: q;
var 1..nc: nsw; var 1..nc: v; var 1..nc: t;
constraint wa != nt;
constraint wa != sa;
constraint nt != sa;
constraint nt != q;
constraint sa != q;
constraint sa != nsw;
constraint sa != v;
constraint q != nsw;
constraint nsw != v;
solve satisfy;
output ["wa=\(wa)\t nt=\(nt)\t sa=\(sa)\n",
"q=\(q)\t nsw=\(nsw)\t v=\(v)\n",
"t=", show(t), "\n"];

View File

@@ -0,0 +1,22 @@
# These tests show that the minizinc build is capable of running the
# examples in the official tutorial:
# https://www.minizinc.org/doc-2.7.3/en/modelling.html
{ stdenv, minizinc }:
stdenv.mkDerivation {
name = "minizinc-simple-test";
nativeBuildInputs = [ minizinc ];
dontInstall = true;
buildCommand = ''
mkdir -p $out
minizinc --solver gecode ${./aust.mzn} | tee $out/aust.log
minizinc --solver gecode ${./nqueens.mzn} | tee $out/nqueens.log
minizinc --solver cbc ${./loan.mzn} ${./loan1.dzn} | tee $out/loan.log
'';
meta.timeout = 10;
}

View File

@@ -0,0 +1,24 @@
% Taken from https://www.minizinc.org/doc-2.7.3/en/modelling.html
% variables
var float: R; % quarterly repayment
var float: P; % principal initially borrowed
var 0.0 .. 10.0: I; % interest rate (per quarter)
% intermediate variables
var float: B1; % balance after one quarter
var float: B2; % balance after two quarters
var float: B3; % balance after three quarters
var float: B4; % balance owing at end
constraint B1 = P * (1.0 + I) - R;
constraint B2 = B1 * (1.0 + I) - R;
constraint B3 = B2 * (1.0 + I) - R;
constraint B4 = B3 * (1.0 + I) - R;
solve satisfy;
output [
"Borrowing ", show_float(0, 2, P), " at ", show(I*100.0),
"% interest, and repaying ", show_float(0, 2, R),
"\nper quarter for 1 year leaves ", show_float(0, 2, B4), " owing\n"
];

View File

@@ -0,0 +1,3 @@
I = 0.04;
P = 1000.0;
R = 260.0;

View File

@@ -0,0 +1,9 @@
int: n = 8; % The number of queens.
array [1..n] of var 1..n: q;
include "alldifferent.mzn";
constraint alldifferent(q);
constraint alldifferent(i in 1..n)(q[i] + i);
constraint alldifferent(i in 1..n)(q[i] - i);