Merge master into staging-next
This commit is contained in:
commit
05abe113a9
@ -3861,6 +3861,16 @@
|
||||
fingerprint = "6E3A FA6D 915C C2A4 D26F C53E 7BB4 BA9C 783D 2BBC";
|
||||
}];
|
||||
};
|
||||
codebam = {
|
||||
name = "Sean Behan";
|
||||
email = "codebam@riseup.net";
|
||||
matrix = "@codebam:fedora.im";
|
||||
github = "codebam";
|
||||
githubId = 6035884;
|
||||
keys = [{
|
||||
fingerprint = "42CD E212 593C F2FD C723 48A8 0F6D 5021 A87F 92BA";
|
||||
}];
|
||||
};
|
||||
codec = {
|
||||
email = "codec@fnord.cx";
|
||||
github = "codec";
|
||||
@ -14111,6 +14121,16 @@
|
||||
githubId = 56316606;
|
||||
name = "Amneesh Singh";
|
||||
};
|
||||
naxdy = {
|
||||
name = "Naxdy";
|
||||
email = "naxdy@naxdy.org";
|
||||
matrix = "@naxdy:naxdy.org";
|
||||
github = "Naxdy";
|
||||
githubId = 4532582;
|
||||
keys = [{
|
||||
fingerprint = "BDEA AB07 909D B96F 4106 85F1 CC15 0758 46BC E91B";
|
||||
}];
|
||||
};
|
||||
nayala = {
|
||||
name = "Nia";
|
||||
matrix = "@fly:asra.gr";
|
||||
|
@ -686,6 +686,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
making it possible to accumulate definitions without resorting to `mkForce`,
|
||||
hence to retain the definitions not anticipating that need.
|
||||
|
||||
- Lisp modules: previously deprecated interface based on `common-lisp.sh` has now been removed.
|
||||
|
||||
- `youtrack` is bumped to 2023.3. The update is not performed automatically, it requires manual interaction. See the YouTrack section in the manual for details.
|
||||
|
||||
- QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).
|
||||
|
@ -18,6 +18,7 @@ let
|
||||
flip
|
||||
head
|
||||
isInt
|
||||
isFloat
|
||||
isList
|
||||
isPath
|
||||
length
|
||||
@ -152,7 +153,7 @@ in rec {
|
||||
"Systemd ${group} field `${name}' is outside the range [${toString min},${toString max}]";
|
||||
|
||||
assertRangeOrOneOf = name: min: max: values: group: attr:
|
||||
optional (attr ? ${name} && !((min <= attr.${name} && max >= attr.${name}) || elem attr.${name} values))
|
||||
optional (attr ? ${name} && !(((isInt attr.${name} || isFloat attr.${name}) && min <= attr.${name} && max >= attr.${name}) || elem attr.${name} values))
|
||||
"Systemd ${group} field `${name}' is not a value in range [${toString min},${toString max}], or one of ${toString values}";
|
||||
|
||||
assertMinimum = name: min: group: attr:
|
||||
|
@ -11,7 +11,7 @@ in
|
||||
description = ''
|
||||
Periodic backups to create with Restic.
|
||||
'';
|
||||
type = types.attrsOf (types.submodule ({ config, name, ... }: {
|
||||
type = types.attrsOf (types.submodule ({ name, ... }: {
|
||||
options = {
|
||||
passwordFile = mkOption {
|
||||
type = types.str;
|
||||
@ -206,12 +206,19 @@ in
|
||||
];
|
||||
};
|
||||
|
||||
runCheck = mkOption {
|
||||
type = types.bool;
|
||||
default = (builtins.length config.services.restic.backups.${name}.checkOpts > 0);
|
||||
defaultText = literalExpression ''builtins.length config.services.backups.${name}.checkOpts > 0'';
|
||||
description = "Whether to run the `check` command with the provided `checkOpts` options.";
|
||||
example = true;
|
||||
};
|
||||
|
||||
checkOpts = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
A list of options for 'restic check', which is run after
|
||||
pruning.
|
||||
A list of options for 'restic check'.
|
||||
'';
|
||||
example = [
|
||||
"--with-cache"
|
||||
@ -298,6 +305,8 @@ in
|
||||
doBackup = (backup.dynamicFilesFrom != null) || (backup.paths != null && backup.paths != []);
|
||||
pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [
|
||||
(resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts))
|
||||
];
|
||||
checkCmd = optionals backup.runCheck [
|
||||
(resticCmd + " check " + (concatStringsSep " " backup.checkOpts))
|
||||
];
|
||||
# Helper functions for rclone remotes
|
||||
@ -331,7 +340,7 @@ in
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = (optionals doBackup [ "${resticCmd} backup ${concatStringsSep " " (backup.extraBackupArgs ++ excludeFlags)} --files-from=${filesFromTmpFile}" ])
|
||||
++ pruneCmd;
|
||||
++ pruneCmd ++ checkCmd;
|
||||
User = backup.user;
|
||||
RuntimeDirectory = "restic-backups-${name}";
|
||||
CacheDirectory = "restic-backups-${name}";
|
||||
|
@ -939,6 +939,7 @@ in {
|
||||
|
||||
in {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "nextcloud-update-db.service" ];
|
||||
before = [ "phpfpm-nextcloud.service" ];
|
||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
||||
requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
||||
@ -997,7 +998,7 @@ in {
|
||||
after = [ "nextcloud-setup.service" ];
|
||||
environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
Type = "exec";
|
||||
User = "nextcloud";
|
||||
ExecCondition = "${lib.getExe phpPackage} -f ${webroot}/occ status -e";
|
||||
ExecStart = "${lib.getExe phpPackage} -f ${webroot}/cron.php";
|
||||
@ -1013,6 +1014,20 @@ in {
|
||||
};
|
||||
startAt = cfg.autoUpdateApps.startAt;
|
||||
};
|
||||
nextcloud-update-db = {
|
||||
after = [ "nextcloud-setup.service" ];
|
||||
environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config";
|
||||
script = ''
|
||||
${occ}/bin/nextcloud-occ db:add-missing-columns
|
||||
${occ}/bin/nextcloud-occ db:add-missing-indices
|
||||
${occ}/bin/nextcloud-occ db:add-missing-primary-keys
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "exec";
|
||||
User = "nextcloud";
|
||||
ExecCondition = "${lib.getExe phpPackage} -f ${webroot}/occ status -e";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.phpfpm = {
|
||||
|
@ -10,7 +10,7 @@ in
|
||||
options = {
|
||||
services.xserver.windowManager.clfswm = {
|
||||
enable = mkEnableOption "clfswm";
|
||||
package = mkPackageOption pkgs [ "lispPackages" "clfswm" ] { };
|
||||
package = mkPackageOption pkgs [ "sbclPackages" "clfswm" ] { };
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -17,11 +17,13 @@ let
|
||||
"ManageForeignRoutingPolicyRules"
|
||||
"ManageForeignRoutes"
|
||||
"RouteTable"
|
||||
"IPv6PrivacyExtensions"
|
||||
])
|
||||
(assertValueOneOf "SpeedMeter" boolValues)
|
||||
(assertInt "SpeedMeterIntervalSec")
|
||||
(assertValueOneOf "ManageForeignRoutingPolicyRules" boolValues)
|
||||
(assertValueOneOf "ManageForeignRoutes" boolValues)
|
||||
(assertValueOneOf "IPv6PrivacyExtensions" (boolValues ++ ["prefer-public" "kernel"]))
|
||||
];
|
||||
|
||||
sectionDHCPv4 = checkUnitConfig "DHCPv4" [
|
||||
|
@ -24,7 +24,9 @@ import ./make-test-python.nix ({ lib, ... }: {
|
||||
machine.wait_for_window("Archi")
|
||||
|
||||
# wait till main UI is open
|
||||
machine.wait_for_text("Welcome to Archi")
|
||||
# since OCR seems to be buggy wait_for_text was replaced by sleep, issue: #302965
|
||||
# machine.wait_for_text("Welcome to Archi")
|
||||
machine.sleep(20)
|
||||
|
||||
machine.screenshot("welcome-screen")
|
||||
'';
|
||||
|
@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "clboss";
|
||||
version = "0.13";
|
||||
version = "0.13.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ZmnSCPxj";
|
||||
repo = "clboss";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-NP9blymdqDXo/OtGLQg/MXK24PpPvCrzqXRdtfCvpfI=";
|
||||
hash = "sha256-DQvcf+y73QQYQanEvbOCOgwQzvNOXS1ZY+hVvS6N+G0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoconf-archive autoreconfHook pkg-config libev curlWithGnuTls sqlite ];
|
||||
|
@ -3,7 +3,7 @@
|
||||
, withCurses ? false, ncurses
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
version = "12.1";
|
||||
version = "12.4";
|
||||
pname = "textadept";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "orbitalquark";
|
||||
repo = "textadept";
|
||||
rev = "textadept_${version}";
|
||||
sha256 = "sha256-ce7U/GR/4zkjnRN3fx3FLecc9vuvFqCONy275SWnpNc=";
|
||||
sha256 = "sha256-nPgpQeBq5Stv2o0Ke4W2Ltnx6qLe5TIC5a8HSYVkmfI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ]
|
||||
|
17
pkgs/applications/editors/textadept/deps.nix
generated
17
pkgs/applications/editors/textadept/deps.nix
generated
@ -1,8 +1,8 @@
|
||||
{
|
||||
# scintilla
|
||||
"scintilla536.tgz" = {
|
||||
url = "https://www.scintilla.org/scintilla536.tgz";
|
||||
sha256 = "sha256-ib6CeKg+eBOSWq/il32quH0r1r69F7AXn+cq/dVIyyQ=";
|
||||
"scintilla550.tgz" = {
|
||||
url = "https://www.scintilla.org/scintilla550.tgz";
|
||||
sha256 = "sha256-5VPpVQnwH5KqFX+gLQanEmQuE9aaEewaAqfd8ixAYjE=";
|
||||
};
|
||||
# lexilla
|
||||
"lexilla510.tgz" = {
|
||||
@ -15,9 +15,9 @@
|
||||
sha256 = "sha256-l1qeLMCrhyoZA/GfmXFR20rY5EsUoO5e+1vZJtYdb24=";
|
||||
};
|
||||
# scintillua
|
||||
"e88bbcfecae46b48b79d8156ea7129411b5c847d.zip" = {
|
||||
url = "https://github.com/orbitalquark/scintillua/archive/e88bbcfecae46b48b79d8156ea7129411b5c847d.zip";
|
||||
sha256 = "sha256-sWqpVtcAwysGn86XFwaEkKSPemk2247SydOQi6klFrQ=";
|
||||
"scintillua_6.3.zip" = {
|
||||
url = "https://github.com/orbitalquark/scintillua/archive/scintillua_6.3.zip";
|
||||
sha256 = "sha256-SAFmu3q8T1UtVjdUcFy9NPu0DOLqewvU/Vb9b7XjgQM=";
|
||||
};
|
||||
# lua
|
||||
"lua-5.4.6.tar.gz" = {
|
||||
@ -49,6 +49,11 @@
|
||||
url = "https://github.com/orbitalquark/lua-std-regex/archive/1.0.zip";
|
||||
sha256 = "sha256-W2hKHOfqYyo3qk+YvPJlzZfZ1wxZmMVphSlcaql+dOE=";
|
||||
};
|
||||
# singleapp
|
||||
"v3.4.0.zip" = {
|
||||
url = "https://github.com/itay-grudev/SingleApplication/archive/refs/tags/v3.4.0.zip";
|
||||
sha256 = "sha256-FwyzM+R9ALpGH9u2RXab4Sqi4Q+p3Qs+8EdfhjPGcXY=";
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@ -1477,8 +1477,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "elixir-ls";
|
||||
publisher = "JakeBecker";
|
||||
version = "0.21.0";
|
||||
hash = "sha256-enx5qlbvfn25jGkjJEB0dJ3/zGhlVC5Q3ISS1qL9+bg=";
|
||||
version = "0.21.1";
|
||||
hash = "sha256-z/GhynjkoEcaRp59tYr1lnM5vfV0OaDCcCpC02OdVLE=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/JakeBecker.elixir-ls/changelog";
|
||||
|
@ -17,13 +17,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "raider";
|
||||
version = "2.1.0";
|
||||
version = "3.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ADBeveridge";
|
||||
repo = "raider";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ZR40sbEKvZxGxRaV5H9D6kBP9ZgUdc425XgIhqidWLI=";
|
||||
hash = "sha256-zqM2B1M7E4CRupd09rvFYG7H7wBd2hTWnjN3xadS36w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "talosctl";
|
||||
version = "1.7.0";
|
||||
version = "1.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "siderolabs";
|
||||
repo = "talos";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-E5pu37R2y0hQezM/p6LJXZv2L6QnV89Ir2HoKaqcOqI=";
|
||||
hash = "sha256-1UDPpavDjWoM5kSfyaT4H5y5ax/vVlfqpzN9U2sTVuk=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-5vWAZsLQxPZGpTiT/OowCLNPdE5e+HrAGXpFRw6jgbU=";
|
||||
vendorHash = "sha256-52RaQOJ2KTuc8wdk7vv5XsynKdMOwZ1LaqiPdB+jXPw=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "flexget";
|
||||
version = "3.11.30";
|
||||
version = "3.11.31";
|
||||
pyproject = true;
|
||||
|
||||
# Fetch from GitHub in order to use `requirements.in`
|
||||
@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
owner = "Flexget";
|
||||
repo = "Flexget";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-msvNZ3kE48dNnhtUWLGxulb2iZ78hhyg7fVL2OSOdyY=";
|
||||
hash = "sha256-lTAC33mw2iHY9Xj4WRgO+Fh+xfjs5vRw6xAZcEaJKhM=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -49,6 +49,10 @@ stdenv.mkDerivation rec {
|
||||
++ lib.optionals rustSupport [ rustc cargo ]
|
||||
;
|
||||
|
||||
propagatedBuildInputs = with python.pkgs; [
|
||||
pyyaml
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
elfutils
|
||||
jansson
|
||||
|
@ -6,14 +6,14 @@ let
|
||||
aarch64-linux = "arm64";
|
||||
}."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
hash = {
|
||||
amd64-linux_hash = "sha256-RH8iHqJ0Nd3wkXmv/ZGX5JeWtxyJtVLVb0tz6tnkjrw=";
|
||||
arm64-linux_hash = "sha256-0gvkabuxRqkMeyZiOSyT6C7v767+uCrsXE8qk0y0mYM=";
|
||||
amd64-linux_hash = "sha256-Q5fUMQQTQKgUkakmsiBFH2UwJdk/XV8wpQi6uRHi90U=";
|
||||
arm64-linux_hash = "sha256-axFIwz1AtzxO1+XkmCflHqi/CdsmeqD6QAxepATMqm4=";
|
||||
}."${arch}-linux_hash";
|
||||
in
|
||||
mkFranzDerivation rec {
|
||||
pname = "ferdium";
|
||||
name = "Ferdium";
|
||||
version = "6.7.2";
|
||||
version = "6.7.3";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ferdium/ferdium-app/releases/download/v${version}/Ferdium-linux-${version}-${arch}.deb";
|
||||
inherit hash;
|
||||
|
@ -2,7 +2,7 @@
|
||||
callPackage ./generic.nix { } rec {
|
||||
pname = "signal-desktop-beta";
|
||||
dir = "Signal Beta";
|
||||
version = "7.7.0-beta.1";
|
||||
version = "7.9.0-beta.1";
|
||||
url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop-beta/signal-desktop-beta_${version}_amd64.deb";
|
||||
hash = "sha256-oswS1aRkpiTNSpQ6CqfJnoM412RRwraeht4iqq8L1Bk=";
|
||||
hash = "sha256-NZo2H+rX7sy+aPP9Bl9EWPEROkhLXG2puUdbc0s7Nbw=";
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
callPackage ./generic.nix { } rec {
|
||||
pname = "signal-desktop";
|
||||
dir = "Signal";
|
||||
version = "7.7.0";
|
||||
version = "7.8.0";
|
||||
url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
hash = "sha256-UESpbYZ4oRhhQF8GYrbKnNkqmefCfTE1jfCCK7ctIKk=";
|
||||
hash = "sha256-gBcfe3lU2pmRHSXNNXBFU7Qv83Bf6OPv5LM/HxeLkjM=";
|
||||
}
|
||||
|
@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "seaweedfs";
|
||||
version = "3.65";
|
||||
version = "3.66";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "seaweedfs";
|
||||
repo = "seaweedfs";
|
||||
rev = version;
|
||||
hash = "sha256-+HSdOP0ls8OKIFlI6qIsyhDY+4+//cbcEFL9w8rJ5i0=";
|
||||
hash = "sha256-1hK7FEBfLWh1LVtuhELAvZFyMK1bpOSnBg78aIRK8LY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-53HX4WvAQkrEa2v0PzaRwy6tMVqTB5UEWDHhDwCQk18=";
|
||||
vendorHash = "sha256-ly1opQmYL8zRKtLTMFo5Ek9ofEtn1YwmfhVuWfACKxY=";
|
||||
|
||||
subPackages = [ "weed" ];
|
||||
|
||||
|
@ -76,6 +76,12 @@ stdenv.mkDerivation rec {
|
||||
./0003-remove-valgrind.patch
|
||||
# this patch makes gnucash exec the Finance::Quote wrapper directly
|
||||
./0004-exec-fq-wrapper.patch
|
||||
# Fix importing QIF by backporting a fix. remove on next release
|
||||
# https://bugs.gnucash.org/show_bug.cgi?id=799262
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Gnucash/gnucash/commit/b33b864c2fa0ba72d1940465e7fa962dd36833c9.patch";
|
||||
hash = "sha256-A8pYW6CcNFBGC/MDijnuFJdlNAzSDS6Tcj+haCcEI/M=";
|
||||
})
|
||||
];
|
||||
|
||||
# this needs to be an environment variable and not a cmake flag to suppress
|
||||
|
@ -19,16 +19,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "jujutsu";
|
||||
version = "0.17.0";
|
||||
version = "0.17.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "martinvonz";
|
||||
repo = "jj";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-9Otm4EtBhSPix/perfhxHkgVhN0i/2+3JV50ex7xAlY=";
|
||||
hash = "sha256-3f/odQ5MgYGdPKUFqF90YGN84fXgG6BRkpN96TxJz1c=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-snaqfiTfSKWnjCCUwptAJAl+n2CBRdBSswPR/y555k0=";
|
||||
cargoHash = "sha256-N4UUouJfhKhosMBFVM0QEUNgkh7NFryXUoPmGVXcLGQ=";
|
||||
|
||||
cargoBuildFlags = [ "--bin" "jj" ]; # don't install the fake editors
|
||||
useNextest = false; # nextest is the upstream integration framework, but is problematic for test skipping
|
||||
|
@ -1,24 +1,38 @@
|
||||
{ fetchFromGitHub, lib, rustPlatform }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-shear";
|
||||
{
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
rustPlatform,
|
||||
testers,
|
||||
cargo-shear,
|
||||
}:
|
||||
let
|
||||
version = "0.0.25";
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "cargo-shear";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Boshen";
|
||||
repo = "cargo-shear";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-4NnCUe4DrnSeveicxvvDF49hrc4NdRx/N10PH7Q0k8k=";
|
||||
hash = "sha256-4NnCUe4DrnSeveicxvvDF49hrc4NdRx/N10PH7Q0k8k=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-gHXJz3Xw9vC04q001kd6AgEKKaRtAK3oGMn7JJh+Neo=";
|
||||
|
||||
meta = with lib; {
|
||||
# https://github.com/Boshen/cargo-shear/blob/a0535415a3ea94c86642f39f343f91af5cdc3829/src/lib.rs#L20-L23
|
||||
SHEAR_VERSION = version;
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = cargo-shear;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Detect and remove unused dependencies from Cargo.toml";
|
||||
mainProgram = "cargo-shear";
|
||||
homepage = "https://github.com/Boshen/cargo-shear";
|
||||
changelog = "https://github.com/Boshen/cargo-shear/blob/${src.rev}/CHANGELOG.md";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ uncenter ];
|
||||
changelog = "https://github.com/Boshen/cargo-shear/blob/v${version}/CHANGELOG.md";
|
||||
license = [ lib.licenses.mit ];
|
||||
maintainers = with lib.maintainers; [ uncenter ];
|
||||
};
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
, makeWrapper
|
||||
, fftw
|
||||
, fmt_8
|
||||
, freetype
|
||||
, libsndfile
|
||||
, libX11
|
||||
, rtmidi
|
||||
@ -16,7 +17,7 @@
|
||||
, withJACK ? stdenv.hostPlatform.isUnix
|
||||
, libjack2
|
||||
, withGUI ? true
|
||||
, Cocoa
|
||||
, darwin
|
||||
, portaudio
|
||||
, alsa-lib
|
||||
# Enable GL/GLES rendering
|
||||
@ -25,23 +26,23 @@
|
||||
, preferGLES ? stdenv.hostPlatform.isAarch
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "furnace";
|
||||
version = "0.6.2";
|
||||
version = "0.6.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tildearrow";
|
||||
repo = "furnace";
|
||||
rev = "v${version}";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-Pv9Sx+bdoy8uV5o9i1rUSuokwQVA8EPYFkZXM8Fynmk=";
|
||||
hash = "sha256-z0WvJvkry/9T4Fgp2fX83CxPpDBoOPNVtyX2OUk26FI=";
|
||||
};
|
||||
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
# To offer scaling detection on X11, furnace checks if libX11.so is available via dlopen and uses some of its functions
|
||||
# But it's being linked against a versioned libX11.so.VERSION via SDL, so the unversioned one is not on the rpath
|
||||
substituteInPlace src/gui/scaling.cpp \
|
||||
--replace 'libX11.so' '${lib.getLib libX11}/lib/libX11.so'
|
||||
--replace-fail 'libX11.so' '${lib.getLib libX11}/lib/libX11.so'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -54,6 +55,7 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [
|
||||
fftw
|
||||
fmt_8
|
||||
freetype
|
||||
libsndfile
|
||||
rtmidi
|
||||
SDL2
|
||||
@ -64,26 +66,30 @@ stdenv.mkDerivation rec {
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
# portaudio pkg-config is pulling this in as a link dependency, not set in propagatedBuildInputs
|
||||
alsa-lib
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [
|
||||
Cocoa
|
||||
];
|
||||
]);
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_GUI=${if withGUI then "ON" else "OFF"}"
|
||||
"-DSYSTEM_FFTW=ON"
|
||||
"-DSYSTEM_FMT=ON"
|
||||
"-DSYSTEM_LIBSNDFILE=ON"
|
||||
"-DSYSTEM_RTMIDI=ON"
|
||||
"-DSYSTEM_SDL2=ON"
|
||||
"-DSYSTEM_ZLIB=ON"
|
||||
"-DSYSTEM_PORTAUDIO=ON"
|
||||
"-DWITH_JACK=${if withJACK then "ON" else "OFF"}"
|
||||
"-DWITH_PORTAUDIO=ON"
|
||||
"-DWITH_RENDER_SDL=ON"
|
||||
"-DWITH_RENDER_OPENGL=${lib.boolToString withGL}"
|
||||
"-DWARNINGS_ARE_ERRORS=ON"
|
||||
] ++ lib.optionals withGL [
|
||||
"-DUSE_GLES=${lib.boolToString preferGLES}"
|
||||
(lib.cmakeBool "BUILD_GUI" withGUI)
|
||||
(lib.cmakeBool "SYSTEM_FFTW" true)
|
||||
(lib.cmakeBool "SYSTEM_FMT" true)
|
||||
(lib.cmakeBool "SYSTEM_LIBSNDFILE" true)
|
||||
(lib.cmakeBool "SYSTEM_RTMIDI" true)
|
||||
(lib.cmakeBool "SYSTEM_SDL2" true)
|
||||
(lib.cmakeBool "SYSTEM_ZLIB" true)
|
||||
(lib.cmakeBool "USE_FREETYPE" true)
|
||||
(lib.cmakeBool "SYSTEM_FREETYPE" true)
|
||||
(lib.cmakeBool "WITH_JACK" withJACK)
|
||||
(lib.cmakeBool "WITH_PORTAUDIO" true)
|
||||
(lib.cmakeBool "SYSTEM_PORTAUDIO" true)
|
||||
(lib.cmakeBool "WITH_RENDER_SDL" true)
|
||||
(lib.cmakeBool "WITH_RENDER_OPENGL" withGL)
|
||||
(lib.cmakeBool "USE_GLES" (withGL && preferGLES))
|
||||
(lib.cmakeBool "WITH_RENDER_METAL" false) # fails to build
|
||||
(lib.cmakeBool "WITH_RENDER_OPENGL1" (withGL && !preferGLES))
|
||||
(lib.cmakeBool "WARNINGS_ARE_ERRORS" true)
|
||||
(lib.cmakeBool "FORCE_APPLE_BIN" true)
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
@ -109,13 +115,13 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Multi-system chiptune tracker compatible with DefleMask modules";
|
||||
homepage = "https://github.com/tildearrow/furnace";
|
||||
changelog = "https://github.com/tildearrow/furnace/releases/tag/v${version}";
|
||||
license = with licenses; [ gpl2Plus ];
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.all;
|
||||
changelog = "https://github.com/tildearrow/furnace/releases/tag/v${finalAttrs.version}";
|
||||
license = with lib.licenses; [ gpl2Plus ];
|
||||
maintainers = with lib.maintainers; [ OPNA2608 ];
|
||||
platforms = lib.platforms.all;
|
||||
mainProgram = "furnace";
|
||||
};
|
||||
}
|
||||
})
|
@ -3,7 +3,7 @@
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
}: let
|
||||
version = "0.5.0";
|
||||
version = "0.6.0";
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "kittysay";
|
||||
@ -13,10 +13,10 @@ in
|
||||
owner = "uncenter";
|
||||
repo = "kittysay";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-eOcHrEvU3nBKFokwE8CyDOUYoBA1+gBlnl7VRUuoFfE=";
|
||||
sha256 = "sha256-dJpbRPrpilaOFVPjAESk4DyZtH/hJm16p6pMRqrzOk4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-dVgPp5jY3ii8mO/HLTDESQzQyZXzqut8Bjm2KfWD0+U=";
|
||||
cargoHash = "sha256-r1xdMczqVyX7ZPjkyDdgVW3BFOeKOw1Dp6mGHb2XzrM=";
|
||||
|
||||
meta = {
|
||||
description = "Cowsay, but with a cute kitty :3";
|
||||
|
@ -6,11 +6,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "regina-rexx";
|
||||
version = "3.9.5";
|
||||
version = "3.9.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/regina-rexx/regina-rexx/${version}/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-COmpBhvuADjPtFRG3iB2b/2uUO6jf2ZCRG7E5zoqvFE=";
|
||||
hash = "sha256-7ZjHp/HVpBSLAv7xsWruSmpthljQGoDPXFAwFe8Br6U=";
|
||||
};
|
||||
|
||||
buildInputs = [ ncurses ];
|
||||
|
154
pkgs/by-name/re/retrospy/deps.nix
generated
Normal file
154
pkgs/by-name/re/retrospy/deps.nix
generated
Normal file
@ -0,0 +1,154 @@
|
||||
# This file was automatically generated by passthru.fetch-deps.
|
||||
# Please dont edit it manually, your changes might get overwritten!
|
||||
|
||||
{ fetchNuGet }: [
|
||||
(fetchNuGet { pname = "Avalonia"; version = "11.0.0"; sha256 = "0wfbwrr8p5hg9f809d44gh2zfkfwnwayfw84vs33hh7ms0r380gd"; })
|
||||
(fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; sha256 = "1az4s1g22ipak9a3xfh55z2h3rm6lpqh7svbpw6ag4ysrgsjjsjd"; })
|
||||
(fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.28"; sha256 = "0d9hyc1zmyvzlb320arwrv12ncp45llq98hibv711b7ibm11dm7c"; })
|
||||
(fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.0"; sha256 = "06wgzhxkivlaxkn8p61wainsprml2g1q4jmvy9fpn64qnfywjdn7"; })
|
||||
(fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.0"; sha256 = "0qlcdx4w1pcljgs7sfbn5xmmnqwp2m0fqyswrgz6c8cvjzcfsjsj"; })
|
||||
(fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.0"; sha256 = "08y31b357fax7c1ggwhjsfwgaj6zkm2abhpc6amlmk6ci4zn12lf"; })
|
||||
(fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.0"; sha256 = "134xl19rfswnz75a1mhil9yqy8haqa788rmd1p1kk6ibjbhb3np9"; })
|
||||
(fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.0"; sha256 = "042s8lc83lw6ygcsiza14wlsc09rgzw3ch2qaxkhlp73bh736ps3"; })
|
||||
(fetchNuGet { pname = "Avalonia.Native"; version = "11.0.0"; sha256 = "1j7wpv81wqwh6zhfzc1f36vb5dp6s2ig45v8km9sp0q6f66zkrsh"; })
|
||||
(fetchNuGet { pname = "Avalonia.ReactiveUI"; version = "11.0.0"; sha256 = "1fhp6f2aj2bmzlcj0s5r9i9rcxwakdg9gvjqvdqaq8s98d0s06qh"; })
|
||||
(fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.0"; sha256 = "1b5031k8slwiz7bncih67fjl6ny234yd4skqxk611l9zp5snjic2"; })
|
||||
(fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.0"; sha256 = "1ra1kd0kkblppr5zy7rzdbwllggrzvp9lkxblf9mg3y8rnp6fk83"; })
|
||||
(fetchNuGet { pname = "Avalonia.Themes.Fluent"; version = "11.0.0"; sha256 = "0v1pnk3hjclr2yqxmff8w6mlgmjch5gfb6yb8h0z1a5m5j6y31qv"; })
|
||||
(fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.0"; sha256 = "1qw76n78c14xl419yzabahbsrgymm850ql05gd4fh5naq2brksdm"; })
|
||||
(fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.0"; sha256 = "1djp4m5yin4i2f9sjv4v3syv02fllwbfinzm9h0hm2abc2ccvrm3"; })
|
||||
(fetchNuGet { pname = "Avalonia.X11"; version = "11.0.0"; sha256 = "1gd4zrjyw3hg3d48ivhxp0ca7ma13dnpr8y1wc7d51ddlrj3c86g"; })
|
||||
(fetchNuGet { pname = "ColorTextBlock.Avalonia"; version = "11.0.0-d1"; sha256 = "1vf5fp11zx21bsakbpf12j6mchafh749cs03w9cifb6ci98jchgh"; })
|
||||
(fetchNuGet { pname = "Desktop.Robot"; version = "1.5.0"; sha256 = "1y78cpv97cwk4xas0rcpr2wwyags424f3in63kzj8w80d9gradr1"; })
|
||||
(fetchNuGet { pname = "DialogHost.Avalonia"; version = "0.7.5"; sha256 = "1wkvqrzvhjhhg128gfr57fcm2xvs9yvix405nm7v06kn6xr12d73"; })
|
||||
(fetchNuGet { pname = "DynamicData"; version = "7.9.5"; sha256 = "1m9qx8g6na5ka6kd9vhg8gjmxrnkzb6v5cl5yqp1kdjsw4rcwy6x"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; sha256 = "115aybicqs9ijjlcv6k6r5v0agkjm1bm1nkd0rj3jglv8s0xvmp2"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; sha256 = "1f18ahwkaginrg0vwsi6s56lvnqvvxv7pzklfs5lnknasxy1a76z"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; sha256 = "052d8frpkj4ijs6fm6xp55xbv95b1s9biqwa0w8zp3rgm88m9236"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; sha256 = "043hv36bg5240znbm8x5la7py17m4jfzy57q3ka32f6zjld83j36"; })
|
||||
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; sha256 = "08khd2jqm8sw58ljz5srangzfm2sz3gd2q1jzc5fr80lj8rv6r74"; })
|
||||
(fetchNuGet { pname = "LibUsbDotNet"; version = "3.0.102-alpha"; sha256 = "05hz68aj5z76lgxz87r26314xw1a37s9wjy6gmvwwa77kg6av4d0"; })
|
||||
(fetchNuGet { pname = "Markdown.Avalonia.Tight"; version = "11.0.0-d1"; sha256 = "0ks9k3wqwvdssiwbcjc4gnrfn1r8x2dbp9amraxkmws5a7vbjdyk"; })
|
||||
(fetchNuGet { pname = "MessageBox.Avalonia"; version = "3.0.0"; sha256 = "1hyfhbayyi8dqsy9fnp09qh92qdil9wsjy97pdfp2mywgr121q50"; })
|
||||
(fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; sha256 = "0w0yx0lpg54iw5jazqk46h48gx43ij32gwac8iywdj6kxfxm03vw"; })
|
||||
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; })
|
||||
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
|
||||
(fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.0"; sha256 = "0c6pcj088g1yd1vs529q3ybgsd2vjlk5y1ic6dkmbhvrp5jibl9p"; })
|
||||
(fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "7.0.0"; sha256 = "1bh77misznh19m1swqm3dsbji499b8xh9gk6w74sgbkarf6ni8lb"; })
|
||||
(fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
|
||||
(fetchNuGet { pname = "NodaTime"; version = "3.1.9"; sha256 = "10vyhv24awjqxjhyq6sw0gbbim8wddj1hnsv9l7mjv2vmg71qz1w"; })
|
||||
(fetchNuGet { pname = "PolySharp"; version = "1.10.0"; sha256 = "06qici3hhk6a0jmy0nyvspcnmhbapnic6iin3i28pkdvrii02hnz"; })
|
||||
(fetchNuGet { pname = "ReactiveUI"; version = "18.3.1"; sha256 = "1lxkc8yk9glj0w9n5vry2dnwwvh8152ad2c5bivk8aciq64zidyn"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
|
||||
(fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
|
||||
(fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
|
||||
(fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
|
||||
(fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
|
||||
(fetchNuGet { pname = "runtime.linux-arm.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "1q38c2fq6c464h1hs3g6528m0m8c3a5a08vsg59mzmm42r0ayh4k"; })
|
||||
(fetchNuGet { pname = "runtime.linux-arm.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0gvrha8fp26hnzxqw99r50ki3mjnpjr6iaa483b4lahpljk06ijb"; })
|
||||
(fetchNuGet { pname = "runtime.linux-arm64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "1z35v6bwwl8lv7yz37xj99gablhs9sr5y0r3zb57qmjx4psvix3f"; })
|
||||
(fetchNuGet { pname = "runtime.linux-arm64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "1flvgvbpk7iqsi3cr23bjm9kdj63rmb97bn1hxzcia8iyybdzcnj"; })
|
||||
(fetchNuGet { pname = "runtime.linux-x64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "1gfzdz42rsv5gp1p4w5ygkw43gm101q444a3jzgsspp2jk50hdj7"; })
|
||||
(fetchNuGet { pname = "runtime.linux-x64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "17fw28ymsdbwpimmvh3nx2shc2khqm8gypg5q1s90kvyzb5ivzpg"; })
|
||||
(fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
|
||||
(fetchNuGet { pname = "runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "0l52l3kkl4rg9wg25lacb8khywmclcyq230mss0aqsyjqlyxv9l8"; })
|
||||
(fetchNuGet { pname = "runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0gigh53b9ddkycvhm8vg5gz53wq02qzb7kivwh69vh2454f1qap7"; })
|
||||
(fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
|
||||
(fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
|
||||
(fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
|
||||
(fetchNuGet { pname = "runtime.osx-arm64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "03fjxh2lcrkgbr63zdk3sal99rrr60z9rgwa58pz4a2y78zy5h53"; })
|
||||
(fetchNuGet { pname = "runtime.osx-arm64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0zphic782inl2mc6ijv7m4003pdlrk3rb7xdkcavxb5gy00lgc7n"; })
|
||||
(fetchNuGet { pname = "runtime.osx-x64.runtime.native.System.IO.Ports"; version = "7.0.0"; sha256 = "0y3rj0dv8l4fsw4w149q94zbqz4wm28ix5cvbhs8da3r92nqy9dj"; })
|
||||
(fetchNuGet { pname = "runtime.osx-x64.runtime.native.System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0rnx41sgf690wx02z3i6bxgiw43khx5xq7f27arp53v7m0d11xny"; })
|
||||
(fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
|
||||
(fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
|
||||
(fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
|
||||
(fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
|
||||
(fetchNuGet { pname = "SharpGen.Runtime"; version = "2.0.0-beta.13"; sha256 = "1250z6sa9ghf84czlkzvaysb29c0n229z1f0vh5qls89akrkl7h8"; })
|
||||
(fetchNuGet { pname = "SharpGen.Runtime.COM"; version = "2.0.0-beta.13"; sha256 = "1lmv3jp2g7mgy9j23pd3j0wr3p89qiq8v6c6qxqf688izyni1166"; })
|
||||
(fetchNuGet { pname = "SixLabors.ImageSharp"; version = "3.0.1"; sha256 = "12ypfknphk30szsymmn1378vlp4jmlcvsz88flfxyhwgxrir0453"; })
|
||||
(fetchNuGet { pname = "SkiaSharp"; version = "2.88.3"; sha256 = "1yq694myq2rhfp2hwwpyzcg1pzpxcp7j72wib8p9pw9dfj7008sv"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.3"; sha256 = "0dajvr60nwvnv7s6kcqgw1w97zxdpz1c5lb7kcq7r0hi0l05ck3q"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.3"; sha256 = "191ajgi6fnfqcvqvkayjsxasiz6l0bv3pps8vv9abbyc4b12qvph"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.3"; sha256 = "1w5njksq3amrrp7fqxw89nv6ar2kgc5yx092i4rxv7hrjbd1aagx"; })
|
||||
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.3"; sha256 = "03wwfbarsxjnk70qhqyd1dw65098dncqk2m0vksx92j70i7lry6q"; })
|
||||
(fetchNuGet { pname = "Splat"; version = "14.4.1"; sha256 = "03ycyjn2ii44npi015p4rk344xnjgdzz02cf63cmhx2ab8hv6p4b"; })
|
||||
(fetchNuGet { pname = "SSH.NET"; version = "2020.0.2"; sha256 = "18mq7jjdbzc7qcsh5wg2j0gd39qbnrxkn811cy8wrdvki0pfi0sm"; })
|
||||
(fetchNuGet { pname = "SshNet.Security.Cryptography"; version = "1.3.0"; sha256 = "1y9r9c2dn81l1l4nn976fwf0by83qbvb0sp1hw7m19pqz7pmaflh"; })
|
||||
(fetchNuGet { pname = "System.CodeDom"; version = "7.0.0"; sha256 = "08a2k2v7kdx8wmzl4xcpfj749yy476ggqsy4cps4iyqqszgyv0zc"; })
|
||||
(fetchNuGet { pname = "System.CodeDom"; version = "8.0.0-preview.6.23329.7"; sha256 = "1wbh229qyhrhcwihpkh99kzcfmn7f13s8l94gbw3hm4d24kqks7b"; })
|
||||
(fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
|
||||
(fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
|
||||
(fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
|
||||
(fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "7.0.0"; sha256 = "149d9kmakzkbw69cip1ny0wjlgcvnhrr7vz5pavpsip36k2mw02a"; })
|
||||
(fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "8.0.0-preview.6.23329.7"; sha256 = "1jj4yizbcj54m0qhj18il5b2r2cw4njl5z46v0121qvsxsgllc8k"; })
|
||||
(fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
|
||||
(fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "7.0.0"; sha256 = "16p8z975dnzmncfifa9gw9n3k9ycpr2qvz7lglpghsvx0fava8k9"; })
|
||||
(fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "8.0.0-preview.6.23329.7"; sha256 = "0c1m9c6fq4mqxv8mnwzmhpv5321lrgnn3sikis9l2072cm5lzcnm"; })
|
||||
(fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; sha256 = "02n8rzm58dac2np8b3xw8ychbvylja4nh6938l5k2fhyn40imlgz"; })
|
||||
(fetchNuGet { pname = "System.Drawing.Common"; version = "7.0.0"; sha256 = "0jwyv5zjxzr4bm4vhmz394gsxqa02q6pxdqd2hwy1f116f0l30dp"; })
|
||||
(fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
|
||||
(fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
|
||||
(fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
|
||||
(fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; sha256 = "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"; })
|
||||
(fetchNuGet { pname = "System.IO.Ports"; version = "7.0.0"; sha256 = "0nk5r3vair9kvbgcrp8zbc60x2yr464cnm6gjsz6wj1pm5b51gvp"; })
|
||||
(fetchNuGet { pname = "System.IO.Ports"; version = "8.0.0-preview.6.23329.7"; sha256 = "0mc02ngqdbgazg7kw82g68kpbm5f7pdyjbfssjj30281116plyqq"; })
|
||||
(fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
|
||||
(fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
|
||||
(fetchNuGet { pname = "System.Management"; version = "7.0.2"; sha256 = "0mjdkzl459hnz0qg4m0xp2kwizsqgdc9vc3xk7y7cv0znhhbb7bc"; })
|
||||
(fetchNuGet { pname = "System.Management"; version = "8.0.0-preview.6.23329.7"; sha256 = "1f7apr1yq5jpr9alq03g90mj8wg9s30vxd8hp6irnf3pk9sgk5ys"; })
|
||||
(fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
|
||||
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
|
||||
(fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
|
||||
(fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
|
||||
(fetchNuGet { pname = "System.Reactive"; version = "6.0.0"; sha256 = "1mkvx1fwychpczksy6svfmniqhbm3xqblxqik6178l12xgq7aw45"; })
|
||||
(fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; })
|
||||
(fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
|
||||
(fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
|
||||
(fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
|
||||
(fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
|
||||
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j"; })
|
||||
(fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
|
||||
(fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
|
||||
(fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
|
||||
(fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "7.0.0"; sha256 = "15s9s6hsj9bz0nzw41mxbqdjgjd71w2djqbv0aj413gfi9amybk9"; })
|
||||
(fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "8.0.0-preview.6.23329.7"; sha256 = "1xs1fmz30gr0g5c2m0xy1dx5rlfsfapyj8l6v7a9c312bd02m4id"; })
|
||||
(fetchNuGet { pname = "System.Security.Permissions"; version = "7.0.0"; sha256 = "0wkm6bj4abknzj41ygkziifx8mzhj4bix92wjvj6lihaw1gniq8c"; })
|
||||
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
|
||||
(fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; })
|
||||
(fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
|
||||
(fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
|
||||
(fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
|
||||
(fetchNuGet { pname = "System.Windows.Extensions"; version = "7.0.0"; sha256 = "11r9f0v7qp365bdpq5ax023yra4qvygljz18dlqs650d44iay669"; })
|
||||
(fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; sha256 = "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"; })
|
||||
(fetchNuGet { pname = "Vortice.DirectInput"; version = "3.2.0"; sha256 = "0ig60651kvynw6x3f70y3c95n581shr1k75b407p1n9mr8qnzfsy"; })
|
||||
(fetchNuGet { pname = "Vortice.DirectX"; version = "3.2.0"; sha256 = "15wlzag7p8kvrjzjpndaa1pb9acpvylnxz8vb3rx2d3q62k9k2hw"; })
|
||||
(fetchNuGet { pname = "Vortice.Mathematics"; version = "1.5.2"; sha256 = "04s282b07fz1h1d6rw1iiqcsfpj415fin5q5cxmq2bg7a930rfjz"; })
|
||||
(fetchNuGet { pname = "Vortice.XInput"; version = "3.2.0"; sha256 = "00bkrsml45rzy1yvxfrykdgmg9g74ac3a2xb0251205mziwa0m3x"; })
|
||||
]
|
86
pkgs/by-name/re/retrospy/package.nix
Normal file
86
pkgs/by-name/re/retrospy/package.nix
Normal file
@ -0,0 +1,86 @@
|
||||
{ buildDotnetModule
|
||||
, fetchFromGitHub
|
||||
, dotnetCorePackages
|
||||
, copyDesktopItems
|
||||
, makeDesktopItem
|
||||
, lib
|
||||
, fontconfig
|
||||
, libX11
|
||||
, libXcursor
|
||||
, libICE
|
||||
, libSM
|
||||
}:
|
||||
let
|
||||
version = "6.4.8";
|
||||
|
||||
executables = [
|
||||
"RetroSpy"
|
||||
"GBPemu"
|
||||
"GBPUpdater"
|
||||
"UsbUpdater"
|
||||
];
|
||||
in
|
||||
buildDotnetModule {
|
||||
pname = "retrospy";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "retrospy";
|
||||
repo = "RetroSpy";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-0rdLdud78gnBX8CIdG81caJ1IRoIjGzb7coP4huEPDA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
runtimeDeps = [
|
||||
fontconfig
|
||||
libX11
|
||||
libICE
|
||||
libXcursor
|
||||
libSM
|
||||
];
|
||||
|
||||
projectFile = [
|
||||
"RetroSpyX/RetroSpyX.csproj"
|
||||
"GBPemuX/GBPemuX.csproj"
|
||||
"GBPUpdaterX2/GBPUpdaterX2.csproj"
|
||||
"UsbUpdaterX2/UsbUpdaterX2.csproj"
|
||||
];
|
||||
|
||||
dotnet-sdk = dotnetCorePackages.sdk_7_0;
|
||||
dotnet-runtime = dotnetCorePackages.aspnetcore_7_0;
|
||||
|
||||
nugetDeps = ./deps.nix;
|
||||
|
||||
inherit executables;
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/retrospy
|
||||
${builtins.concatStringsSep "\n" (map (e: "cp ./${e}.ico $out/share/retrospy/${e}.ico") executables)}
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
desktopItems = map
|
||||
(e: (makeDesktopItem {
|
||||
name = e;
|
||||
exec = e;
|
||||
icon = "${placeholder "out"}/share/retrospy/${e}.ico";
|
||||
desktopName = "${e}";
|
||||
categories = [ "Utility" ];
|
||||
startupWMClass = e;
|
||||
}))
|
||||
executables;
|
||||
|
||||
meta = {
|
||||
description = "Live controller viewer for Nintendo consoles as well as many other retro consoles and computers";
|
||||
homepage = "https://retro-spy.com/";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = [ lib.maintainers.naxdy ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
17
pkgs/by-name/re/retrospy/update.sh
Executable file
17
pkgs/by-name/re/retrospy/update.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl jq common-updater-scripts
|
||||
# shellcheck shell=bash
|
||||
set -euo pipefail
|
||||
|
||||
new_version="$(curl -s "https://api.github.com/repos/retrospy/RetroSpy/releases?per_page=1" | jq -r '.[0].tag_name')"
|
||||
new_version=${new_version#v}
|
||||
old_version=$(nix-instantiate --eval -A retrospy.version | jq -e -r)
|
||||
|
||||
if [[ "$new_version" == "$old_version" ]]; then
|
||||
echo "Up to date"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
update-source-version retrospy "$new_version"
|
||||
|
||||
eval "$(nix-build . -A retrospy.fetch-deps --no-out-link)"
|
@ -7,13 +7,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "simdutf";
|
||||
version = "5.2.6";
|
||||
version = "5.2.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "simdutf";
|
||||
repo = "simdutf";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-fbDQPHoGqbojvhsMOrg/gMMQJ8bODV/P53F05yIHcTQ=";
|
||||
hash = "sha256-EFyKefq03fpkrKQoSgfvWAjMwwB5UubQouZZU9Obn3k=";
|
||||
};
|
||||
|
||||
# Fix build on darwin
|
||||
|
@ -13,14 +13,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "varia";
|
||||
version = "2024.3.20";
|
||||
version = "2024.5.7";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "giantpinkrobots";
|
||||
repo = "varia";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-kvpARXunKaybw9mNCvCTjtHTGbnbVmja5npcjFY5cdM=";
|
||||
hash = "sha256-axBBJYIFCt3J0aCY8tMYehho0QN1eIcUMPhWb5g5uDc=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
4687
pkgs/by-name/yt/ytermusic/Cargo.lock
generated
Normal file
4687
pkgs/by-name/yt/ytermusic/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
54
pkgs/by-name/yt/ytermusic/package.nix
Normal file
54
pkgs/by-name/yt/ytermusic/package.nix
Normal file
@ -0,0 +1,54 @@
|
||||
{ alsa-lib
|
||||
, dbus
|
||||
, fetchFromGitHub
|
||||
, lib
|
||||
, openssl
|
||||
, pkg-config
|
||||
, rustPlatform
|
||||
, stdenv
|
||||
,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ytermusic";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ccgauche";
|
||||
repo = "ytermusic";
|
||||
rev = "beta-${version}";
|
||||
hash = "sha256-nu/vedQNs5TgCG1v5qwwDTnFTyXCS2KnLVrnEhCtzCs=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"rusty_ytdl-0.6.6" = "sha256-htXD8v9Yd7S0iLjP6iZu94tP5KO5vbmkdUybqA7OtlU=";
|
||||
"symphonia-0.5.1" = "sha256-rGvde5w7czMLcOPARK1gFfDLn70VeIrn4nKOL6FPc2U=";
|
||||
};
|
||||
};
|
||||
postPatch = "cp ${./Cargo.lock} Cargo.lock";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
cargoBuildType = "release";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
alsa-lib
|
||||
dbus
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "TUI based Youtube Music Player that aims to be as fast and simple as possible";
|
||||
homepage = "https://github.com/ccgauche/ytermusic";
|
||||
changelog = "https://github.com/ccgauche/ytermusic/releases/tag/${src.rev}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ codebam ];
|
||||
mainProgram = "ytermusic";
|
||||
};
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
, bind
|
||||
, cmake
|
||||
, knot-resolver
|
||||
, lispPackages
|
||||
, sbclPackages
|
||||
, luajitPackages
|
||||
, mosquitto
|
||||
, neovim
|
||||
@ -105,7 +105,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
passthru.tests = {
|
||||
inherit bind cmake knot-resolver mosquitto neovim nodejs;
|
||||
inherit (lispPackages) cl-libuv;
|
||||
inherit (sbclPackages) cl-libuv;
|
||||
luajit-libluv = luajitPackages.libluv;
|
||||
luajit-luv = luajitPackages.luv;
|
||||
ocaml-luv = ocamlPackages.luv;
|
||||
|
@ -1 +0,0 @@
|
||||
imported.nix linguist-vendored
|
@ -1,3 +0,0 @@
|
||||
result
|
||||
*.sqlite
|
||||
*.fasl
|
@ -1,197 +0,0 @@
|
||||
## The API
|
||||
|
||||
This page documents the Nix API of nix-cl.
|
||||
|
||||
## Overview
|
||||
|
||||
The core API functions are `build-asdf-system` and
|
||||
`lispWithPackagesInternal`.
|
||||
|
||||
They are considered more low-level that the rest of the API, which
|
||||
builds on top of them to provide a more convenient interface with sane
|
||||
defaults.
|
||||
|
||||
The higher-level API provides a lot of pre-configured packages,
|
||||
including all of Quicklisp, and consists of the functions:
|
||||
|
||||
- `lispPackagesFor`
|
||||
- `lispWithPackages`
|
||||
|
||||
Finally, there are functions that provide pre-defined Lisps, for
|
||||
people who don't need to customize that:
|
||||
|
||||
- `abclPackages`, `eclPackages`, `cclPackages`, `claspPackages`, `sbclPackages`
|
||||
- `abclWithPackages`, `eclWithPackages`, `cclWithPackages`, `claspWithPackages`, `sbclWithPackages`
|
||||
|
||||
The following is an attempt to document all of this.
|
||||
|
||||
## Packaging systems - `build-asdf-system`
|
||||
|
||||
Packages are declared using `build-asdf-system`. This function takes
|
||||
the following arguments and returns a `derivation`.
|
||||
|
||||
#### Required arguments
|
||||
|
||||
##### `pname`
|
||||
Name of the package/library
|
||||
|
||||
##### `version`
|
||||
Version of the package/library
|
||||
|
||||
##### `src`
|
||||
Source of the package/library (`fetchzip`, `fetchgit`, `fetchhg` etc.)
|
||||
|
||||
##### `lisp`
|
||||
This command must load the provided file (`$buildScript`) then exit
|
||||
immediately. For example, SBCL's --script flag does just that.
|
||||
|
||||
#### Optional arguments
|
||||
|
||||
##### `patches ? []`
|
||||
|
||||
Patches to apply to the source code before compiling it. This is a
|
||||
list of files.
|
||||
|
||||
##### `nativeLibs ? []`
|
||||
|
||||
Native libraries, will be appended to the library
|
||||
path. (`pkgs.openssl` etc.)
|
||||
|
||||
##### `javaLibs ? []`
|
||||
|
||||
Java libraries for ABCL, will be appended to the class path.
|
||||
|
||||
##### `lispLibs ? []`
|
||||
|
||||
Lisp dependencies These must themselves be packages built with
|
||||
`build-asdf-system`
|
||||
|
||||
##### `systems ? [ pname ]`
|
||||
|
||||
Some libraries have multiple systems under one project, for example,
|
||||
[cffi] has `cffi-grovel`, `cffi-toolchain` etc. By default, only the
|
||||
`pname` system is build.
|
||||
|
||||
`.asd's` not listed in `systems` are removed before saving the library
|
||||
to the Nix store. This prevents ASDF from referring to uncompiled
|
||||
systems on run time.
|
||||
|
||||
Also useful when the `pname` is different than the system name, such
|
||||
as when using [reverse domain naming]. (see `jzon` ->
|
||||
`com.inuoe.jzon`)
|
||||
|
||||
[cffi]: https://cffi.common-lisp.dev/
|
||||
[reverse domain naming]: https://en.wikipedia.org/wiki/Reverse_domain_name_notation
|
||||
|
||||
##### `asds ? systems`
|
||||
|
||||
The .asd files that this package provides. By default, same as
|
||||
`systems`.
|
||||
|
||||
#### Return value
|
||||
|
||||
A `derivation` that, when built, contains the sources and pre-compiled
|
||||
FASL files (Lisp implementation dependent) alongside any other
|
||||
artifacts generated during compilation.
|
||||
|
||||
#### Example
|
||||
|
||||
[bordeaux-threads.nix] contains a simple example of packaging
|
||||
`alexandria` and `bordeaux-threads`.
|
||||
|
||||
[bordeaux-threads.nix]: /examples/bordeaux-threads.nix
|
||||
|
||||
## Building a Lisp with packages: `lispWithPackagesInternal`
|
||||
|
||||
Generators of Lisps configured to be able to `asdf:load-system`
|
||||
pre-compiled libraries on run-time are built with
|
||||
`lispWithPackagesInternal`.
|
||||
|
||||
#### Required Arguments
|
||||
|
||||
##### `clpkgs`
|
||||
|
||||
An attribute set of `derivation`s returned by `build-asdf-system`
|
||||
|
||||
#### Return value
|
||||
|
||||
`lispWithPackagesInternal` returns a function that takes one argument:
|
||||
a function `(lambda (clpkgs) packages)`, that, given a set of
|
||||
packages, returns a list of package `derivation`s to be included in
|
||||
the closure.
|
||||
|
||||
#### Example
|
||||
|
||||
The [sbcl-with-bt.nix] example creates a runnable Lisp where the
|
||||
`bordeaux-threads` defined in the previous section is precompiled and
|
||||
loadable via `asdf:load-system`:
|
||||
|
||||
[sbcl-with-bt.nix]: /examples/sbcl-with-bt.nix
|
||||
|
||||
## Reusing pre-packaged Lisp libraries: `lispPackagesFor`
|
||||
|
||||
`lispPackagesFor` is a higher level version of
|
||||
`lispPackagesForInternal`: it only takes one argument - a Lisp command
|
||||
to use for compiling packages. It then provides a bunch of ready to
|
||||
use packages.
|
||||
|
||||
#### Required Arguments
|
||||
|
||||
##### `lisp`
|
||||
|
||||
The Lisp command to use in calls to `build-asdf-system` while building
|
||||
the library-provided Lisp package declarations.
|
||||
|
||||
#### Return value
|
||||
|
||||
A set of packages built with `build-asdf-system`.
|
||||
|
||||
#### Example
|
||||
|
||||
The [abcl-package-set.nix] example generates a set of thousands of packages for ABCL.
|
||||
|
||||
[abcl-package-set.nix]: /examples/abcl-package-set.nix
|
||||
|
||||
## Reusing pre-packaged Lisp libraries, part 2: `lispWithPackages`
|
||||
|
||||
This is simply a helper function to avoid having to call
|
||||
`lispPackagesFor` if all you want is a Lisp-with-packages wrapper.
|
||||
|
||||
#### Required Arguments
|
||||
|
||||
##### `lisp`
|
||||
|
||||
The Lisp command to pass to `lispPackagesFor` in order for it to
|
||||
generate a package set. That set is then passed to
|
||||
`lispWithPackagesInternal`.
|
||||
|
||||
#### Return value
|
||||
|
||||
A Lisp-with-packages function (see sections above).
|
||||
|
||||
#### Example
|
||||
|
||||
The [abcl-with-packages.nix] example creates an `abclWithPackages` function.
|
||||
|
||||
[abcl-with-packages.nix]: /examples/abcl-with-packages.nix
|
||||
|
||||
## Using the default Lisp implementations
|
||||
|
||||
This is the easiest way to get going with `nix-cl` in general. Choose
|
||||
the CL implementation of interest and a set of libraries, and get a
|
||||
lisp-with-packages wrapper with those libraries pre-compiled.
|
||||
|
||||
#### `abclPackages`, `eclPackages`, `cclPackages`, `claspPackages`, `sbclPackages`
|
||||
|
||||
Ready to use package sets.
|
||||
|
||||
#### `abclWithPackages`, `eclWithPackages`, `cclWithPackages`, `claspWithPackages`, `sbclWithPackages`
|
||||
|
||||
Ready to use wrapper generators.
|
||||
|
||||
#### Example
|
||||
|
||||
For example, to open a shell with SBCL + hunchentoot + sqlite in PATH:
|
||||
```
|
||||
nix-shell -p 'with import ./. {}; sbclWithPackages (ps: [ ps.hunchentoot ps.sqlite ])'
|
||||
```
|
@ -1,98 +0,0 @@
|
||||
## Use cases
|
||||
|
||||
This page lists some possible use cases for nix-cl.
|
||||
|
||||
## Pinning down the exact commits of libraries
|
||||
|
||||
Sometimes, a bug is fixed upstream but is not yet available in package
|
||||
repositories such as Quicklisp or Ultralisp. The users have to wait
|
||||
for the repository maintainer to update it, or download and compile
|
||||
the patched sources themselves.
|
||||
|
||||
This is a manual and hard to reproduce process. By leveraging Nix,
|
||||
users of `nix-cl` can essentially "run their own package repository",
|
||||
written as Nix code, with all the benefits of that (shareability,
|
||||
cacheability, reproducibility, version-controllable etc.)
|
||||
|
||||
|
||||
## Modifying libraries with patches
|
||||
|
||||
Other times, a bug in a library is not fixed upstream, but you fixed
|
||||
it yourself. Or, you would like a change to the internals that the
|
||||
maintainers don't like.
|
||||
|
||||
Sure, you could fork the code or maintain patches manually, but that
|
||||
becomes hard to manage with a lot of patches. It also doesn't have the
|
||||
benefits mentioned in the previous section.
|
||||
|
||||
`nix-cl` provides a way of applying version-controlled patches to any
|
||||
package.
|
||||
|
||||
|
||||
## Using libraries not available in repositories
|
||||
|
||||
There are useful and working libraries out there, that are nonetheless
|
||||
unavailable to users of package managers such as Quicklisp or
|
||||
Ultralisp. Two real-world examples are [jzon] and [cl-tar].
|
||||
|
||||
`nix-cl` is not tied to any particular package source: instead,
|
||||
packages are written as a Nix expression, which can be done manually
|
||||
or generated/imported.
|
||||
|
||||
This frees the user to have any package they want, and not be
|
||||
constrained by a central repository.
|
||||
|
||||
## Reproducible environments
|
||||
|
||||
The usual way to develop a project involves several steps, such as:
|
||||
|
||||
1. Installing a Lisp implementation
|
||||
2. Installing a package manager
|
||||
3. Installing the chosen libraries
|
||||
|
||||
This is not necessarily reproducible. It's unlikely to come back a
|
||||
year later and develop the project using the exact same versions of
|
||||
the dependencies.
|
||||
|
||||
Things can break between attempts at different points in time. The
|
||||
repository could have updated versions in the meantime. The source
|
||||
tarballs could become unreachable.
|
||||
|
||||
With `nix-cl` you can have your own binary cache for Lisp libraries
|
||||
and not be affected by downtime of other central repositories.
|
||||
|
||||
## Testing across CL implementations
|
||||
|
||||
One can manually download different Lisp implementations and run tests
|
||||
of a package. This works well in most cases, but it is limited in how
|
||||
you can tweak the software. Some practical examples are:
|
||||
|
||||
- Statically compiling [zlib] into [SBCL]
|
||||
- Building SBCL with the `--fancy` flag
|
||||
- Compiling [ECL] as a static library
|
||||
|
||||
These are usually hard to do manually, unless you have the necessary
|
||||
compilers already configured. These combinations are usually not
|
||||
available from package managers as well.
|
||||
|
||||
With Nix it's easier, because it will set up the build environment
|
||||
automatically. It could be useful to, for example:
|
||||
|
||||
- Test against all possible compiler flag combinations
|
||||
- Libc versions (ECL)
|
||||
- JDK versions ([ABCL])
|
||||
|
||||
[zlib]: https://zlib.net
|
||||
[SBCL]: https://sbcl.org
|
||||
[ECL]: https://ecl.common-lisp.dev/
|
||||
[Ultralisp]: https://ultralisp.org/
|
||||
[jzon]: https://github.com/Zulu-Inuoe/jzon
|
||||
[cl-tar]: https://gitlab.common-lisp.net/cl-tar/cl-tar
|
||||
[bootstrap tools]: https://github.com/NixOS/nixpkgs/tree/master/pkgs/stdenv/linux/bootstrap-files
|
||||
[nixpkgs]: https://github.com/NixOS/nixpkgs
|
||||
|
||||
## Windows note
|
||||
|
||||
Note that all of this still only applies to Unix systems - primarily because Nix doesn't work on Windows.
|
||||
|
||||
If you have an idea how to port some of the functionality to Windows, get in touch.
|
@ -1,54 +0,0 @@
|
||||
## Importing package definitions from Quicklisp
|
||||
|
||||
This page documents how to import packages from Quicklisp.
|
||||
|
||||
## Nix dumper
|
||||
|
||||
Run:
|
||||
|
||||
```
|
||||
$ nix-shell
|
||||
$ sbcl --script ql-import.lisp
|
||||
```
|
||||
|
||||
This command runs a program that dumps a `imported.nix` file
|
||||
containing Nix expressions for all packages in Quicklisp. They will be
|
||||
automatically picked up by the `lispPackagesFor` and
|
||||
`lispWithPackages` API functions.
|
||||
|
||||
It also creates a 'packages.sqlite' file. It's used during the
|
||||
generation of the 'imported.nix' file and can be safely removed. It
|
||||
contains the full information of Quicklisp packages, so you can use it
|
||||
to query the dependency graphs using SQL, if you're interested.
|
||||
|
||||
## Tarball hashes
|
||||
|
||||
The Nix dumper program will re-use hashes from "imported.nix" if it
|
||||
detects that it's being run for the first time. This saves a lot of
|
||||
bandwidth by not having to download each tarball again.
|
||||
|
||||
But when upgrading the Quicklisp release URL, this can take a while
|
||||
because it needs to fetch the source code of each new system to
|
||||
compute its SHA256 hash. This is because Quicklisp only provides a
|
||||
SHA1 , and Nix's `builtins.fetchTarball` requires a SHA256.
|
||||
|
||||
Later on, the hashes are cached in `packages.sqlite`, and are reused
|
||||
in subsequent invocations. Therefore you might want to keep the
|
||||
'packages.sqlite' file around if you'd like to keep hashes of
|
||||
historical Quicklisp tarballs, for example for archival purposes.
|
||||
|
||||
## Choosing a Quicklisp release
|
||||
|
||||
Quicklisp release url's are currently hard-coded and can be changed
|
||||
directly in the source code. See the `import` directory.
|
||||
|
||||
## Native and Java libraries
|
||||
|
||||
At the moment, native and Java libraries need to be added manually to
|
||||
imported systems in `ql.nix` on an as-needed basis.
|
||||
|
||||
## Dependencies from packages.nix
|
||||
|
||||
Also worth noting is that systems imported from Quicklisp will prefer
|
||||
packages from `packages.nix` as dependencies, so that custom versions
|
||||
can be provided or broken versions replaced.
|
@ -1,5 +0,0 @@
|
||||
## Quirks
|
||||
|
||||
- `+` in names are converted to `_plus{_,}`: `cl+ssl`->`cl_plus_ssl`, `alexandria+`->`alexandria_plus`
|
||||
- `.` to `_dot_`: `iolib.base`->`iolib_dot_base`
|
||||
- names starting with a number have a `_` prepended (`3d-vectors`->`_3d-vectors`)
|
@ -1,24 +0,0 @@
|
||||
# To run this example from a nix repl, run:
|
||||
# $ nix repl
|
||||
# nix-repl> abcl-packages = import ./abcl-package-set.nix
|
||||
# nix-repl> builtins.attrNames abcl-packages
|
||||
# nix-repl> builtins.length (builtins.attrNames abcl-packages)
|
||||
#
|
||||
# The import returns a package set, which you can use for example to
|
||||
# discover what packages are available in lispWithPackages:
|
||||
#
|
||||
# nix-repl> abcl-packages.cl-op<TAB>
|
||||
# nix-repl> abcl-packages.cl-opengl
|
||||
# nix-repl> # cool, we can use cl-opengl
|
||||
# nix-repl> # some-abcl-with-packages (p: [ p.cl-opengl ])
|
||||
|
||||
|
||||
let
|
||||
|
||||
pkgs = import ../../../../default.nix {};
|
||||
|
||||
abcl = "${pkgs.abcl}/bin/abcl --batch --load";
|
||||
|
||||
abcl-packages = pkgs.lispPackages_new.lispPackagesFor abcl;
|
||||
|
||||
in abcl-packages
|
@ -1,23 +0,0 @@
|
||||
# To run this example from a nix repl, run:
|
||||
# $ nix repl
|
||||
# nix-repl> abcl-with-packages = import ./abcl-with-packages.nix
|
||||
# nix-repl> :b abcl-with-packages (p: [ p.cffi ])
|
||||
#
|
||||
# The import returns a function, which you can call to get access to
|
||||
# thousands of libraries, like, cffi. This works in ABCL by closing
|
||||
# over the JNA dependency:
|
||||
#
|
||||
# nix-repl> awp = abcl-with-packages (p: [ p.cffi ])
|
||||
# nix-repl> awp.CLASSPATH
|
||||
# nix-repl> cffi = builtins.head (awp.lispLibs)
|
||||
# nix-repl> cffi.javaLibs
|
||||
|
||||
let
|
||||
|
||||
pkgs = import ../../../../default.nix {};
|
||||
|
||||
abcl = "${pkgs.abcl}/bin/abcl --batch --load";
|
||||
|
||||
abcl-with-packages = pkgs.lispPackages_new.lispWithPackages abcl;
|
||||
|
||||
in abcl-with-packages
|
@ -1,43 +0,0 @@
|
||||
# To run this example from the command line, run this command:
|
||||
#
|
||||
# $ nix-build ./bordeaux-threads.nix
|
||||
# $ ls ./result/
|
||||
#
|
||||
# To run from a nix repl, run:
|
||||
# $ nix repl
|
||||
# nix-repl> bt = import ./bordeaux-threads.nix
|
||||
# nix-repl> :b bt
|
||||
#
|
||||
# In the `result` directory you can find .fasl files of the
|
||||
# bordeaux-threads library:
|
||||
#
|
||||
# $ ls -l ./result/src/
|
||||
|
||||
let
|
||||
|
||||
pkgs = import ../../../../default.nix {};
|
||||
|
||||
sbcl = "${pkgs.sbcl}/bin/sbcl --script";
|
||||
|
||||
alexandria = pkgs.lispPackages_new.build-asdf-system {
|
||||
pname = "alexandria";
|
||||
version = "v1.4";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://gitlab.common-lisp.net/alexandria/alexandria/-/archive/v1.4/alexandria-v1.4.tar.gz";
|
||||
sha256 = "0r1adhvf98h0104vq14q7y99h0hsa8wqwqw92h7ghrjxmsvz2z6l";
|
||||
};
|
||||
lisp = sbcl;
|
||||
};
|
||||
|
||||
bordeaux-threads = pkgs.lispPackages_new.build-asdf-system {
|
||||
pname = "bordeaux-threads";
|
||||
version = "0.8.8";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/sionescu/bordeaux-threads/archive/v0.8.8.tar.gz";
|
||||
sha256 = "19i443fz3488v1pbbr9x24y8h8vlyhny9vj6c9jk5prm702awrp6";
|
||||
};
|
||||
lisp = sbcl;
|
||||
lispLibs = [ alexandria ];
|
||||
};
|
||||
|
||||
in bordeaux-threads
|
@ -1,31 +0,0 @@
|
||||
# To run this example from the command line, run this command:
|
||||
# $ nix-build ./sbcl-with-bt.nix
|
||||
# $ ls ./result/
|
||||
#
|
||||
# To run from a nix repl, run:
|
||||
# $ nix repl
|
||||
# nix-repl> sbcl-bt = import ./sbcl-with-bt.nix
|
||||
# nix-repl> :b sbcl-bt
|
||||
#
|
||||
# In the `result/bin` directory you can find an `sbcl` executable
|
||||
# that, when started, is able to load the pre-compiled
|
||||
# bordeaux-threads from the Nix store:
|
||||
# $ ./result/bin/sbcl
|
||||
# * (require :asdf)
|
||||
# * (asdf:load-system :bordeaux-threads)
|
||||
|
||||
let
|
||||
|
||||
pkgs = import ../../../../default.nix {};
|
||||
|
||||
sbcl = "${pkgs.sbcl}/bin/sbcl --script";
|
||||
|
||||
bordeaux-threads = import ./bordeaux-threads.nix;
|
||||
|
||||
sbclPackages = { inherit bordeaux-threads; };
|
||||
|
||||
sbclWithPackages = pkgs.lispPackages_new.lispWithPackagesInternal sbclPackages;
|
||||
|
||||
sbcl-bt = sbclWithPackages (p: [ p.bordeaux-threads ]);
|
||||
|
||||
in sbcl-bt
|
@ -1,18 +0,0 @@
|
||||
(defpackage org.lispbuilds.nix/api
|
||||
(:documentation "Public interface of org.lispbuilds.nix")
|
||||
(:use :cl)
|
||||
(:export
|
||||
:import-lisp-packages
|
||||
:database->nix-expression))
|
||||
|
||||
(in-package org.lispbuilds.nix/api)
|
||||
|
||||
(defgeneric import-lisp-packages (repository database)
|
||||
(:documentation
|
||||
"Import Lisp packages (ASDF systems) from repository (Quicklisp,
|
||||
Ultralisp etc.) into a package database."))
|
||||
|
||||
(defgeneric database->nix-expression (database outfile)
|
||||
(:documentation
|
||||
"Generate a nix expression from the package database and write it
|
||||
into outfile."))
|
@ -1,162 +0,0 @@
|
||||
(defpackage org.lispbuilds.nix/database/sqlite
|
||||
(:use :cl)
|
||||
(:import-from :str)
|
||||
(:import-from :sqlite)
|
||||
(:import-from :alexandria :read-file-into-string)
|
||||
(:import-from :arrow-macros :->>)
|
||||
(:import-from
|
||||
:org.lispbuilds.nix/util
|
||||
:replace-regexes)
|
||||
(:import-from
|
||||
:org.lispbuilds.nix/nix
|
||||
:nix-eval
|
||||
:system-master
|
||||
:nixify-symbol
|
||||
:make-pname
|
||||
:*nix-attrs-depth*)
|
||||
(:import-from
|
||||
:org.lispbuilds.nix/api
|
||||
:database->nix-expression)
|
||||
(:export :sqlite-database :init-db)
|
||||
(:local-nicknames
|
||||
(:json :com.inuoe.jzon)))
|
||||
|
||||
(in-package org.lispbuilds.nix/database/sqlite)
|
||||
|
||||
(defclass sqlite-database ()
|
||||
((url :initarg :url
|
||||
:reader database-url
|
||||
:initform (error "url required"))
|
||||
(init-file :initarg :init-file
|
||||
:reader init-file
|
||||
:initform (error "init file required"))))
|
||||
|
||||
(defun init-db (db init-file)
|
||||
(let ((statements (->> (read-file-into-string init-file)
|
||||
(replace-regexes '(".*--.*") '(""))
|
||||
(substitute #\Space #\Newline)
|
||||
(str:collapse-whitespaces)
|
||||
(str:split #\;)
|
||||
(mapcar #'str:trim)
|
||||
(remove-if #'str:emptyp))))
|
||||
(sqlite:with-transaction db
|
||||
(dolist (s statements)
|
||||
(sqlite:execute-non-query db s)))))
|
||||
|
||||
|
||||
;; Writing Nix
|
||||
|
||||
(defparameter prelude "
|
||||
# This file was auto-generated by nix-quicklisp.lisp
|
||||
|
||||
{ runCommand, fetchzip, pkgs, ... }:
|
||||
|
||||
# Ensures that every non-slashy `system` exists in a unique .asd file.
|
||||
# (Think cl-async-base being declared in cl-async.asd upstream)
|
||||
#
|
||||
# This is required because we're building and loading a system called
|
||||
# `system`, not `asd`, so otherwise `system` would not be loadable
|
||||
# without building and loading `asd` first.
|
||||
#
|
||||
let createAsd = { url, sha256, asd, system }:
|
||||
let
|
||||
src = fetchzip { inherit url sha256; };
|
||||
in runCommand \"source\" {} ''
|
||||
mkdir -pv $out
|
||||
cp -r ${src}/* $out
|
||||
find $out -name \"${asd}.asd\" | while read f; do mv -fv $f $(dirname $f)/${system}.asd || true; done
|
||||
'';
|
||||
|
||||
getAttr = builtins.getAttr;
|
||||
|
||||
in {")
|
||||
|
||||
;; Random compilation errors
|
||||
(defparameter +broken-packages+
|
||||
(list
|
||||
;; no dispatch function defined for #\t
|
||||
"hu.dwim.logger"
|
||||
"hu.dwim.serializer"
|
||||
"hu.dwim.quasi-quote"
|
||||
;; Tries to write in $HOME
|
||||
"ubiquitous"
|
||||
"math"
|
||||
;; Upstream bad packaging, multiple systems in clml.blas.asd
|
||||
"clml.blas.hompack"
|
||||
;; Fails on SBCL due to heap exhaustion
|
||||
"magicl"
|
||||
;; Probably missing dependency in QL data
|
||||
"mcclim-bezier"
|
||||
;; Missing dependency on c2ffi cffi extension
|
||||
"hu.dwim.zlib"
|
||||
;; Missing libgvc.so native library
|
||||
"hu.dwim.graphviz"
|
||||
;; These require libRmath.so, but I don't know where to get it from
|
||||
"cl-random"
|
||||
"cl-random-tests"
|
||||
))
|
||||
|
||||
(defmethod database->nix-expression ((database sqlite-database) outfile)
|
||||
(sqlite:with-open-database (db (database-url database))
|
||||
(with-open-file (f outfile
|
||||
:direction :output
|
||||
:if-exists :supersede)
|
||||
|
||||
;; Fix known problematic packages before dumping the nix file.
|
||||
(sqlite:execute-non-query db
|
||||
"create temp table fixed_systems as select * from system_view")
|
||||
|
||||
(sqlite:execute-non-query db
|
||||
"alter table fixed_systems add column systems")
|
||||
|
||||
(sqlite:execute-non-query db
|
||||
"update fixed_systems set systems = json_array(name)")
|
||||
|
||||
(sqlite:execute-non-query db
|
||||
"alter table fixed_systems add column asds")
|
||||
|
||||
(sqlite:execute-non-query db
|
||||
"update fixed_systems set asds = json_array(name)")
|
||||
|
||||
(format f prelude)
|
||||
|
||||
(dolist (p (sqlite:execute-to-list db "select * from fixed_systems"))
|
||||
(destructuring-bind (name version asd url sha256 deps systems asds) p
|
||||
(format f "~% ")
|
||||
(let ((*nix-attrs-depth* 1))
|
||||
(format
|
||||
f
|
||||
"~a = ~a;"
|
||||
(nix-eval `(:symbol ,name))
|
||||
(nix-eval
|
||||
`(:attrs
|
||||
("pname" (:string ,(make-pname name)))
|
||||
("version" (:string ,version))
|
||||
("asds" (:list
|
||||
,@(mapcar (lambda (asd)
|
||||
`(:string ,(system-master asd)))
|
||||
(coerce (json:parse asds) 'list))))
|
||||
("src" (:funcall
|
||||
"createAsd"
|
||||
(:attrs
|
||||
("url" (:string ,url))
|
||||
("sha256" (:string ,sha256))
|
||||
("system" (:string ,(system-master name)))
|
||||
("asd" (:string ,asd)))))
|
||||
("systems" (:list
|
||||
,@(mapcar (lambda (sys)
|
||||
`(:string ,sys))
|
||||
(coerce (json:parse systems) 'list))))
|
||||
("lispLibs" (:list
|
||||
,@(mapcar (lambda (dep)
|
||||
`(:funcall
|
||||
"getAttr"
|
||||
(:string ,(nixify-symbol dep))
|
||||
(:symbol "pkgs")))
|
||||
(remove "asdf"
|
||||
(str:split-omit-nulls #\, deps)
|
||||
:test #'string=))))
|
||||
,@(when (or (find #\/ name)
|
||||
(find name +broken-packages+ :test #'string=))
|
||||
'(("meta" (:attrs ("broken" (:symbol "true"))))))))))))
|
||||
(format f "~%}~%"))))
|
@ -1,41 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS sha256 (
|
||||
id integer PRIMARY KEY AUTOINCREMENT,
|
||||
url text UNIQUE,
|
||||
hash text NOT NULL,
|
||||
created real DEFAULT (julianday('now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS system (
|
||||
id integer PRIMARY KEY AUTOINCREMENT,
|
||||
name text NOT NULL,
|
||||
version text NOT NULL,
|
||||
asd text NOT NULL,
|
||||
created real DEFAULT (julianday('now')),
|
||||
UNIQUE(name, version)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS dep (
|
||||
system_id integer NOT NULL REFERENCES system(id),
|
||||
dep_id integer NOT NULL REFERENCES system(id),
|
||||
PRIMARY KEY (system_id, dep_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS src (
|
||||
sha256_id integer REFERENCES sha256(id),
|
||||
system_id integer UNIQUE REFERENCES system(id)
|
||||
);
|
||||
|
||||
DROP VIEW IF EXISTS system_view;
|
||||
CREATE VIEW IF NOT EXISTS system_view AS
|
||||
SELECT
|
||||
sys.name,
|
||||
sys.version,
|
||||
sys.asd,
|
||||
sha.url,
|
||||
sha.hash,
|
||||
group_concat((SELECT name FROM system WHERE id = dep.dep_id)) as deps
|
||||
FROM system sys
|
||||
JOIN src ON src.system_id = sys.id
|
||||
JOIN sha256 sha ON sha.id = src.sha256_id
|
||||
LEFT JOIN dep ON dep.system_id = sys.id
|
||||
GROUP BY sys.name;
|
@ -1,40 +0,0 @@
|
||||
(defpackage org.lispbuilds.nix/main
|
||||
(:use :common-lisp
|
||||
:org.lispbuilds.nix/database/sqlite
|
||||
:org.lispbuilds.nix/repository/quicklisp
|
||||
:org.lispbuilds.nix/api))
|
||||
|
||||
(in-package org.lispbuilds.nix/main)
|
||||
|
||||
(defun resource (name type)
|
||||
(make-pathname
|
||||
:defaults (asdf:system-source-directory :org.lispbuilds.nix)
|
||||
:name name
|
||||
:type type))
|
||||
|
||||
(defvar *sqlite*
|
||||
(make-instance
|
||||
'sqlite-database
|
||||
:init-file (resource "init" "sql")
|
||||
:url "packages.sqlite"))
|
||||
|
||||
(defvar *quicklisp*
|
||||
(make-instance
|
||||
'quicklisp-repository
|
||||
:dist-url
|
||||
"https://beta.quicklisp.org/dist/quicklisp/2022-11-07/"))
|
||||
|
||||
(defun run-importers ()
|
||||
(import-lisp-packages *quicklisp* *sqlite*)
|
||||
(format t "Imported packages from quicklisp to ~A~%"
|
||||
(truename "packages.sqlite")))
|
||||
|
||||
(defun gen-nix-file ()
|
||||
(database->nix-expression *sqlite* "imported.nix")
|
||||
(format t "Dumped nix file to ~a~%"
|
||||
(truename "imported.nix")))
|
||||
|
||||
(defun main ()
|
||||
(format t "~%")
|
||||
(run-importers)
|
||||
(gen-nix-file))
|
@ -1,81 +0,0 @@
|
||||
(defpackage org.lispbuilds.nix/nix
|
||||
(:documentation "Utilities for generating Nix code")
|
||||
(:use :cl)
|
||||
(:import-from :str)
|
||||
(:import-from :ppcre)
|
||||
(:import-from :arrow-macros :->>)
|
||||
(:import-from :org.lispbuilds.nix/util :replace-regexes)
|
||||
(:export
|
||||
:nix-eval
|
||||
:system-master
|
||||
:nixify-symbol
|
||||
:make-pname
|
||||
:*nix-attrs-depth*))
|
||||
|
||||
(in-package org.lispbuilds.nix/nix)
|
||||
|
||||
;; Path names are alphanumeric and can include the symbols +-._?= and
|
||||
;; must not begin with a period.
|
||||
(defun make-pname (string)
|
||||
(replace-regexes '("^[.]" "[^a-zA-Z0-9+-._?=]")
|
||||
'("_" "_")
|
||||
string))
|
||||
|
||||
(defun system-master (system)
|
||||
(first (str:split "/" system)))
|
||||
|
||||
;;;; Nix generation
|
||||
|
||||
(defun nix-eval (exp)
|
||||
(assert (consp exp))
|
||||
(ecase (car exp)
|
||||
(:string (nix-string (cadr exp)))
|
||||
(:list (apply #'nix-list (rest exp)))
|
||||
(:funcall (apply #'nix-funcall (rest exp)))
|
||||
(:attrs (nix-attrs (cdr exp)))
|
||||
(:merge (apply #'nix-merge (cdr exp)))
|
||||
(:symbol (nix-symbol (cadr exp)))))
|
||||
|
||||
(defun nix-string (object)
|
||||
(format nil "\"~a\"" object))
|
||||
|
||||
(defun nixify-symbol (string)
|
||||
(flet ((fix-special-chars (str)
|
||||
(replace-regexes '("[+]$" "[+][/]" "[+]" "[.]" "[/]")
|
||||
'("_plus" "_plus/" "_plus_" "_dot_" "_slash_")
|
||||
str)))
|
||||
(if (ppcre:scan "^[0-9]" string)
|
||||
(str:concat "_" (fix-special-chars string))
|
||||
(fix-special-chars string))))
|
||||
|
||||
|
||||
(defun nix-symbol (object)
|
||||
(nixify-symbol (format nil "~a" object)))
|
||||
|
||||
(defun nix-list (&rest things)
|
||||
(format nil "[ ~{~A~^ ~} ]" (mapcar 'nix-eval things)))
|
||||
(defvar *nix-attrs-depth* 0)
|
||||
|
||||
(defun nix-attrs (keyvals)
|
||||
(let ((*nix-attrs-depth* (1+ *nix-attrs-depth*)))
|
||||
(format
|
||||
nil
|
||||
(->> "{~%*depth*~{~{~A = ~A;~}~^~%*depth*~}~%*depth-1*}"
|
||||
(str:replace-all "*depth*" (str:repeat *nix-attrs-depth* " "))
|
||||
(str:replace-all "*depth-1*" (str:repeat (1- *nix-attrs-depth*) " ")))
|
||||
(mapcar (lambda (keyval)
|
||||
(let ((key (car keyval))
|
||||
(val (cadr keyval)))
|
||||
(list (nix-symbol key)
|
||||
(nix-eval val))))
|
||||
keyvals))))
|
||||
|
||||
(defun nix-funcall (fun &rest args)
|
||||
(format nil "(~a ~{~a~^ ~})"
|
||||
(nixify-symbol fun)
|
||||
(mapcar 'nix-eval args)))
|
||||
|
||||
(defun nix-merge (a b)
|
||||
(format nil "(~a // ~b)"
|
||||
(nix-eval a)
|
||||
(nix-eval b)))
|
@ -1,24 +0,0 @@
|
||||
(defsystem org.lispbuilds.nix
|
||||
:class :package-inferred-system
|
||||
:description "Utilities for importing ASDF systems into Nix"
|
||||
:depends-on (
|
||||
:alexandria
|
||||
:str
|
||||
:cl-ppcre
|
||||
:sqlite
|
||||
:dexador
|
||||
:arrow-macros
|
||||
:com.inuoe.jzon
|
||||
:org.lispbuilds.nix/api
|
||||
:org.lispbuilds.nix/repository/quicklisp
|
||||
:org.lispbuilds.nix/database/sqlite
|
||||
))
|
||||
|
||||
|
||||
(register-system-packages
|
||||
"cl-ppcre"
|
||||
'(:ppcre))
|
||||
|
||||
(register-system-packages
|
||||
"dexador"
|
||||
'(:dex))
|
@ -1,199 +0,0 @@
|
||||
(defpackage org.lispbuilds.nix/repository/quicklisp
|
||||
(:use :cl)
|
||||
(:import-from :dex)
|
||||
(:import-from :alexandria :read-file-into-string :ensure-list)
|
||||
(:import-from :arrow-macros :->>)
|
||||
(:import-from :str)
|
||||
(:import-from
|
||||
:org.lispbuilds.nix/database/sqlite
|
||||
:sqlite-database
|
||||
:init-db
|
||||
:database-url
|
||||
:init-file)
|
||||
(:import-from
|
||||
:org.lispbuilds.nix/api
|
||||
:import-lisp-packages)
|
||||
(:import-from
|
||||
:org.lispbuilds.nix/util
|
||||
:replace-regexes)
|
||||
(:export :quicklisp-repository)
|
||||
(:local-nicknames
|
||||
(:json :com.inuoe.jzon)))
|
||||
|
||||
(in-package org.lispbuilds.nix/repository/quicklisp)
|
||||
|
||||
(defclass quicklisp-repository ()
|
||||
((dist-url :initarg :dist-url
|
||||
:reader dist-url
|
||||
:initform (error "dist url required"))))
|
||||
|
||||
(defun clear-line ()
|
||||
(write-char #\Return *error-output*)
|
||||
(write-char #\Escape *error-output*)
|
||||
(write-char #\[ *error-output*)
|
||||
(write-char #\K *error-output*))
|
||||
|
||||
(defun status (&rest format-args)
|
||||
(clear-line)
|
||||
(apply #'format (list* *error-output* format-args))
|
||||
(force-output *error-output*))
|
||||
|
||||
;; TODO: This should not know about the imported.nix file.
|
||||
(defun init-tarball-hashes (database)
|
||||
(status "no packages.sqlite - will pre-fill tarball hashes from ~A to save time~%"
|
||||
(truename "imported.nix"))
|
||||
(let* ((lines (uiop:read-file-lines "imported.nix"))
|
||||
(lines (remove-if-not
|
||||
(lambda (line)
|
||||
(let ((trimmed (str:trim-left line)))
|
||||
(or (str:starts-with-p "url = " trimmed)
|
||||
(str:starts-with-p "sha256 = " trimmed))))
|
||||
lines))
|
||||
(lines (mapcar
|
||||
(lambda (line)
|
||||
(multiple-value-bind (whole groups)
|
||||
(ppcre:scan-to-strings "\"\(.*\)\"" line)
|
||||
(declare (ignore whole))
|
||||
(svref groups 0)))
|
||||
lines)))
|
||||
(sqlite:with-open-database (db (database-url database))
|
||||
(init-db db (init-file database))
|
||||
(sqlite:with-transaction db
|
||||
(loop while lines do
|
||||
(sqlite:execute-non-query db
|
||||
"insert or ignore into sha256(url,hash) values (?,?)"
|
||||
(prog1 (first lines) (setf lines (rest lines)))
|
||||
(prog1 (first lines) (setf lines (rest lines))))))
|
||||
(status "OK, imported ~A hashes into DB.~%"
|
||||
(sqlite:execute-single db
|
||||
"select count(*) from sha256")))))
|
||||
|
||||
(defmethod import-lisp-packages ((repository quicklisp-repository)
|
||||
(database sqlite-database))
|
||||
|
||||
;; If packages.sqlite is missing, we should populate the sha256
|
||||
;; table to speed things up.
|
||||
(unless (probe-file (database-url database))
|
||||
(init-tarball-hashes database))
|
||||
|
||||
(let* ((db (sqlite:connect (database-url database)))
|
||||
(systems-url (str:concat (dist-url repository) "systems.txt"))
|
||||
(releases-url (str:concat (dist-url repository) "releases.txt"))
|
||||
(systems-lines (rest (butlast (str:split #\Newline (dex:get systems-url)))))
|
||||
(releases-lines (rest (butlast (str:split #\Newline (dex:get releases-url))))))
|
||||
|
||||
(flet ((sql-query (sql &rest params)
|
||||
(apply #'sqlite:execute-to-list (list* db sql params))))
|
||||
|
||||
;; Ensure database schema
|
||||
(init-db db (init-file database))
|
||||
|
||||
;; Prepare temporary tables for efficient access
|
||||
(sql-query "create temp table if not exists quicklisp_system
|
||||
(project, asd, name unique, deps)")
|
||||
|
||||
(sql-query "create temp table if not exists quicklisp_release
|
||||
(project unique, url, size, md5, sha1, prefix not null, asds)")
|
||||
|
||||
(sqlite:with-transaction db
|
||||
(dolist (line systems-lines)
|
||||
(destructuring-bind (project asd name &rest deps)
|
||||
(str:words line)
|
||||
(sql-query
|
||||
"insert or ignore into quicklisp_system values(?,?,?,?)"
|
||||
project asd name (json:stringify (coerce deps 'vector))))))
|
||||
|
||||
(sqlite:with-transaction db
|
||||
(dolist (line releases-lines)
|
||||
(destructuring-bind (project url size md5 sha1 prefix &rest asds)
|
||||
(str:words line)
|
||||
(sql-query
|
||||
"insert or ignore into quicklisp_release values(?,?,?,?,?,?,?)"
|
||||
project url size md5 sha1 prefix (json:stringify (coerce
|
||||
asds
|
||||
'vector))))))
|
||||
|
||||
(sqlite:with-transaction db
|
||||
;; Should these be temp tables, that then get queried by
|
||||
;; system name? This looks like it uses a lot of memory.
|
||||
(let ((systems
|
||||
(sql-query
|
||||
"with pkg as (
|
||||
select
|
||||
name, asd, url, deps,
|
||||
ltrim(replace(prefix, r.project, ''), '-_') as version
|
||||
from quicklisp_system s, quicklisp_release r
|
||||
where s.project = r.project
|
||||
)
|
||||
select
|
||||
name, version, asd, url,
|
||||
(select json_group_array(
|
||||
json_array(value, (select version from pkg where name=value))
|
||||
)
|
||||
from json_each(deps)) as deps
|
||||
from pkg"
|
||||
)))
|
||||
|
||||
;; First pass: insert system and source tarball informaton.
|
||||
;; Can't insert dependency information, because this works
|
||||
;; on system ids in the database and they don't exist
|
||||
;; yet. Could it be better to just base dependencies on
|
||||
;; names? But then ACID is lost.
|
||||
(dolist (system systems)
|
||||
(destructuring-bind (name version asd url deps) system
|
||||
(declare (ignore deps))
|
||||
(status "importing system '~a-~a'" name version)
|
||||
(let ((hash (nix-prefetch-tarball url db)))
|
||||
(sql-query
|
||||
"insert or ignore into system(name,version,asd) values (?,?,?)"
|
||||
name version asd)
|
||||
(sql-query
|
||||
"insert or ignore into sha256(url,hash) values (?,?)"
|
||||
url hash)
|
||||
(sql-query
|
||||
"insert or ignore into src values
|
||||
((select id from sha256 where url=?),
|
||||
(select id from system where name=? and version=?))"
|
||||
url name version))))
|
||||
|
||||
;; Second pass: connect the in-database systems with
|
||||
;; dependency information
|
||||
(dolist (system systems)
|
||||
(destructuring-bind (name version asd url deps) system
|
||||
(declare (ignore asd url))
|
||||
(dolist (dep (coerce (json:parse deps) 'list))
|
||||
(destructuring-bind (dep-name dep-version) (coerce dep 'list)
|
||||
(if (eql dep-version 'NULL)
|
||||
(warn "Bad data in Quicklisp: ~a has no version" dep-name)
|
||||
(sql-query
|
||||
"insert or ignore into dep values
|
||||
((select id from system where name=? and version=?),
|
||||
(select id from system where name=? and version=?))"
|
||||
name version
|
||||
dep-name dep-version))))))))))
|
||||
|
||||
(write-char #\Newline *error-output*))
|
||||
|
||||
(defun shell-command-to-string (cmd)
|
||||
;; Clearing the library path is needed to prevent a bug, where the
|
||||
;; called subprocess uses a different glibc than the SBCL process
|
||||
;; is. In that case, the call to execve attempts to load the
|
||||
;; libraries used by SBCL from LD_LIBRARY_PATH using a different
|
||||
;; glibc than they expect, which errors out.
|
||||
(let ((ld-library-path (uiop:getenv "LD_LIBRARY_PATH")))
|
||||
(setf (uiop:getenv "LD_LIBRARY_PATH") "")
|
||||
(unwind-protect
|
||||
(uiop:run-program cmd :output '(:string :stripped t))
|
||||
(setf (uiop:getenv "LD_LIBRARY_PATH") ld-library-path))))
|
||||
|
||||
(defun nix-prefetch-tarball (url db)
|
||||
(restart-case
|
||||
(compute-sha256 url db)
|
||||
(try-again ()
|
||||
:report "Try downloading again"
|
||||
(nix-prefetch-tarball url db))))
|
||||
|
||||
(defun compute-sha256 (url db)
|
||||
(or (sqlite:execute-single db "select hash from sha256 where url=?" url)
|
||||
(let ((sha256 (shell-command-to-string (str:concat "nix-prefetch-url --unpack " url))))
|
||||
sha256)))
|
@ -1,16 +0,0 @@
|
||||
(defpackage org.lispbuilds.nix/util
|
||||
(:use :cl)
|
||||
(:import-from :ppcre)
|
||||
(:export
|
||||
:replace-regexes))
|
||||
|
||||
(in-package org.lispbuilds.nix/util)
|
||||
|
||||
(defun replace-regexes (from to str)
|
||||
(assert (= (length from) (length to)))
|
||||
(if (null from)
|
||||
str
|
||||
(replace-regexes
|
||||
(rest from)
|
||||
(rest to)
|
||||
(ppcre:regex-replace-all (first from) str (first to)))))
|
File diff suppressed because it is too large
Load Diff
@ -1,418 +0,0 @@
|
||||
# TODO:
|
||||
# - faster build by using lisp with preloaded asdf?
|
||||
# - dont include java libs unless abcl?
|
||||
# - dont use build-asdf-system to build lispWithPackages?
|
||||
# - make the lisp packages overridable? (e.g. buildInputs glibc->musl)
|
||||
# - build asdf with nix and use that instead of one shipped with impls
|
||||
# (e.g. to fix build with clisp - does anyone use clisp?)
|
||||
# - claspPackages ? (gotta package clasp with nix first)
|
||||
# - hard one: remove unrelated sources ( of systems not being built)
|
||||
# - figure out a less awkward way to patch sources
|
||||
# (have to build from src directly for SLIME to work, so can't just patch sources in place)
|
||||
|
||||
{ pkgs, lib, stdenv, ... }:
|
||||
|
||||
|
||||
let
|
||||
|
||||
inherit (lib)
|
||||
length
|
||||
filter
|
||||
foldl
|
||||
unique
|
||||
id
|
||||
concat
|
||||
concatMap
|
||||
mutuallyExclusive
|
||||
findFirst
|
||||
remove
|
||||
setAttr
|
||||
getAttr
|
||||
hasAttr
|
||||
attrNames
|
||||
attrValues
|
||||
filterAttrs
|
||||
mapAttrs
|
||||
splitString
|
||||
concatStringsSep
|
||||
concatMapStringsSep
|
||||
replaceStrings
|
||||
removeSuffix
|
||||
hasInfix
|
||||
optionalString
|
||||
makeBinPath
|
||||
makeLibraryPath
|
||||
makeSearchPath
|
||||
recurseIntoAttrs
|
||||
dontRecurseIntoAttrs
|
||||
;
|
||||
|
||||
inherit (builtins)
|
||||
head
|
||||
tail
|
||||
elem
|
||||
split
|
||||
storeDir;
|
||||
|
||||
# Returns a flattened dependency tree without duplicates
|
||||
# This is probably causing performance problems...
|
||||
flattenedDeps = lispLibs:
|
||||
let
|
||||
toSet = list: builtins.listToAttrs (map (d: { name = d.pname; value = d; }) list);
|
||||
toList = attrValues;
|
||||
walk = acc: node:
|
||||
if length node.lispLibs == 0
|
||||
then acc
|
||||
else builtins.foldl' walk (acc // toSet node.lispLibs) node.lispLibs;
|
||||
in toList (walk {} { inherit lispLibs; });
|
||||
|
||||
# Stolen from python-packages.nix
|
||||
# Actually no idea how this works
|
||||
makeOverridableLispPackage = f: origArgs:
|
||||
let
|
||||
ff = f origArgs;
|
||||
overrideWith = newArgs: origArgs // (if pkgs.lib.isFunction newArgs then newArgs origArgs else newArgs);
|
||||
in
|
||||
if builtins.isAttrs ff then (ff // {
|
||||
overrideLispAttrs = newArgs: makeOverridableLispPackage f (overrideWith newArgs);
|
||||
})
|
||||
else if builtins.isFunction ff then {
|
||||
overrideLispAttrs = newArgs: makeOverridableLispPackage f (overrideWith newArgs);
|
||||
__functor = self: ff;
|
||||
}
|
||||
else ff;
|
||||
|
||||
#
|
||||
# Wrapper around stdenv.mkDerivation for building ASDF systems.
|
||||
#
|
||||
build-asdf-system =
|
||||
(makeOverridableLispPackage (
|
||||
{ pname,
|
||||
version,
|
||||
src ? null,
|
||||
patches ? [],
|
||||
|
||||
# Native libraries, will be appended to the library path
|
||||
nativeLibs ? [],
|
||||
|
||||
# Java libraries for ABCL, will be appended to the class path
|
||||
javaLibs ? [],
|
||||
|
||||
# Lisp dependencies
|
||||
# these should be packages built with `build-asdf-system`
|
||||
lispLibs ? [],
|
||||
|
||||
# Lisp command to run buildScript
|
||||
lisp,
|
||||
|
||||
# Some libraries have multiple systems under one project, for
|
||||
# example, cffi has cffi-grovel, cffi-toolchain etc. By
|
||||
# default, only the `pname` system is build.
|
||||
#
|
||||
# .asd's not listed in `systems` are removed in
|
||||
# installPhase. This prevents asdf from referring to uncompiled
|
||||
# systems on run time.
|
||||
#
|
||||
# Also useful when the pname is differrent than the system name,
|
||||
# such as when using reverse domain naming.
|
||||
systems ? [ pname ],
|
||||
|
||||
# The .asd files that this package provides
|
||||
asds ? systems,
|
||||
|
||||
# Other args to mkDerivation
|
||||
...
|
||||
} @ args:
|
||||
|
||||
let
|
||||
|
||||
# A little slow for big dependency graphs.
|
||||
# How to make it faster?
|
||||
# Maybe do it in the buildScript in Common Lisp or Bash, instead
|
||||
# of here with Nix?
|
||||
libsFlat = flattenedDeps lispLibs;
|
||||
|
||||
in stdenv.mkDerivation (rec {
|
||||
inherit pname version nativeLibs javaLibs lispLibs lisp systems asds;
|
||||
|
||||
# When src is null, we are building a lispWithPackages and only
|
||||
# want to make use of the dependency environment variables
|
||||
# generated by build-asdf-system
|
||||
dontUnpack = src == null;
|
||||
|
||||
|
||||
# TODO: Do the propagation like for lisp, native and java like this:
|
||||
# https://github.com/teu5us/nix-lisp-overlay/blob/e30dafafa5c1b9a5b0ccc9aaaef9d285d9f0c46b/pkgs/development/lisp-modules/setup-hook.sh
|
||||
# Then remove the "echo >> nix-drvs" from buildScript
|
||||
|
||||
# Tell asdf where to find system definitions of lisp dependencies.
|
||||
#
|
||||
# The "//" ending is important as it makes asdf recurse into
|
||||
# subdirectories when searching for .asd's. This is to support
|
||||
# projects where .asd's aren't in the root directory.
|
||||
CL_SOURCE_REGISTRY = makeSearchPath "/" libsFlat;
|
||||
|
||||
# Tell lisp where to find native dependencies
|
||||
#
|
||||
# Normally generated from lispLibs, but LD_LIBRARY_PATH as a
|
||||
# derivation attr itself can be used as an extension point when
|
||||
# the libs are not in a '/lib' subdirectory
|
||||
LD_LIBRARY_PATH =
|
||||
let
|
||||
libs = concatMap (x: x.nativeLibs) libsFlat;
|
||||
paths = filter (x: x != "") (map (x: x.LD_LIBRARY_PATH) libsFlat);
|
||||
path =
|
||||
makeLibraryPath libs
|
||||
+ optionalString (length paths != 0) ":"
|
||||
+ concatStringsSep ":" paths;
|
||||
in concatStringsSep ":" (unique (splitString ":" path));
|
||||
|
||||
# Java libraries For ABCL
|
||||
CLASSPATH = makeSearchPath "share/java/*" (concatMap (x: x.javaLibs) libsFlat);
|
||||
|
||||
# Portable script to build the systems.
|
||||
#
|
||||
# `lisp` must evaluate this file then exit immediately. For
|
||||
# example, SBCL's --script flag does just that.
|
||||
#
|
||||
# NOTE:
|
||||
# Every other library worked fine with asdf:compile-system in
|
||||
# buildScript.
|
||||
#
|
||||
# cl-syslog, for some reason, signals that CL-SYSLOG::VALID-SD-ID-P
|
||||
# is undefined with compile-system, but works perfectly with
|
||||
# load-system. Strange.
|
||||
buildScript = pkgs.writeText "build-${pname}.lisp" ''
|
||||
(require :asdf)
|
||||
(dolist (s '(${concatStringsSep " " systems}))
|
||||
(asdf:load-system s))
|
||||
'';
|
||||
|
||||
buildPhase = optionalString (src != null) ''
|
||||
# In addition to lisp dependencies, make asdf see the .asd's
|
||||
# of the systems being built
|
||||
#
|
||||
# *Append* src since `lispLibs` can provide .asd's that are
|
||||
# also in `src` but are not in `systems` (that is, the .asd's
|
||||
# that will be deleted in installPhase). We don't want to
|
||||
# rebuild them, but to load them from lispLibs.
|
||||
#
|
||||
# NOTE: It's important to read files from `src` instead of
|
||||
# from pwd to get go-to-definition working with SLIME
|
||||
export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$src//
|
||||
|
||||
# Similiarily for native deps
|
||||
export LD_LIBRARY_PATH=${makeLibraryPath nativeLibs}:$LD_LIBRARY_PATH
|
||||
export CLASSPATH=${makeSearchPath "share/java/*" javaLibs}:$CLASSPATH
|
||||
|
||||
# Make asdf compile from `src` to pwd and load `lispLibs`
|
||||
# from storeDir. Otherwise it could try to recompile lisp deps.
|
||||
export ASDF_OUTPUT_TRANSLATIONS="$src:$(pwd):${storeDir}:${storeDir}"
|
||||
|
||||
# track lisp dependencies for graph generation
|
||||
# TODO: Do the propagation like for lisp, native and java like this:
|
||||
# https://github.com/teu5us/nix-lisp-overlay/blob/e30dafafa5c1b9a5b0ccc9aaaef9d285d9f0c46b/pkgs/development/lisp-modules/setup-hook.sh
|
||||
# Then remove the "echo >> nix-drvs" from buildScript
|
||||
echo $lispLibs >> __nix-drvs
|
||||
|
||||
|
||||
# Finally, compile the systems
|
||||
${lisp} $buildScript
|
||||
'';
|
||||
|
||||
# Copy compiled files to store
|
||||
#
|
||||
# Make sure to include '$' in regex to prevent skipping
|
||||
# stuff like 'iolib.asdf.asd' for system 'iolib.asd'
|
||||
#
|
||||
# Same with '/': `local-time.asd` for system `cl-postgres+local-time.asd`
|
||||
installPhase =
|
||||
let
|
||||
mkSystemsRegex = systems:
|
||||
concatMapStringsSep "\\|" (replaceStrings ["." "+"] ["[.]" "[+]"]) systems;
|
||||
in
|
||||
''
|
||||
mkdir -pv $out
|
||||
cp -r * $out
|
||||
|
||||
# Remove all .asd files except for those in `systems`.
|
||||
find $out -name "*.asd" \
|
||||
| grep -v "/\(${mkSystemsRegex systems}\)\.asd$" \
|
||||
| xargs rm -fv || true
|
||||
'';
|
||||
|
||||
# Not sure if it's needed, but caused problems with SBCL
|
||||
# save-lisp-and-die binaries in the past
|
||||
dontStrip = true;
|
||||
dontFixup = true;
|
||||
|
||||
} // (args // {
|
||||
src = if builtins.length (args.patches or []) > 0
|
||||
then pkgs.applyPatches { inherit (args) src patches; }
|
||||
else args.src;
|
||||
patches = [];
|
||||
|
||||
# make sure that propagated build-inputs from lispLibs are propagated
|
||||
propagatedBuildInputs = lib.unique
|
||||
(builtins.concatLists
|
||||
(lib.catAttrs "propagatedBuildInputs"
|
||||
(builtins.concatLists [[args] lispLibs nativeLibs javaLibs])));
|
||||
}))));
|
||||
|
||||
# Build the set of lisp packages using `lisp`
|
||||
# These packages are defined manually for one reason or another:
|
||||
# - The library is not in quicklisp
|
||||
# - The library that is in quicklisp is broken
|
||||
# - Special build procedure such as cl-unicode, asdf
|
||||
#
|
||||
# These Probably could be done even in ql.nix
|
||||
# - Want to pin a specific commit
|
||||
# - Want to apply custom patches
|
||||
#
|
||||
# They can use the auto-imported quicklisp packages as dependencies,
|
||||
# but some of those don't work out of the box.
|
||||
#
|
||||
# E.g if a QL package depends on cl-unicode it won't build out of
|
||||
# the box. The dependency has to be rewritten using the manually
|
||||
# fixed cl-unicode.
|
||||
#
|
||||
# This is done by generating a 'fixed' set of Quicklisp packages by
|
||||
# calling quicklispPackagesFor with the right `fixup`.
|
||||
commonLispPackagesFor = lisp:
|
||||
let
|
||||
build-asdf-system' = body: build-asdf-system (body // { inherit lisp; });
|
||||
in import ./packages.nix {
|
||||
inherit pkgs;
|
||||
inherit lisp;
|
||||
inherit quicklispPackagesFor;
|
||||
inherit fixupFor;
|
||||
build-asdf-system = build-asdf-system';
|
||||
};
|
||||
|
||||
# Build the set of packages imported from quicklisp using `lisp`
|
||||
quicklispPackagesFor = { lisp, fixup ? lib.id, build ? build-asdf-system }:
|
||||
let
|
||||
build-asdf-system' = body: build (body // {
|
||||
inherit lisp;
|
||||
});
|
||||
in import ./ql.nix {
|
||||
inherit pkgs;
|
||||
inherit fixup;
|
||||
build-asdf-system = build-asdf-system';
|
||||
};
|
||||
|
||||
# Rewrite deps of pkg to use manually defined packages
|
||||
#
|
||||
# The purpose of manual packages is to customize one package, but
|
||||
# then it has to be propagated everywhere for it to make sense and
|
||||
# have consistency in the package tree.
|
||||
fixupFor = manualPackages: qlPkg:
|
||||
assert (lib.isAttrs qlPkg && !lib.isDerivation qlPkg);
|
||||
let
|
||||
# Make it possible to reuse generated attrs without recursing into oblivion
|
||||
packages = (lib.filterAttrs (n: v: n != qlPkg.pname) manualPackages);
|
||||
substituteLib = pkg:
|
||||
if lib.hasAttr pkg.pname packages
|
||||
then packages.${pkg.pname}
|
||||
else pkg;
|
||||
pkg = substituteLib qlPkg;
|
||||
in pkg // { lispLibs = map substituteLib pkg.lispLibs; };
|
||||
|
||||
makeAttrName = str:
|
||||
removeSuffix
|
||||
"_"
|
||||
(replaceStrings
|
||||
["+" "." "/"]
|
||||
["_plus_" "_dot_" "_slash_"]
|
||||
str);
|
||||
|
||||
oldMakeWrapper = pkgs.runCommand "make-wrapper.sh" {} ''
|
||||
substitute ${./old-make-wrapper.sh} $out \
|
||||
--replace @shell@ ${pkgs.bash}/bin/bash
|
||||
'';
|
||||
|
||||
# Creates a lisp wrapper with `packages` installed
|
||||
#
|
||||
# `packages` is a function that takes `clpkgs` - a set of lisp
|
||||
# packages - as argument and returns the list of packages to be
|
||||
# installed
|
||||
lispWithPackagesInternal = clpkgs: packages:
|
||||
# FIXME just use flattenedDeps instead
|
||||
(build-asdf-system rec {
|
||||
lisp = (head (lib.attrValues clpkgs)).lisp;
|
||||
# See dontUnpack in build-asdf-system
|
||||
src = null;
|
||||
pname = baseNameOf (head (split " " lisp));
|
||||
version = "with-packages";
|
||||
lispLibs = packages clpkgs;
|
||||
systems = [];
|
||||
}).overrideAttrs(o: {
|
||||
installPhase = ''
|
||||
# The recent version of makeWrapper causes breakage. For more info see
|
||||
# https://github.com/Uthar/nix-cl/issues/2
|
||||
source ${oldMakeWrapper}
|
||||
|
||||
mkdir -pv $out/bin
|
||||
makeWrapper \
|
||||
${head (split " " o.lisp)} \
|
||||
$out/bin/${baseNameOf (head (split " " o.lisp))} \
|
||||
--prefix CL_SOURCE_REGISTRY : "${o.CL_SOURCE_REGISTRY}" \
|
||||
--prefix ASDF_OUTPUT_TRANSLATIONS : ${concatStringsSep "::" (flattenedDeps o.lispLibs)}: \
|
||||
--prefix LD_LIBRARY_PATH : "${o.LD_LIBRARY_PATH}" \
|
||||
--prefix LD_LIBRARY_PATH : "${makeLibraryPath o.nativeLibs}" \
|
||||
--prefix CLASSPATH : "${o.CLASSPATH}" \
|
||||
--prefix CLASSPATH : "${makeSearchPath "share/java/*" o.javaLibs}" \
|
||||
--prefix PATH : "${makeBinPath (o.buildInputs or [])}" \
|
||||
--prefix PATH : "${makeBinPath (o.propagatedBuildInputs or [])}"
|
||||
'';
|
||||
});
|
||||
|
||||
lispWithPackages = lisp:
|
||||
let
|
||||
packages = lispPackagesFor lisp;
|
||||
in lispWithPackagesInternal packages;
|
||||
|
||||
lispPackagesFor = lisp:
|
||||
let
|
||||
packages = commonLispPackagesFor lisp;
|
||||
qlPackages = quicklispPackagesFor {
|
||||
inherit lisp;
|
||||
fixup = fixupFor packages;
|
||||
};
|
||||
in qlPackages // packages;
|
||||
|
||||
commonLispPackages = rec {
|
||||
inherit
|
||||
build-asdf-system
|
||||
lispWithPackagesInternal
|
||||
lispPackagesFor
|
||||
lispWithPackages;
|
||||
|
||||
# TODO: uncomment clasp when clasp 1.0.0 is packaged
|
||||
|
||||
# There's got to be a better way than this...
|
||||
# The problem was that with --load everywhere, some
|
||||
# implementations didn't exit with 0 on compilation failure
|
||||
# Maybe a handler-case in buildScript?
|
||||
sbcl = "${pkgs.sbcl}/bin/sbcl --script";
|
||||
ecl = "${pkgs.ecl}/bin/ecl --shell";
|
||||
abcl = ''${pkgs.abcl}/bin/abcl --batch --eval "(load \"$buildScript\")"'';
|
||||
ccl = ''${pkgs.ccl}/bin/ccl --batch --eval "(load \"$buildScript\")" --'';
|
||||
# clasp = ''${pkgs.clasp}/bin/clasp --non-interactive --quit --load'';
|
||||
|
||||
# Manually defined packages shadow the ones imported from quicklisp
|
||||
|
||||
sbclPackages = recurseIntoAttrs (lispPackagesFor sbcl);
|
||||
eclPackages = dontRecurseIntoAttrs (lispPackagesFor ecl);
|
||||
abclPackages = dontRecurseIntoAttrs (lispPackagesFor abcl);
|
||||
cclPackages = dontRecurseIntoAttrs (lispPackagesFor ccl);
|
||||
# claspPackages = lispPackagesFor clasp;
|
||||
|
||||
sbclWithPackages = lispWithPackages sbcl;
|
||||
eclWithPackages = lispWithPackages ecl;
|
||||
abclWithPackages = lispWithPackages abcl;
|
||||
cclWithPackages = lispWithPackages ccl;
|
||||
# claspWithPackages = lispWithPackages clasp;
|
||||
};
|
||||
|
||||
in commonLispPackages
|
@ -1,155 +0,0 @@
|
||||
# Assert that FILE exists and is executable
|
||||
#
|
||||
# assertExecutable FILE
|
||||
assertExecutable() {
|
||||
local file="$1"
|
||||
[[ -f "$file" && -x "$file" ]] || \
|
||||
die "Cannot wrap '$file' because it is not an executable file"
|
||||
}
|
||||
|
||||
# construct an executable file that wraps the actual executable
|
||||
# makeWrapper EXECUTABLE OUT_PATH ARGS
|
||||
|
||||
# ARGS:
|
||||
# --argv0 NAME : set name of executed process to NAME
|
||||
# (otherwise it’s called …-wrapped)
|
||||
# --set VAR VAL : add VAR with value VAL to the executable’s
|
||||
# environment
|
||||
# --set-default VAR VAL : like --set, but only adds VAR if not already set in
|
||||
# the environment
|
||||
# --unset VAR : remove VAR from the environment
|
||||
# --run COMMAND : run command before the executable
|
||||
# --add-flags FLAGS : add FLAGS to invocation of executable
|
||||
|
||||
# --prefix ENV SEP VAL : suffix/prefix ENV with VAL, separated by SEP
|
||||
# --suffix
|
||||
# --prefix-each ENV SEP VALS : like --prefix, but VALS is a list
|
||||
# --suffix-each ENV SEP VALS : like --suffix, but VALS is a list
|
||||
# --prefix-contents ENV SEP FILES : like --suffix-each, but contents of FILES
|
||||
# are read first and used as VALS
|
||||
# --suffix-contents
|
||||
makeWrapper() {
|
||||
local original="$1"
|
||||
local wrapper="$2"
|
||||
local params varName value command separator n fileNames
|
||||
local argv0 flagsBefore flags
|
||||
|
||||
assertExecutable "$original"
|
||||
|
||||
mkdir -p "$(dirname "$wrapper")"
|
||||
|
||||
echo "#! @shell@ -e" > "$wrapper"
|
||||
|
||||
params=("$@")
|
||||
for ((n = 2; n < ${#params[*]}; n += 1)); do
|
||||
p="${params[$n]}"
|
||||
|
||||
if [[ "$p" == "--set" ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
value="${params[$((n + 2))]}"
|
||||
n=$((n + 2))
|
||||
echo "export $varName=${value@Q}" >> "$wrapper"
|
||||
elif [[ "$p" == "--set-default" ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
value="${params[$((n + 2))]}"
|
||||
n=$((n + 2))
|
||||
echo "export $varName=\${$varName-${value@Q}}" >> "$wrapper"
|
||||
elif [[ "$p" == "--unset" ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
n=$((n + 1))
|
||||
echo "unset $varName" >> "$wrapper"
|
||||
elif [[ "$p" == "--run" ]]; then
|
||||
command="${params[$((n + 1))]}"
|
||||
n=$((n + 1))
|
||||
echo "$command" >> "$wrapper"
|
||||
elif [[ ("$p" == "--suffix") || ("$p" == "--prefix") ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
separator="${params[$((n + 2))]}"
|
||||
value="${params[$((n + 3))]}"
|
||||
n=$((n + 3))
|
||||
if test -n "$value"; then
|
||||
if test "$p" = "--suffix"; then
|
||||
echo "export $varName=\$$varName\${$varName:+${separator@Q}}${value@Q}" >> "$wrapper"
|
||||
else
|
||||
echo "export $varName=${value@Q}\${$varName:+${separator@Q}}\$$varName" >> "$wrapper"
|
||||
fi
|
||||
fi
|
||||
elif [[ "$p" == "--prefix-each" ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
separator="${params[$((n + 2))]}"
|
||||
values="${params[$((n + 3))]}"
|
||||
n=$((n + 3))
|
||||
for value in $values; do
|
||||
echo "export $varName=${value@Q}\${$varName:+${separator@Q}}\$$varName" >> "$wrapper"
|
||||
done
|
||||
elif [[ "$p" == "--suffix-each" ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
separator="${params[$((n + 2))]}"
|
||||
values="${params[$((n + 3))]}"
|
||||
n=$((n + 3))
|
||||
for value in $values; do
|
||||
echo "export $varName=\$$varName\${$varName:+$separator}${value@Q}" >> "$wrapper"
|
||||
done
|
||||
elif [[ ("$p" == "--suffix-contents") || ("$p" == "--prefix-contents") ]]; then
|
||||
varName="${params[$((n + 1))]}"
|
||||
separator="${params[$((n + 2))]}"
|
||||
fileNames="${params[$((n + 3))]}"
|
||||
n=$((n + 3))
|
||||
for fileName in $fileNames; do
|
||||
contents="$(cat "$fileName")"
|
||||
if test "$p" = "--suffix-contents"; then
|
||||
echo "export $varName=\$$varName\${$varName:+$separator}${contents@Q}" >> "$wrapper"
|
||||
else
|
||||
echo "export $varName=${contents@Q}\${$varName:+$separator}\$$varName" >> "$wrapper"
|
||||
fi
|
||||
done
|
||||
elif [[ "$p" == "--add-flags" ]]; then
|
||||
flags="${params[$((n + 1))]}"
|
||||
n=$((n + 1))
|
||||
flagsBefore="$flagsBefore $flags"
|
||||
elif [[ "$p" == "--argv0" ]]; then
|
||||
argv0="${params[$((n + 1))]}"
|
||||
n=$((n + 1))
|
||||
else
|
||||
die "makeWrapper doesn't understand the arg $p"
|
||||
fi
|
||||
done
|
||||
|
||||
echo exec ${argv0:+-a \"$argv0\"} \""$original"\" \
|
||||
"$flagsBefore" '"$@"' >> "$wrapper"
|
||||
|
||||
chmod +x "$wrapper"
|
||||
}
|
||||
|
||||
addSuffix() {
|
||||
suffix="$1"
|
||||
shift
|
||||
for name in "$@"; do
|
||||
echo "$name$suffix"
|
||||
done
|
||||
}
|
||||
|
||||
filterExisting() {
|
||||
for fn in "$@"; do
|
||||
if test -e "$fn"; then
|
||||
echo "$fn"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Syntax: wrapProgram <PROGRAM> <MAKE-WRAPPER FLAGS...>
|
||||
wrapProgram() {
|
||||
local prog="$1"
|
||||
local hidden
|
||||
|
||||
assertExecutable "$prog"
|
||||
|
||||
hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped
|
||||
while [ -e "$hidden" ]; do
|
||||
hidden="${hidden}_"
|
||||
done
|
||||
mv "$prog" "$hidden"
|
||||
# Silence warning about unexpanded $0:
|
||||
# shellcheck disable=SC2016
|
||||
makeWrapper "$hidden" "$prog" --argv0 '$0' "${@:2}"
|
||||
}
|
@ -1,336 +0,0 @@
|
||||
{ build-asdf-system, lisp, quicklispPackagesFor, fixupFor, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
inherit (pkgs.lib)
|
||||
head
|
||||
makeLibraryPath
|
||||
makeSearchPath
|
||||
setAttr
|
||||
hasAttr
|
||||
optionals
|
||||
hasSuffix
|
||||
splitString
|
||||
;
|
||||
|
||||
# Used by builds that would otherwise attempt to write into storeDir.
|
||||
#
|
||||
# Will run build two times, keeping all files created during the
|
||||
# first run, exept the FASL's. Then using that directory tree as the
|
||||
# source of the second run.
|
||||
#
|
||||
# E.g. cl-unicode creating .txt files during compilation
|
||||
build-with-compile-into-pwd = args:
|
||||
let
|
||||
build = (build-asdf-system (args // { version = args.version + "-build"; }))
|
||||
.overrideAttrs(o: {
|
||||
buildPhase = with builtins; ''
|
||||
mkdir __fasls
|
||||
export LD_LIBRARY_PATH=${makeLibraryPath o.nativeLibs}:$LD_LIBRARY_PATH
|
||||
export CLASSPATH=${makeSearchPath "share/java/*" o.javaLibs}:$CLASSPATH
|
||||
export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$(pwd)//
|
||||
export ASDF_OUTPUT_TRANSLATIONS="$(pwd):$(pwd)/__fasls:${storeDir}:${storeDir}"
|
||||
${o.lisp} ${o.buildScript}
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -pv $out
|
||||
rm -rf __fasls
|
||||
cp -r * $out
|
||||
'';
|
||||
});
|
||||
in build-asdf-system (args // {
|
||||
# Patches are already applied in `build`
|
||||
patches = [];
|
||||
src = build;
|
||||
});
|
||||
|
||||
# A little hacky
|
||||
isJVM = hasSuffix "abcl" (head (splitString " " lisp));
|
||||
|
||||
# Makes it so packages imported from Quicklisp can be re-used as
|
||||
# lispLibs ofpackages in this file.
|
||||
ql = quicklispPackagesFor { inherit lisp; fixup = fixupFor packages; };
|
||||
|
||||
packages = rec {
|
||||
|
||||
asdf = build-with-compile-into-pwd {
|
||||
pname = "asdf";
|
||||
version = "3.3.5.3";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://gitlab.common-lisp.net/asdf/asdf/-/archive/3.3.5.3/asdf-3.3.5.3.tar.gz";
|
||||
sha256 = "0aw200awhg58smmbdmz80bayzmbm1a6547gv0wmc8yv89gjqldbv";
|
||||
};
|
||||
systems = [ "asdf" "uiop" ];
|
||||
};
|
||||
|
||||
uiop = asdf.overrideLispAttrs(o: {
|
||||
pname = "uiop";
|
||||
});
|
||||
|
||||
cffi = let
|
||||
jna = pkgs.fetchMavenArtifact {
|
||||
groupId = "net.java.dev.jna";
|
||||
artifactId = "jna";
|
||||
version = "5.9.0";
|
||||
sha256 = "0qbis8acv04fi902qzak1mbagqaxcsv2zyp7b8y4shs5nj0cgz7a";
|
||||
};
|
||||
in build-asdf-system {
|
||||
src = pkgs.fetchzip {
|
||||
url = "http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz";
|
||||
sha256 = "17ryim4xilb1rzxydfr7595dnhqkk02lmrbkqrkvi9091shi4cj3";
|
||||
};
|
||||
version = "0.24.1";
|
||||
pname = "cffi";
|
||||
lispLibs = with ql; [
|
||||
alexandria
|
||||
babel
|
||||
trivial-features
|
||||
];
|
||||
javaLibs = optionals isJVM [ jna ];
|
||||
};
|
||||
|
||||
cffi-libffi = ql.cffi-libffi.overrideLispAttrs (o: {
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/cffi/cffi/archive/3f842b92ef808900bf20dae92c2d74232c2f6d3a.tar.gz";
|
||||
sha256 = "1jilvmbbfrmb23j07lwmkbffc6r35wnvas5s4zjc84i856ccclm2";
|
||||
};
|
||||
patches = [ ./patches/cffi-libffi-darwin-ffi-h.patch ];
|
||||
});
|
||||
|
||||
cl-unicode = build-with-compile-into-pwd {
|
||||
pname = "cl-unicode";
|
||||
version = "0.1.6";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/edicl/cl-unicode/archive/refs/tags/v0.1.6.tar.gz";
|
||||
sha256 = "0ykx2s9lqfl74p1px0ik3l2izd1fc9jd1b4ra68s5x34rvjy0hza";
|
||||
};
|
||||
systems = [ "cl-unicode" ];
|
||||
lispLibs = with ql; [
|
||||
cl-ppcre
|
||||
flexi-streams
|
||||
];
|
||||
};
|
||||
|
||||
jzon = build-asdf-system {
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/Zulu-Inuoe/jzon/archive/6b201d4208ac3f9721c461105b282c94139bed29.tar.gz";
|
||||
sha256 = "01d4a78pjb1amx5amdb966qwwk9vblysm1li94n3g26mxy5zc2k3";
|
||||
};
|
||||
version = "0.0.0-20210905-6b201d4208";
|
||||
pname = "jzon";
|
||||
lispLibs = [
|
||||
ql.closer-mop
|
||||
];
|
||||
systems = [ "com.inuoe.jzon" ];
|
||||
};
|
||||
|
||||
cl-notify = build-asdf-system {
|
||||
pname = "cl-notify";
|
||||
version = "20080904-138ca7038";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://repo.or.cz/cl-notify.git/snapshot/138ca703861f4a1fbccbed557f92cf4d213668a1.tar.gz";
|
||||
sha256 = "0k6ns6fzvjcbpsqgx85r4g5m25fvrdw9481i9vyabwym9q8bbqwx";
|
||||
};
|
||||
lispLibs = [
|
||||
cffi
|
||||
];
|
||||
nativeLibs = [
|
||||
pkgs.libnotify
|
||||
];
|
||||
};
|
||||
|
||||
cl-liballegro-nuklear = build-with-compile-into-pwd {
|
||||
inherit (ql.cl-liballegro-nuklear) pname version src;
|
||||
nativeBuildInputs = [ pkgs.allegro5 ];
|
||||
nativeLibs = [ pkgs.allegro5 ];
|
||||
lispLibs = ql.cl-liballegro-nuklear.lispLibs ++ [ ql.cl-liballegro ];
|
||||
patches = [ ./patches/cl-liballegro-nuklear-missing-dll.patch ];
|
||||
};
|
||||
|
||||
|
||||
tuple = build-asdf-system {
|
||||
pname = "tuple";
|
||||
version = "b74bd067d";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://fossil.galkowski.xyz/tuple/tarball/b74bd067d4533ac0/tuple.tar.gz";
|
||||
sha256 = "0dk356vkv6kwwcmc3j08x7143549m94rd66rpkzq8zkb31cg2va8";
|
||||
};
|
||||
};
|
||||
|
||||
cl-tar-file = build-asdf-system {
|
||||
pname = "cl-tar-file";
|
||||
version = "v0.2.1";
|
||||
src = pkgs.fetchzip {
|
||||
url = let
|
||||
rev = "0c10bc82f14702c97a26dc25ce075b5d3a2347d1";
|
||||
in "https://gitlab.common-lisp.net/cl-tar/cl-tar-file/-/archive/${rev}/cl-tar-file-${rev}.tar.gz";
|
||||
sha256 = "0i8j05fkgdqy4c4pqj0c68sh4s3klpx9kc5wp73qwzrl3xqd2svy";
|
||||
};
|
||||
lispLibs = with ql; [
|
||||
alexandria
|
||||
babel
|
||||
trivial-gray-streams
|
||||
_40ants-doc
|
||||
salza2
|
||||
chipz
|
||||
flexi-streams
|
||||
parachute
|
||||
];
|
||||
systems = [ "tar-file" "tar-file/test" ];
|
||||
};
|
||||
|
||||
cl-tar = build-asdf-system {
|
||||
pname = "cl-tar";
|
||||
version = "v0.2.1";
|
||||
src = pkgs.fetchzip {
|
||||
url = let
|
||||
rev = "7c6e07a10c93d9e311f087b5f6328cddd481669a";
|
||||
in "https://gitlab.common-lisp.net/cl-tar/cl-tar/-/archive/${rev}/cl-tar-${rev}.tar.gz";
|
||||
sha256 = "0wp23cs3i6a89dibifiz6559la5nk58d1n17xvbxq4nrl8cqsllf";
|
||||
};
|
||||
lispLibs = with ql; [
|
||||
alexandria
|
||||
babel
|
||||
local-time
|
||||
split-sequence
|
||||
_40ants-doc
|
||||
parachute
|
||||
osicat
|
||||
] ++ [ cl-tar-file ];
|
||||
systems = [
|
||||
"tar"
|
||||
"tar/common-extract"
|
||||
"tar/simple-extract"
|
||||
"tar/extract"
|
||||
"tar/create"
|
||||
"tar/docs"
|
||||
"tar/test"
|
||||
"tar/create-test"
|
||||
"tar/extract-test"
|
||||
"tar/simple-extract-test"
|
||||
];
|
||||
};
|
||||
|
||||
lessp = build-asdf-system {
|
||||
pname = "lessp";
|
||||
version = "0.2-f8a9e4664";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/facts-db/cl-lessp/archive/632217602b85b679e8d420654a0aa39e798ca3b5.tar.gz";
|
||||
sha256 = "0i3ia14dzqwjpygd0zn785ff5vqnnmkn75psfpyx0ni3jr71lkq9";
|
||||
};
|
||||
};
|
||||
|
||||
rollback = build-asdf-system {
|
||||
pname = "rollback";
|
||||
version = "0.1-5d3f21fda";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/facts-db/cl-rollback/archive/5d3f21fda8f04f35c5e9d20ee3b87db767915d15.tar.gz";
|
||||
sha256 = "12dpxsbm2al633y87i8p784k2dn4bbskz6sl40v9f5ljjmjqjzxf";
|
||||
};
|
||||
};
|
||||
|
||||
facts = build-asdf-system {
|
||||
pname = "facts";
|
||||
version = "0.1-632217602";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/facts-db/cl-lessp/archive/632217602b85b679e8d420654a0aa39e798ca3b5.tar.gz";
|
||||
sha256 = "09z1vwzjm7hlb529jl3hcjnfd11gh128lmdg51im7ar4jv4746iw";
|
||||
};
|
||||
lispLibs = [ lessp rollback ] ++ [ ql.local-time ];
|
||||
};
|
||||
|
||||
|
||||
cl-fuse = build-with-compile-into-pwd {
|
||||
inherit (ql.cl-fuse) pname version src lispLibs;
|
||||
nativeBuildInputs = [ pkgs.fuse ];
|
||||
nativeLibs = [ pkgs.fuse ];
|
||||
};
|
||||
|
||||
cl-containers = build-asdf-system {
|
||||
inherit (ql.cl-containers) pname version src;
|
||||
lispLibs = ql.cl-containers.lispLibs ++ [ ql.moptilities ];
|
||||
systems = [ "cl-containers" "cl-containers/with-moptilities" ];
|
||||
};
|
||||
|
||||
swank = build-with-compile-into-pwd {
|
||||
inherit (ql.swank) pname version src lispLibs;
|
||||
patches = [ ./patches/swank-pure-paths.patch ];
|
||||
postConfigure = ''
|
||||
substituteAllInPlace swank-loader.lisp
|
||||
'';
|
||||
};
|
||||
|
||||
clx-truetype = build-asdf-system {
|
||||
pname = "clx-truetype";
|
||||
version = "20160825-git";
|
||||
src = pkgs.fetchzip {
|
||||
url = "http://beta.quicklisp.org/archive/clx-truetype/2016-08-25/clx-truetype-20160825-git.tgz";
|
||||
sha256 = "079hyp92cjkdfn6bhkxsrwnibiqbz4y4af6nl31lzw6nm91j5j37";
|
||||
};
|
||||
lispLibs = with ql; [
|
||||
alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf
|
||||
cl-store cl-vectors clx trivial-features zpb-ttf
|
||||
];
|
||||
};
|
||||
|
||||
mathkit = build-asdf-system {
|
||||
inherit (ql.mathkit) pname version src asds lisp;
|
||||
lispLibs = ql.mathkit.lispLibs ++ [ ql.sb-cga ];
|
||||
};
|
||||
|
||||
nyxt-gtk = build-asdf-system {
|
||||
inherit (ql.nyxt) pname lisp;
|
||||
version = "2.2.4";
|
||||
|
||||
lispLibs = ql.nyxt.lispLibs ++ (with ql; [
|
||||
cl-cffi-gtk cl-webkit2 mk-string-metrics
|
||||
]);
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/atlas-engineer/nyxt/archive/2.2.4.tar.gz";
|
||||
sha256 = "12l7ir3q29v06jx0zng5cvlbmap7p709ka3ik6x29lw334qshm9b";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
buildInputs = [
|
||||
# needed for GSETTINGS_SCHEMAS_PATH
|
||||
pkgs.gsettings-desktop-schemas pkgs.glib pkgs.gtk3
|
||||
|
||||
# needed for XDG_ICON_DIRS
|
||||
pkgs.gnome.adwaita-icon-theme
|
||||
];
|
||||
|
||||
buildScript = pkgs.writeText "build-nyxt.lisp" ''
|
||||
(require :asdf)
|
||||
(asdf:load-system :nyxt/gtk-application)
|
||||
(sb-ext:save-lisp-and-die "nyxt" :executable t
|
||||
#+sb-core-compression :compression
|
||||
#+sb-core-compression t
|
||||
:toplevel #'nyxt:entry-point)
|
||||
'';
|
||||
|
||||
# Run with WEBKIT_FORCE_SANDBOX=0 if getting a runtime error in webkitgtk-2.34.4
|
||||
installPhase = ql.nyxt.installPhase + ''
|
||||
rm -v $out/nyxt
|
||||
mkdir -p $out/bin
|
||||
cp -v nyxt $out/bin
|
||||
wrapProgram $out/bin/nyxt \
|
||||
--prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH \
|
||||
--prefix XDG_DATA_DIRS : $XDG_ICON_DIRS \
|
||||
--prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
|
||||
--prefix GIO_EXTRA_MODULES ":" ${pkgs.dconf.lib}/lib/gio/modules/ \
|
||||
--prefix GIO_EXTRA_MODULES ":" ${pkgs.glib-networking}/lib/gio/modules/
|
||||
'';
|
||||
};
|
||||
|
||||
nyxt = nyxt-gtk;
|
||||
|
||||
ltk = ql.ltk.overrideLispAttrs (o: {
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/uthar/ltk/archive/f19162e76d6c7c2f51bd289b811d9ba20dd6555e.tar.gz";
|
||||
sha256 = "0mzikv4abq9yqlj6dsji1wh34mjizr5prv6mvzzj29z1485fh1bj";
|
||||
};
|
||||
version = "f19162e76";
|
||||
});
|
||||
};
|
||||
in packages
|
@ -1,14 +0,0 @@
|
||||
--- a/libffi/libffi-types.lisp
|
||||
+++ b/libffi/libffi-types.lisp
|
||||
@@ -43,9 +43,6 @@
|
||||
|
||||
(pkg-config-cflags "libffi" :optional t)
|
||||
|
||||
-#+darwin
|
||||
-(include "ffi/ffi.h")
|
||||
-#-darwin
|
||||
(include "ffi.h")
|
||||
|
||||
(cenum status
|
||||
|
||||
Diff finished. Sun Nov 13 00:23:10 2022
|
@ -1,16 +0,0 @@
|
||||
--- a/src/ffi/grovel/grovel-freetype.h
|
||||
+++ b/src/ffi/grovel/grovel-freetype.h
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
-#include <ftsystem.h>
|
||||
-#include <fttypes.h>
|
||||
-#include <ftlist.h>
|
||||
-#include <ftimage.h>
|
||||
+#include <freetype/ftsystem.h>
|
||||
+#include <freetype/fttypes.h>
|
||||
+#include <freetype/ftlist.h>
|
||||
+#include <freetype/ftimage.h>
|
||||
|
||||
Diff finished. Mon Nov 14 22:41:57 2022
|
@ -1,17 +0,0 @@
|
||||
Fix system not loading due to:
|
||||
|
||||
Unhandled CFFI:LOAD-FOREIGN-LIBRARY-ERROR
|
||||
Unable to load foreign library (LIBALLEGRO-NUKLEAR).
|
||||
Error opening shared object "/build/source/src/liballegro_nuklear.so":
|
||||
/build/source/src/liballegro_nuklear.so: undefined symbol: al_draw_ellipse.
|
||||
--- a/cl-liballegro-nuklear.asd
|
||||
+++ b/cl-liballegro-nuklear.asd
|
||||
@@ -12,7 +12,7 @@
|
||||
:description "CFFI wrapper for the Nuklear IM GUI library with liballegro backend, to be used with cl-liballegro."
|
||||
:author "Andrew Kravchuk <awkravchuk@gmail.com>"
|
||||
:license "MIT"
|
||||
- :depends-on (:cffi :cffi-libffi :trivial-features)
|
||||
+ :depends-on (:cl-liballegro :cffi :cffi-libffi :trivial-features)
|
||||
:pathname "src"
|
||||
:serial t
|
||||
:components ((:makefile "Makefile")
|
@ -1,27 +0,0 @@
|
||||
From 2040fcab5a7be2f28add46a1412bef62ac5ccf11 Mon Sep 17 00:00:00 2001
|
||||
From: Maximilian Marx <mmarx@wh2.tu-dresden.de>
|
||||
Date: Thu, 24 Nov 2022 20:00:33 +0100
|
||||
Subject: [PATCH] Use glucose binary from PATH if present
|
||||
|
||||
---
|
||||
src/package.lisp | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/package.lisp b/src/package.lisp
|
||||
index b6e26ac..bdb2581 100644
|
||||
--- a/src/package.lisp
|
||||
+++ b/src/package.lisp
|
||||
@@ -13,7 +13,9 @@
|
||||
(defvar *glucose-home* (asdf:system-relative-pathname :cl-sat.glucose "glucose-syrup/"))
|
||||
|
||||
(defun glucose-binary (&optional (*glucose-home* *glucose-home*))
|
||||
- (merge-pathnames "simp/glucose_static" *glucose-home*))
|
||||
+ (if (trivial-package-manager:which "glucose")
|
||||
+ "glucose"
|
||||
+ (merge-pathnames "simp/glucose_static" *glucose-home*)))
|
||||
|
||||
(defmethod solve ((input pathname) (solver (eql :glucose)) &rest options &key debug &allow-other-keys)
|
||||
(remf options :debug)
|
||||
--
|
||||
2.36.2
|
||||
|
@ -1,21 +0,0 @@
|
||||
--- a/magicl.asd
|
||||
+++ b/magicl.asd
|
||||
@@ -143,6 +143,7 @@
|
||||
(shared-object (make-pathname :type #+darwin "dylib" #-darwin "so"
|
||||
:name "libexpokit"
|
||||
:defaults fortran-file)))
|
||||
+ (unless (probe-file (nn shared-object))
|
||||
(uiop:run-program
|
||||
(list "gfortran" "-fPIC" "-std=legacy"
|
||||
"-c"
|
||||
@@ -155,7 +156,7 @@
|
||||
(nn object-file)
|
||||
#+darwin "-lblas"
|
||||
#+darwin "-llapack"))
|
||||
- (delete-file object-file))))
|
||||
+ (delete-file object-file)))))
|
||||
|
||||
|
||||
(asdf:defsystem #:magicl/ext-expokit
|
||||
|
||||
Diff finished. Mon Oct 10 22:03:54 2022
|
@ -1,28 +0,0 @@
|
||||
Prevent swank from attempting write into storeDir
|
||||
--- a/swank-loader.lisp
|
||||
+++ b/swank-loader.lisp
|
||||
@@ -162,7 +162,7 @@
|
||||
,(unique-dir-name)))
|
||||
(user-homedir-pathname)))
|
||||
|
||||
-(defvar *fasl-directory* (default-fasl-dir)
|
||||
+(defvar *fasl-directory* #P"@out@/fasl/"
|
||||
"The directory where fasl files should be placed.")
|
||||
|
||||
(defun binary-pathname (src-pathname binary-dir)
|
||||
@@ -284,12 +284,7 @@
|
||||
(contrib-dir src-dir))))
|
||||
|
||||
(defun delete-stale-contrib-fasl-files (swank-files contrib-files fasl-dir)
|
||||
- (let ((newest (reduce #'max (mapcar #'file-write-date swank-files))))
|
||||
- (dolist (src contrib-files)
|
||||
- (let ((fasl (binary-pathname src fasl-dir)))
|
||||
- (when (and (probe-file fasl)
|
||||
- (<= (file-write-date fasl) newest))
|
||||
- (delete-file fasl))))))
|
||||
+ (declare (ignore swank-files contrib-files fasl-dir)))
|
||||
|
||||
(defun compile-contribs (&key (src-dir (contrib-dir *source-directory*))
|
||||
(fasl-dir (contrib-dir *fasl-directory*))
|
||||
|
||||
Diff finished. Sat Jan 22 23:57:27 2022
|
@ -1,6 +0,0 @@
|
||||
|
||||
(require :asdf)
|
||||
(pushnew (truename "./import") asdf:*central-registry*)
|
||||
(asdf:load-system :org.lispbuilds.nix)
|
||||
(load "./import/main.lisp")
|
||||
(org.lispbuilds.nix/main::main)
|
@ -1,239 +0,0 @@
|
||||
{ pkgs, build-asdf-system, fixup ? pkgs.lib.id, ... }:
|
||||
|
||||
with pkgs;
|
||||
with lib;
|
||||
with lib.lists;
|
||||
with lib.strings;
|
||||
|
||||
let
|
||||
|
||||
# FIXME: automatically add nativeLibs based on conditions signalled
|
||||
|
||||
# Try to keep this list sorted
|
||||
extras = {
|
||||
cffi-libffi = pkg: {
|
||||
nativeBuildInputs = [ libffi ];
|
||||
nativeLibs = [ libffi ];
|
||||
};
|
||||
"cl+ssl" = pkg: {
|
||||
nativeLibs = [ openssl_1_1 ];
|
||||
};
|
||||
"cl-ana.hdf-cffi" = pkg: {
|
||||
nativeBuildInputs = [ pkgs.hdf5 ];
|
||||
nativeLibs = [ pkgs.hdf5 ];
|
||||
NIX_LDFLAGS = [ "-lhdf5" ];
|
||||
};
|
||||
cl-async-ssl = pkg: {
|
||||
nativeLibs = [ openssl_1_1 ];
|
||||
};
|
||||
cl-cffi-gtk-glib = pkg: {
|
||||
nativeLibs = [ glib ];
|
||||
};
|
||||
cl-cffi-gtk-cairo = pkg: {
|
||||
nativeLibs = [ cairo ];
|
||||
};
|
||||
cl-cffi-gtk-gdk = pkg: {
|
||||
nativeLibs = [ gtk3 ];
|
||||
};
|
||||
cl-cffi-gtk-gdk-pixbuf = pkg: {
|
||||
nativeLibs = [ gdk-pixbuf ];
|
||||
};
|
||||
cl-cffi-gtk-pango = pkg: {
|
||||
nativeLibs = [ pango ];
|
||||
};
|
||||
cl-cairo2 = pkg: {
|
||||
nativeLibs = [ cairo ];
|
||||
};
|
||||
cl-cairo2-xlib = pkg: {
|
||||
nativeLibs = [ gtk2-x11 ];
|
||||
};
|
||||
cl-devil = pkg: {
|
||||
nativeBuildInputs = [ pkgs.libdevil ];
|
||||
nativeLibs = [ pkgs.libdevil ];
|
||||
};
|
||||
cl-freeimage = pkg: {
|
||||
nativeLibs = [ freeimage ];
|
||||
};
|
||||
cl-freetype2 = pkg: {
|
||||
nativeLibs = [ freetype ];
|
||||
nativeBuildInputs = [ freetype ];
|
||||
patches = [ ./patches/cl-freetype2-fix-grovel-includes.patch ];
|
||||
};
|
||||
cl-glfw = pkg: {
|
||||
nativeLibs = [ glfw ];
|
||||
};
|
||||
cl-glfw-opengl-core = pkg: {
|
||||
nativeLibs = [ libGL ];
|
||||
};
|
||||
cl-glfw3 = pkg: {
|
||||
nativeLibs = [ glfw ];
|
||||
};
|
||||
cl-glu = pkg: {
|
||||
nativeLibs = [ libGLU ];
|
||||
};
|
||||
cl-glut = pkg: {
|
||||
nativeLibs = [ freeglut ];
|
||||
};
|
||||
cl-gobject-introspection = pkg: {
|
||||
nativeLibs = [ glib gobject-introspection ];
|
||||
};
|
||||
cl-gtk2-gdk = pkg: {
|
||||
nativeLibs = [ gtk2-x11 ];
|
||||
};
|
||||
cl-gtk2-glib = pkg: {
|
||||
nativeLibs = [ glib ];
|
||||
};
|
||||
cl-gtk2-pango = pkg: {
|
||||
nativeLibs = [ pango ];
|
||||
};
|
||||
cl-liballegro = pkg: {
|
||||
# build doesnt fail without this, but fails on runtime
|
||||
# weird...
|
||||
nativeLibs = [ allegro5 ];
|
||||
};
|
||||
cl-libuv = pkg: {
|
||||
nativeBuildInputs = [ libuv ];
|
||||
nativeLibs = [ libuv ];
|
||||
};
|
||||
cl-libxml2 = pkg: {
|
||||
nativeLibs = [ pkgs.libxml2 ];
|
||||
};
|
||||
cl-libyaml = pkg: {
|
||||
nativeLibs = [ pkgs.libyaml ];
|
||||
};
|
||||
cl-mysql = pkg: {
|
||||
nativeLibs = [ mariadb.client ];
|
||||
};
|
||||
cl-ode = pkg: {
|
||||
nativeLibs = let
|
||||
ode' = ode.overrideAttrs (o: {
|
||||
configureFlags = [
|
||||
"--enable-shared"
|
||||
"--enable-double-precision"
|
||||
];
|
||||
});
|
||||
in [ ode' ];
|
||||
};
|
||||
cl-opengl = pkg: {
|
||||
nativeLibs = [ libGL ];
|
||||
};
|
||||
cl-pango = pkg: {
|
||||
nativeLibs = [ pango ];
|
||||
};
|
||||
cl-rabbit = pkg: {
|
||||
nativeBuildInputs = [ rabbitmq-c ];
|
||||
nativeLibs = [ rabbitmq-c ];
|
||||
};
|
||||
cl-rdkafka = pkg: {
|
||||
nativeBuildInputs = [ rdkafka ];
|
||||
nativeLibs = [ rdkafka ];
|
||||
};
|
||||
cl-readline = pkg: {
|
||||
nativeLibs = [ pkgs.readline ];
|
||||
};
|
||||
cl-rsvg2 = pkg: {
|
||||
nativeLibs = [ librsvg ];
|
||||
};
|
||||
"cl-sat.glucose" = pkg: {
|
||||
propagatedBuildInputs = [ pkgs.glucose ];
|
||||
patches = [ ./patches/cl-sat.glucose-binary-from-PATH-if-present.patch ];
|
||||
|
||||
};
|
||||
"cl-sat.minisat" = pkg: {
|
||||
propagatedBuildInputs = [ pkgs.minisat ];
|
||||
};
|
||||
cl-webkit2 = pkg: {
|
||||
nativeLibs = [ webkitgtk ];
|
||||
};
|
||||
classimp = pkg: {
|
||||
nativeLibs = [ assimp ];
|
||||
meta.broken = true; # Requires assimp ≤ 5.0.x.
|
||||
};
|
||||
clsql-postgresql = pkg: {
|
||||
nativeLibs = [ postgresql.lib ];
|
||||
};
|
||||
clsql-sqlite3 = pkg: {
|
||||
nativeLibs = [ sqlite ];
|
||||
};
|
||||
dbd-mysql = pkg: {
|
||||
nativeLibs = [ mariadb.client ];
|
||||
};
|
||||
gsll = pkg: {
|
||||
nativeBuildInputs = [ pkgs.gsl ];
|
||||
nativeLibs = [ pkgs.gsl ];
|
||||
};
|
||||
iolib = pkg: {
|
||||
nativeBuildInputs = [ libfixposix ];
|
||||
nativeLibs = [ libfixposix ];
|
||||
systems = [ "iolib" "iolib/os" "iolib/pathnames" ];
|
||||
};
|
||||
lev = pkg: {
|
||||
nativeLibs = [ libev ];
|
||||
};
|
||||
lispbuilder-sdl-cffi = pkg: {
|
||||
nativeLibs = [ SDL ];
|
||||
};
|
||||
lla = pkg: {
|
||||
nativeLibs = [ openblas ];
|
||||
};
|
||||
mssql = pkg: {
|
||||
nativeLibs = [ freetds ];
|
||||
};
|
||||
osicat = pkg: {
|
||||
LD_LIBRARY_PATH = "${pkg}/posix/";
|
||||
};
|
||||
png = pkg: {
|
||||
nativeBuildInputs = [ pkgs.libpng ];
|
||||
nativeLibs = [ pkgs.libpng ];
|
||||
};
|
||||
pzmq = pkg: {
|
||||
nativeBuildInputs = [ pkgs.zeromq ];
|
||||
nativeLibs = [ pkgs.zeromq ];
|
||||
};
|
||||
pzmq-compat = pkg: {
|
||||
nativeBuildInputs = [ pkgs.zeromq ];
|
||||
nativeLibs = [ pkgs.zeromq ];
|
||||
};
|
||||
pzmq-examples = pkg: {
|
||||
nativeBuildInputs = [ pkgs.zeromq ];
|
||||
nativeLibs = [ pkgs.zeromq ];
|
||||
};
|
||||
pzmq-test = pkg: {
|
||||
nativeBuildInputs = [ pkgs.zeromq ];
|
||||
nativeLibs = [ pkgs.zeromq ];
|
||||
};
|
||||
sdl2 = pkg: {
|
||||
nativeLibs = [ SDL2 ];
|
||||
};
|
||||
sqlite = pkg: {
|
||||
nativeLibs = [ sqlite ];
|
||||
};
|
||||
trivial-package-manager = pkg: {
|
||||
propagatedBuildInputs = [ pkgs.which ];
|
||||
};
|
||||
trivial-ssh-libssh2 = pkg: {
|
||||
nativeLibs = [ libssh2 ];
|
||||
};
|
||||
zmq = pkg: {
|
||||
nativeBuildInputs = [ pkgs.zeromq ];
|
||||
nativeLibs = [ pkgs.zeromq ];
|
||||
};
|
||||
};
|
||||
|
||||
qlpkgs =
|
||||
lib.optionalAttrs (builtins.pathExists ./imported.nix)
|
||||
(import ./imported.nix { inherit (pkgs) runCommand fetchzip; pkgs = builtQlpkgs; });
|
||||
|
||||
builtQlpkgs = mapAttrs (n: v: build v) qlpkgs;
|
||||
|
||||
build = pkg:
|
||||
let
|
||||
builtPkg = build-asdf-system pkg;
|
||||
withExtras = pkg //
|
||||
(optionalAttrs
|
||||
(hasAttr pkg.pname extras)
|
||||
(extras.${pkg.pname} builtPkg));
|
||||
fixedUp = fixup withExtras;
|
||||
in build-asdf-system fixedUp;
|
||||
|
||||
in builtQlpkgs
|
@ -1,34 +0,0 @@
|
||||
# lisp-modules
|
||||
|
||||
Utilities for packaging ASDF systems using Nix.
|
||||
|
||||
## Quick start
|
||||
|
||||
#### Build an ASDF system:
|
||||
|
||||
```
|
||||
nix-build ./examples/bordeaux-threads.nix
|
||||
ls result/src
|
||||
```
|
||||
|
||||
#### Build an `sbclWithPackages`:
|
||||
|
||||
```
|
||||
nix-build ./examples/sbcl-with-bt.nix
|
||||
result/bin/sbcl
|
||||
```
|
||||
|
||||
#### Re-import Quicklisp packages:
|
||||
|
||||
```
|
||||
nix-shell --run 'sbcl --script ql-import.lisp'
|
||||
```
|
||||
|
||||
#### Test build of packages
|
||||
```
|
||||
(cd test; sbcl --script test.lisp ccl)
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
See `doc` directory.
|
@ -1,7 +0,0 @@
|
||||
with import ../../../default.nix {};
|
||||
mkShell {
|
||||
nativeBuildInputs = [
|
||||
(lispPackages_new.sbclWithPackages
|
||||
(ps: with ps; [ alexandria str dexador cl-ppcre sqlite arrow-macros jzon ]))
|
||||
];
|
||||
}
|
@ -1,395 +0,0 @@
|
||||
_1am
|
||||
_3bmd
|
||||
_3bmd-ext-code-blocks
|
||||
access
|
||||
acclimation
|
||||
agutil
|
||||
alexandria
|
||||
anaphora
|
||||
arnesi
|
||||
array-operations
|
||||
array-utils
|
||||
arrows
|
||||
asdf
|
||||
asdf-package-system
|
||||
asdf-system-connections
|
||||
babel
|
||||
binomial-heap
|
||||
binpack
|
||||
blackbird
|
||||
bordeaux-threads
|
||||
buildnode
|
||||
buildnode-xhtml
|
||||
calispel
|
||||
cffi
|
||||
cffi-grovel
|
||||
cffi-toolchain
|
||||
cffi-uffi-compat
|
||||
chanl
|
||||
check-it
|
||||
chipz
|
||||
chunga
|
||||
circular-streams
|
||||
cl-aa
|
||||
cl-annot
|
||||
cl-anonfun
|
||||
cl-ansi-text
|
||||
cl-async
|
||||
cl-async-base
|
||||
cl-async-repl
|
||||
cl-async-ssl
|
||||
cl-async-util
|
||||
cl-base64
|
||||
cl-cffi-gtk
|
||||
cl-cffi-gtk-cairo
|
||||
cl-cffi-gtk-gdk
|
||||
cl-cffi-gtk-gdk-pixbuf
|
||||
cl-cffi-gtk-gio
|
||||
cl-cffi-gtk-glib
|
||||
cl-cffi-gtk-gobject
|
||||
cl-cffi-gtk-pango
|
||||
cl-change-case
|
||||
cl-cli
|
||||
cl-colors
|
||||
cl-colors2
|
||||
cl-containers
|
||||
cl-cookie
|
||||
cl-css
|
||||
cl-csv
|
||||
cl-cuda
|
||||
cl-custom-hash-table
|
||||
cl-dbi
|
||||
cl-difflib
|
||||
cl-digraph
|
||||
cl-dot
|
||||
cl-emb
|
||||
cl-environments
|
||||
cl-fad
|
||||
cl-form-types
|
||||
cl-fuse
|
||||
cl-fuse-meta-fs
|
||||
cl-fuzz
|
||||
cl-geometry
|
||||
cl-gobject-introspection
|
||||
cl-heap
|
||||
cl-hooks
|
||||
cl-html-diff
|
||||
cl-html-parse
|
||||
cl-html5-parser
|
||||
cl-interpol
|
||||
cl-jpeg
|
||||
cl-json
|
||||
cl-l10n
|
||||
cl-l10n-cldr
|
||||
cl-libuv
|
||||
cl-locale
|
||||
cl-markup
|
||||
cl-mustache
|
||||
cl-mysql
|
||||
cl-num-utils
|
||||
cl-paths
|
||||
cl-paths-ttf
|
||||
cl-pattern
|
||||
cl-pdf
|
||||
cl-postgres
|
||||
cl-postgres_plus_local-time
|
||||
cl-postgres_slash_tests
|
||||
cl-ppcre
|
||||
cl-ppcre-template
|
||||
cl-ppcre-test
|
||||
cl-ppcre-unicode
|
||||
cl-prevalence
|
||||
cl-protobufs
|
||||
cl-qprint
|
||||
cl-qrencode
|
||||
cl-reexport
|
||||
cl-shellwords
|
||||
cl-slice
|
||||
cl-smt-lib
|
||||
cl-smtp
|
||||
cl-speedy-queue
|
||||
cl-store
|
||||
cl-svg
|
||||
cl-syntax
|
||||
cl-syntax-annot
|
||||
cl-syntax-anonfun
|
||||
cl-syntax-markup
|
||||
cl-syslog
|
||||
cl-test-more
|
||||
cl-typesetting
|
||||
cl-unicode
|
||||
cl-unification
|
||||
cl-utilities
|
||||
cl-vectors
|
||||
cl-webkit2
|
||||
cl-who
|
||||
cl-xmlspam
|
||||
cl_plus_ssl
|
||||
clack
|
||||
clack-socket
|
||||
classowary
|
||||
clfswm
|
||||
closer-mop
|
||||
closure-common
|
||||
closure-html
|
||||
clsql
|
||||
clsql-postgresql
|
||||
clsql-postgresql-socket
|
||||
clsql-sqlite3
|
||||
clsql-uffi
|
||||
clss
|
||||
cluffer
|
||||
clump
|
||||
clump-2-3-tree
|
||||
clump-binary-tree
|
||||
clunit
|
||||
clunit2
|
||||
clx
|
||||
clx-truetype
|
||||
collectors
|
||||
colorize
|
||||
command-line-arguments
|
||||
css-lite
|
||||
css-selectors
|
||||
css-selectors-simple-tree
|
||||
css-selectors-stp
|
||||
cxml
|
||||
cxml-stp
|
||||
cxml_slash_test
|
||||
data-table
|
||||
dbd-mysql
|
||||
dbd-postgres
|
||||
dbd-sqlite3
|
||||
dbi
|
||||
dbi-test
|
||||
dbus
|
||||
defclass-std
|
||||
dexador
|
||||
dissect
|
||||
djula
|
||||
do-urlencode
|
||||
documentation-utils
|
||||
drakma
|
||||
eager-future2
|
||||
enchant
|
||||
esrap
|
||||
esrap-peg
|
||||
external-program
|
||||
fare-csv
|
||||
fare-mop
|
||||
fare-quasiquote
|
||||
fare-quasiquote-extras
|
||||
fare-quasiquote-optima
|
||||
fare-quasiquote-readtable
|
||||
fare-utils
|
||||
fast-http
|
||||
fast-io
|
||||
fiasco
|
||||
file-attributes
|
||||
fiveam
|
||||
flexi-streams
|
||||
float-features
|
||||
flow
|
||||
fn
|
||||
form-fiddle
|
||||
fset
|
||||
generic-cl
|
||||
generic-cl_dot_arithmetic
|
||||
generic-cl_dot_collector
|
||||
generic-cl_dot_comparison
|
||||
generic-cl_dot_container
|
||||
generic-cl_dot_internal
|
||||
generic-cl_dot_iterator
|
||||
generic-cl_dot_lazy-seq
|
||||
generic-cl_dot_map
|
||||
generic-cl_dot_math
|
||||
generic-cl_dot_object
|
||||
generic-cl_dot_sequence
|
||||
generic-cl_dot_set
|
||||
gettext
|
||||
global-vars
|
||||
glsl-docs
|
||||
glsl-spec
|
||||
glsl-symbols
|
||||
heap
|
||||
html-encode
|
||||
http-body
|
||||
hu_dot_dwim_dot_asdf
|
||||
hu_dot_dwim_dot_common
|
||||
hu_dot_dwim_dot_common-lisp
|
||||
hu_dot_dwim_dot_def
|
||||
hu_dot_dwim_dot_def_plus_swank
|
||||
hu_dot_dwim_dot_defclass-star
|
||||
hu_dot_dwim_dot_stefil
|
||||
hu_dot_dwim_dot_stefil_plus_hu_dot_dwim_dot_def
|
||||
hu_dot_dwim_dot_stefil_plus_hu_dot_dwim_dot_def_plus_swank
|
||||
hu_dot_dwim_dot_stefil_plus_swank
|
||||
hunchensocket
|
||||
hunchentoot
|
||||
idna
|
||||
ieee-floats
|
||||
inferior-shell
|
||||
introspect-environment
|
||||
iolib
|
||||
iolib_dot_asdf
|
||||
iolib_dot_base
|
||||
iolib_dot_common-lisp
|
||||
iolib_dot_conf
|
||||
ironclad
|
||||
iterate
|
||||
jonathan
|
||||
jpl-queues
|
||||
jpl-util
|
||||
jsown
|
||||
kmrcl
|
||||
lack
|
||||
lack-component
|
||||
lack-middleware-backtrace
|
||||
lack-util
|
||||
lambda-fiddle
|
||||
legit
|
||||
let-plus
|
||||
lev
|
||||
lfarm-client
|
||||
lfarm-common
|
||||
lfarm-server
|
||||
lfarm-ssl
|
||||
lift
|
||||
lisp-binary
|
||||
lisp-namespace
|
||||
lisp-unit
|
||||
lisp-unit2
|
||||
lla
|
||||
local-time
|
||||
log4cl
|
||||
lparallel
|
||||
lquery
|
||||
marshal
|
||||
md5
|
||||
metabang-bind
|
||||
metatilities-base
|
||||
mgl
|
||||
mgl-mat
|
||||
mgl-pax
|
||||
minheap
|
||||
misc-extensions
|
||||
mk-string-metrics
|
||||
mmap
|
||||
moptilities
|
||||
more-conditions
|
||||
mt19937
|
||||
named-readtables
|
||||
nbd
|
||||
net-telent-date
|
||||
net_dot_didierverna_dot_asdf-flv
|
||||
nibbles
|
||||
nyxt
|
||||
optima
|
||||
osicat
|
||||
parachute
|
||||
parenscript
|
||||
parse-declarations-1_dot_0
|
||||
parse-float
|
||||
parse-number
|
||||
parseq
|
||||
parser-combinators
|
||||
parser_dot_common-rules
|
||||
pcall
|
||||
pcall-queue
|
||||
physical-quantities
|
||||
plump
|
||||
postmodern
|
||||
proc-parse
|
||||
prove
|
||||
prove-asdf
|
||||
ptester
|
||||
puri
|
||||
pythonic-string-reader
|
||||
quasiquote-2_dot_0
|
||||
query-fs
|
||||
quri
|
||||
rfc2388
|
||||
rove
|
||||
rt
|
||||
s-sql
|
||||
s-sql_slash_tests
|
||||
s-sysdeps
|
||||
s-xml
|
||||
salza2
|
||||
serapeum
|
||||
simple-date
|
||||
simple-date-time
|
||||
simple-date_slash_postgres-glue
|
||||
simple-inferiors
|
||||
simple-tasks
|
||||
slynk
|
||||
smart-buffer
|
||||
smug
|
||||
spinneret
|
||||
split-sequence
|
||||
sqlite
|
||||
static-dispatch
|
||||
static-vectors
|
||||
stefil
|
||||
str
|
||||
string-case
|
||||
stumpwm
|
||||
swank
|
||||
swap-bytes
|
||||
sycamore
|
||||
symbol-munger
|
||||
trees
|
||||
trivia
|
||||
trivia_dot_balland2006
|
||||
trivia_dot_level0
|
||||
trivia_dot_level1
|
||||
trivia_dot_level2
|
||||
trivia_dot_quasiquote
|
||||
trivia_dot_trivial
|
||||
trivial-arguments
|
||||
trivial-backtrace
|
||||
trivial-clipboard
|
||||
trivial-cltl2
|
||||
trivial-features
|
||||
trivial-file-size
|
||||
trivial-garbage
|
||||
trivial-gray-streams
|
||||
trivial-indent
|
||||
trivial-macroexpand-all
|
||||
trivial-main-thread
|
||||
trivial-mimes
|
||||
trivial-package-local-nicknames
|
||||
trivial-shell
|
||||
trivial-types
|
||||
trivial-utf-8
|
||||
trivial-with-current-source-form
|
||||
type-i
|
||||
uax-15
|
||||
uffi
|
||||
uiop
|
||||
unit-test
|
||||
unix-options
|
||||
unix-opts
|
||||
usocket
|
||||
usocket-server
|
||||
utilities_dot_print-items
|
||||
utilities_dot_print-tree
|
||||
uuid
|
||||
varjo
|
||||
vas-string-metrics
|
||||
vecto
|
||||
vom
|
||||
wild-package-inferred-system
|
||||
woo
|
||||
wookie
|
||||
xembed
|
||||
xkeyboard
|
||||
xml_dot_location
|
||||
xmls
|
||||
xpath
|
||||
xpath_slash_test
|
||||
xsubseq
|
||||
yacc
|
||||
yason
|
||||
zpb-ttf
|
||||
zpng
|
@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env -S sbcl --script
|
||||
|
||||
(require :uiop)
|
||||
|
||||
;; prevent glibc hell
|
||||
(setf (uiop:getenv "LD_LIBRARY_PATH") "")
|
||||
|
||||
(defparameter packages (uiop:read-file-lines "./lispPackagesToTest.txt"))
|
||||
|
||||
(defparameter lisp (or (cadr sb-ext:*posix-argv*) "sbcl"))
|
||||
|
||||
(defparameter nix-build "nix-build -E 'with import ../../../../default.nix {}; lispPackages_new.~aPackages.~a'")
|
||||
|
||||
(defparameter cpu-count
|
||||
(length
|
||||
(remove-if-not
|
||||
(lambda (line)
|
||||
(uiop:string-prefix-p "processor" line))
|
||||
(uiop:read-file-lines "/proc/cpuinfo"))))
|
||||
|
||||
(defparameter sem (sb-thread:make-semaphore :count cpu-count))
|
||||
|
||||
(defparameter statuses (make-hash-table :synchronized t))
|
||||
|
||||
(defparameter log-lock (sb-thread:make-mutex))
|
||||
|
||||
(format *error-output* "Testing ~a on ~a cores~%" lisp cpu-count)
|
||||
|
||||
(defun clear-line ()
|
||||
(write-char #\Return *error-output*)
|
||||
(write-char #\Escape *error-output*)
|
||||
(write-char #\[ *error-output*)
|
||||
(write-char #\K *error-output*))
|
||||
|
||||
(declaim (type fixnum errors))
|
||||
(defglobal errors 0)
|
||||
|
||||
(defmacro when-let (bindings &rest body)
|
||||
(reduce
|
||||
(lambda (expansion form)
|
||||
(destructuring-bind (var test) form
|
||||
(let ((testsym (gensym (symbol-name var))))
|
||||
`(let ((,testsym ,test))
|
||||
(when ,testsym
|
||||
(let ((,var ,testsym))
|
||||
,expansion))))))
|
||||
(reverse bindings)
|
||||
:initial-value `(progn ,@body)))
|
||||
|
||||
(dolist (pkg packages)
|
||||
(sb-thread:wait-on-semaphore sem)
|
||||
(sb-thread:make-thread
|
||||
(lambda ()
|
||||
(handler-case
|
||||
(unwind-protect
|
||||
(multiple-value-bind (out err code)
|
||||
(uiop:run-program
|
||||
(format nil nix-build lisp pkg)
|
||||
:error-output '(:string :stripped t)
|
||||
:ignore-error-status t)
|
||||
(declare (ignorable err))
|
||||
(setf (gethash pkg statuses) code)
|
||||
(when-let ((pos (search "LOAD-FOREIGN-LIBRARY-ERROR" err :test #'string=))
|
||||
(lines (uiop:split-string (subseq err pos) :separator '(#\Newline))))
|
||||
(setf (gethash pkg statuses)
|
||||
(fourth lines)))
|
||||
(sb-thread:with-mutex (log-lock)
|
||||
(clear-line)
|
||||
(format *error-output* "[~a/~a] ~[OK~:;ERROR~] ~a~[~:;~%~]"
|
||||
(hash-table-count statuses)
|
||||
(length packages)
|
||||
code
|
||||
pkg
|
||||
code)
|
||||
(force-output *error-output*))
|
||||
(unless (zerop code)
|
||||
(sb-ext:atomic-incf errors)))
|
||||
(sb-thread:signal-semaphore sem))
|
||||
(error (e)
|
||||
(format t "~a~%" e)
|
||||
(sb-ext:quit :recklessly-p t :unix-status 1))))))
|
||||
|
||||
(sb-thread:wait-on-semaphore sem :n cpu-count)
|
||||
|
||||
(format t "~%Done (~a/~a)."
|
||||
(- (length packages) errors)
|
||||
(length packages))
|
||||
|
||||
(when (plusp errors)
|
||||
(format t "~%~%~a Errors: " errors)
|
||||
(maphash (lambda (k v)
|
||||
(unless (and (numberp v) (zerop v))
|
||||
(format t "~% ~a: ~a" k v)))
|
||||
statuses))
|
@ -1,30 +0,0 @@
|
||||
Want to add a package? There are 3 simple steps!
|
||||
1. Add the needed system names to quicklisp-to-nix-systems.txt.
|
||||
2. cd <path to quicklisp-to-nix-systems.txt> ; nix-shell --pure --run 'quicklisp-to-nix .'
|
||||
You might want to specify also the --cacheSystemInfoDir and --cacheFaslDir
|
||||
parameters to preserve some data between runs. For example, it is very
|
||||
useful when you add new packages with native dependencies and fail to
|
||||
specify the native dependencies correctly the first time.
|
||||
(Might be nice to ensure the cache directories exist)
|
||||
3. Add native libraries and whatever else is needed to quicklisp-to-nix-overrides.nix.
|
||||
If libraries are needed during package analysis then add them to shell.nix, too.
|
||||
4. Sometimes there are problems with loading implementation-provided systems.
|
||||
In this case you might need to add more systems in the implementation's (so
|
||||
SBCL's) entry into *implementation-systems* in quicklisp-to-nix/system-info.lisp
|
||||
|
||||
To update to a more recent quicklisp dist modify
|
||||
lispPackages.quicklisp to have a more recent distinfo.
|
||||
|
||||
quicklisp-to-nix-system-info is responsible for installing a quicklisp
|
||||
package into an isolated environment and figuring out which packages
|
||||
are required by that system. It also extracts other information that
|
||||
is readily available once the system is loaded. The information
|
||||
produced by this program is fed into quicklisp-to-nix. You usually
|
||||
don't need to run this program unless you're trying to understand why
|
||||
quicklisp-to-nix failed to handle a system. The technique used by
|
||||
quicklisp-to-nix-system-info is described in its source.
|
||||
|
||||
quicklisp-to-nix is responsible for reading
|
||||
quicklisp-to-nix-systems.txt, running quicklisp-to-nix-system-info,
|
||||
and generating the nix packages associated with the closure of
|
||||
quicklisp systems.
|
@ -1,38 +0,0 @@
|
||||
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "asdf";
|
||||
version = "2.26";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
|
||||
sha256 = "sha256-tuUuIlZcS+a0izXeJl3Ckp+/PYAWkZ0+Cw7blwkh9+M=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
texinfo
|
||||
texLive
|
||||
perl
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
make asdf.lisp
|
||||
mkdir build
|
||||
ln -s ../asdf.lisp build
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p "$out"/lib/common-lisp/asdf/
|
||||
mkdir -p "$out"/share/doc/asdf/
|
||||
cp -r ./* "$out"/lib/common-lisp/asdf/
|
||||
cp -r doc/* "$out"/share/doc/asdf/
|
||||
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Standard software-system definition library for Common Lisp";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ raskin ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "asdf";
|
||||
version = "3.1.7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
|
||||
sha256 = "sha256-+P+FLM1mr2KRdj7bfhWq4ync86bJS/uE0Jm/E/e4HL0=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
texinfo
|
||||
texLive
|
||||
perl
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
make build/asdf.lisp
|
||||
make -C doc asdf.info asdf.html
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p "$out"/lib/common-lisp/asdf/
|
||||
mkdir -p "$out"/share/doc/asdf/
|
||||
cp -r ./* "$out"/lib/common-lisp/asdf/
|
||||
cp -r doc/* "$out"/share/doc/asdf/
|
||||
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Standard software-system definition library for Common Lisp";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ raskin ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "asdf";
|
||||
version = "3.3.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
|
||||
sha256 = "sha256-/k7cmN0ymZUgpP4K+IWfhq85TkzfPjTR4QdUgV9n1x4=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
texinfo
|
||||
texLive
|
||||
perl
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
make build/asdf.lisp
|
||||
make -C doc asdf.info asdf.html
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p "$out"/lib/common-lisp/asdf/
|
||||
mkdir -p "$out"/share/doc/asdf/
|
||||
cp -r ./* "$out"/lib/common-lisp/asdf/
|
||||
cp -r doc/* "$out"/share/doc/asdf/
|
||||
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Standard software-system definition library for Common Lisp";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ raskin ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Part of NixPkgs package collection
|
||||
# This script can be used at your option under the same license as NixPkgs or
|
||||
# under MIT/X11 license
|
||||
|
||||
lisp="$1"
|
||||
systems="$2"
|
||||
target="$3"
|
||||
code="$4"
|
||||
|
||||
NIX_LISP_SKIP_CODE=1 NIX_LISP_COMMAND="$lisp" source "$(dirname "$0")/cl-wrapper.sh"
|
||||
|
||||
NIX_LISP_BUILD_CODE=
|
||||
|
||||
case "$NIX_LISP" in
|
||||
sbcl)
|
||||
NIX_LISP_BUILD_CODE="(progn
|
||||
(let*
|
||||
((old-fn (symbol-function 'sb-alien::dlopen-or-lose )))
|
||||
(sb-ext:with-unlocked-packages (:sb-sys :sb-alien)
|
||||
(defun sb-alien::dlopen-or-lose (&rest args)
|
||||
(or
|
||||
(ignore-errors (progn (apply old-fn args)))
|
||||
(and
|
||||
args
|
||||
(loop
|
||||
with try = nil
|
||||
with obj = (first args)
|
||||
with original-namestring = (sb-alien::shared-object-namestring obj)
|
||||
for path in (list $(echo "$NIX_LISP_LD_LIBRARY_PATH" | sed -e 's/:/" "/g; s/^/"/; s/$/"/'))
|
||||
for target := (format nil \"~a/~a\" path original-namestring)
|
||||
when (ignore-errors
|
||||
(progn
|
||||
(setf (sb-alien::shared-object-namestring obj) target)
|
||||
(setf try (apply old-fn args))
|
||||
t)) do
|
||||
(progn (return try))
|
||||
finally (progn (setf (sb-alien::shared-object-namestring obj) original-namestring)
|
||||
(return (apply old-fn args)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(sb-ext:save-lisp-and-die \"$target\"
|
||||
:toplevel (lambda ()
|
||||
(setf common-lisp:*standard-input* (sb-sys::make-fd-stream 0 :input t :buffering :line))
|
||||
(setf common-lisp:*standard-output* (sb-sys::make-fd-stream 1 :output t :buffering :line))
|
||||
(setf uiop/image:*command-line-arguments* (cdr sb-ext:*posix-argv*))
|
||||
$code)
|
||||
:executable t :save-runtime-options t :purify t))"
|
||||
systems=":sb-posix $systems"
|
||||
;;
|
||||
ecl)
|
||||
NIX_LISP_BUILD_CODE="()"
|
||||
;;
|
||||
clisp)
|
||||
NIX_LISP_BUILD_CODE="(ext:saveinitmem \"$target\" :norc t :init-function (lambda () $code (ext:bye)) :script nil :executable 0)"
|
||||
;;
|
||||
esac
|
||||
|
||||
"$lisp" \
|
||||
"$NIX_LISP_EXEC_CODE" "(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.lisp\")" \
|
||||
"$NIX_LISP_EXEC_CODE" "(mapcar 'asdf:load-system (list $systems))" \
|
||||
"$NIX_LISP_EXEC_CODE" "$NIX_LISP_BUILD_CODE" \
|
||||
"$NIX_LISP_EXEC_CODE" "(quit)"
|
@ -1,134 +0,0 @@
|
||||
#!@bash@/bin/bash
|
||||
# Part of NixPkgs package collection
|
||||
# This script can be used at your option under the same license as NixPkgs or
|
||||
# under MIT/X11 license
|
||||
|
||||
eval "$NIX_LISP_PREHOOK"
|
||||
|
||||
NIX_LISP_COMMAND="$1"
|
||||
shift
|
||||
|
||||
if [ -z "$NIX_LISP" ]; then
|
||||
while [ -h "${NIX_LISP_COMMAND}" ]; do
|
||||
NIX_LISP_COMMAND="$(readlink -n "${NIX_LISP_COMMAND}")"
|
||||
done
|
||||
NIX_LISP="${NIX_LISP_COMMAND##*/}"
|
||||
fi
|
||||
|
||||
export NIX_LISP NIX_LISP_LOAD_FILE NIX_LISP_EXEC_CODE NIX_LISP_COMMAND NIX_LISP_FINAL_PARAMETERS
|
||||
|
||||
test -n "$NIX_LISP_LD_LIBRARY_PATH" &&
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$NIX_LISP_LD_LIBRARY_PATH"
|
||||
|
||||
declare -a NIX_LISP_FINAL_PARAMETERS;
|
||||
|
||||
case "$NIX_LISP" in
|
||||
sbcl)
|
||||
NIX_LISP_LOAD_FILE="--load"
|
||||
NIX_LISP_EXEC_CODE="--eval"
|
||||
NIX_LISP_QUIT="(quit)"
|
||||
NIX_LISP_NODEBUG='--non-interactive'
|
||||
NIX_LISP_FINAL_PARAMETERS=
|
||||
NIX_LISP_FASL_TYPE="fasl"
|
||||
;;
|
||||
ecl)
|
||||
NIX_LISP_LOAD_FILE="-load"
|
||||
NIX_LISP_EXEC_CODE="-eval"
|
||||
NIX_LISP_QUIT="(quit)"
|
||||
NIX_LISP_NODEBUG='--nodebug'
|
||||
NIX_LISP_FINAL_PARAMETERS=
|
||||
NIX_LISP_FASL_TYPE="fas"
|
||||
;;
|
||||
clisp)
|
||||
NIX_LISP_LOAD_FILE="-c -l"
|
||||
NIX_LISP_EXEC_CODE="-x"
|
||||
NIX_LISP_QUIT="(quit)"
|
||||
NIX_LISP_NODEBUG='-on-error exit'
|
||||
NIX_LISP_FINAL_PARAMETERS="-repl"
|
||||
NIX_LISP_FASL_TYPE="fas"
|
||||
;;
|
||||
lx86cl64)
|
||||
NIX_LISP_LOAD_FILE="-l"
|
||||
NIX_LISP_EXEC_CODE="-e"
|
||||
NIX_LISP_QUIT="(quit)"
|
||||
NIX_LISP_NODEBUG='-b'
|
||||
NIX_LISP_FINAL_PARAMETERS=
|
||||
NIX_LISP_FASL_TYPE="lx64fsl"
|
||||
;;
|
||||
lx86cl)
|
||||
NIX_LISP_LOAD_FILE="-l"
|
||||
NIX_LISP_EXEC_CODE="-e"
|
||||
NIX_LISP_QUIT="(quit)"
|
||||
NIX_LISP_NODEBUG='-b'
|
||||
NIX_LISP_FINAL_PARAMETERS=
|
||||
NIX_LISP_FASL_TYPE="lx32fsl"
|
||||
;;
|
||||
abcl)
|
||||
NIX_LISP_LOAD_FILE="--load"
|
||||
NIX_LISP_EXEC_CODE="--eval"
|
||||
NIX_LISP_QUIT="(quit)"
|
||||
NIX_LISP_NODEBUG=''
|
||||
NIX_LISP_FINAL_PARAMETERS=
|
||||
NIX_LISP_FASL_TYPE="abcl"
|
||||
;;
|
||||
esac
|
||||
|
||||
NIX_LISP_ASDF_REGISTRY_CODE="
|
||||
(progn
|
||||
(setf asdf:*source-registry-parameter*
|
||||
'(:source-registry
|
||||
$(for p in $NIX_LISP_ASDF_PATHS; do
|
||||
echo "(:tree \"$p\")"
|
||||
done)
|
||||
:inherit-configuration))
|
||||
(asdf:initialize-source-registry)
|
||||
)
|
||||
"
|
||||
|
||||
NIX_LISP_ASDF="${NIX_LISP_ASDF:-@out@}"
|
||||
|
||||
nix_lisp_run_single_form(){
|
||||
NIX_LISP_FINAL_PARAMETERS=("$NIX_LISP_EXEC_CODE" "$1"
|
||||
"$NIX_LISP_EXEC_CODE" "$NIX_LISP_QUIT" $NIX_LISP_NODEBUG)
|
||||
}
|
||||
|
||||
nix_lisp_build_system(){
|
||||
NIX_LISP_FINAL_PARAMETERS=(
|
||||
"$NIX_LISP_EXEC_CODE" "(progn
|
||||
(asdf:load-system :$1)
|
||||
(loop for s in (list $(for i in $3; do echo ":$i"; done)) do (asdf:load-system s)))"
|
||||
"$NIX_LISP_EXEC_CODE" "(progn
|
||||
(setf (asdf/system:component-entry-point (asdf:find-system :$1)) ${2:-nil})
|
||||
#+cffi(setf cffi:*foreign-library-directories*
|
||||
(cffi::explode-path-environment-variable \"NIX_LISP_LD_LIBRARY_PATH\"))
|
||||
#+sbcl(loop
|
||||
with libpath := (uiop:split-string (uiop:getenv \"NIX_LISP_LD_LIBRARY_PATH\")
|
||||
:separator \":\")
|
||||
for l in sb-alien::*shared-objects*
|
||||
for ns := (sb-alien::shared-object-namestring l)
|
||||
do (format *error-output* \"Searching alien object ~s in ~s~%\"
|
||||
ns libpath)
|
||||
do (and (> (length ns) 0) (not (equal (elt ns 0) \"/\"))
|
||||
(let*
|
||||
((prefix (find-if (lambda (s) (probe-file (format nil \"~a/~a\" s ns))) libpath))
|
||||
(fullpath (and prefix (format nil \"~a/~a\" prefix ns))))
|
||||
(when fullpath
|
||||
(format *error-output* \"Found: ~s~%\" fullpath)
|
||||
(setf
|
||||
(sb-alien::shared-object-namestring l) fullpath
|
||||
(sb-alien::shared-object-pathname l) (probe-file fullpath)))))
|
||||
)
|
||||
$4
|
||||
(asdf:perform (quote asdf:program-op) :$1)
|
||||
)")
|
||||
}
|
||||
|
||||
eval "$NIX_LISP_PRELAUNCH_HOOK"
|
||||
|
||||
if [ -z "$NIX_LISP_SKIP_CODE" ]; then
|
||||
"$NIX_LISP_COMMAND" $NIX_LISP_EARLY_OPTIONS \
|
||||
$NIX_LISP_EXEC_CODE "${NIX_LISP_ASDF_LOAD:-"(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.$NIX_LISP_FASL_TYPE\")"}" \
|
||||
$NIX_LISP_EXEC_CODE "$NIX_LISP_ASDF_REGISTRY_CODE" \
|
||||
${NIX_LISP_FINAL_PARAMETERS[*]:+"${NIX_LISP_FINAL_PARAMETERS[@]}"} \
|
||||
"$@"
|
||||
fi
|
@ -1,3 +0,0 @@
|
||||
#!@bash@/bin/bash
|
||||
|
||||
source "@out@"/bin/cl-wrapper.sh "${NIX_LISP_COMMAND:-$(@ls@ "@lisp@/bin"/* | @head@ -n 1)}" "$@"
|
@ -1,57 +0,0 @@
|
||||
{lib, stdenv, asdf, which, bash, lisp ? null}:
|
||||
stdenv.mkDerivation {
|
||||
name = "cl-wrapper-script";
|
||||
|
||||
buildPhase="";
|
||||
|
||||
installPhase=''
|
||||
mkdir -p "$out"/bin
|
||||
export head="$(which head)"
|
||||
export ls="$(which ls)"
|
||||
substituteAll ${./common-lisp.sh} "$out"/bin/common-lisp.sh
|
||||
substituteAll "${./build-with-lisp.sh}" "$out/bin/build-with-lisp.sh"
|
||||
substituteAll "${./cl-wrapper.sh}" "$out/bin/cl-wrapper.sh"
|
||||
patchShebangs "$out/bin"
|
||||
chmod a+x "$out"/bin/*
|
||||
|
||||
substituteAll "${./setup-hook.sh}" "setup-hook-parsed"
|
||||
addEnvHooks(){ true; };
|
||||
source setup-hook-parsed
|
||||
setLisp "${lisp}"
|
||||
echo "$NIX_LISP"
|
||||
|
||||
mkdir -p "$out/lib/common-lisp/"
|
||||
cp -r "${asdf}/lib/common-lisp"/* "$out/lib/common-lisp/"
|
||||
chmod u+rw -R "$out/lib/common-lisp/"
|
||||
|
||||
NIX_LISP_PRELAUNCH_HOOK='
|
||||
NIX_LISP_FASL_TYPE=lisp
|
||||
nix_lisp_run_single_form "(progn
|
||||
(uiop/lisp-build:compile-file* \"'"$out"'/lib/common-lisp/asdf/build/asdf.lisp\")
|
||||
(asdf:load-system :uiop :force :all)
|
||||
(asdf:load-system :asdf :force :all)
|
||||
(ignore-errors (asdf:load-system :uiop/version :force :all))
|
||||
)"' \
|
||||
"$out/bin/common-lisp.sh"
|
||||
'';
|
||||
|
||||
buildInputs = [which];
|
||||
|
||||
inherit asdf lisp bash;
|
||||
stdenv_shell = stdenv.shell;
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
ASDF_OUTPUT_TRANSLATIONS="${builtins.storeDir}/:${builtins.storeDir}";
|
||||
|
||||
passthru = {
|
||||
inherit lisp;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Script used to wrap Common Lisp implementations";
|
||||
maintainers = [lib.maintainers.raskin];
|
||||
};
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
NIX_LISP_ASDF="@out@"
|
||||
|
||||
CL_SOURCE_REGISTRY="${CL_SOURCE_REGISTRY:+$CL_SOURCE_REGISTRY:}@out@/lib/common-lisp/asdf/"
|
||||
|
||||
addASDFPaths () {
|
||||
for j in "$1"/lib/common-lisp-settings/*-path-config.sh; do
|
||||
source "$j"
|
||||
done
|
||||
}
|
||||
|
||||
setLisp () {
|
||||
if [ -z "${NIX_LISP_COMMAND:-}" ]; then
|
||||
for j in "$1"/bin/*; do
|
||||
case "$(basename "$j")" in
|
||||
sbcl) NIX_LISP_COMMAND="$j" ;;
|
||||
ecl) NIX_LISP_COMMAND="$j" ;;
|
||||
clisp) NIX_LISP_COMMAND="$j" ;;
|
||||
lx86cl) NIX_LISP_COMMAND="$j" ;;
|
||||
lx86cl64) NIX_LISP_COMMAND="$j" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ -n "${NIX_LISP_COMMAND:-}" ] && [ -z "${NIX_LISP:-}" ]; then
|
||||
NIX_LISP="${NIX_LISP_COMMAND##*/}"
|
||||
fi
|
||||
}
|
||||
|
||||
collectNixLispLDLP () {
|
||||
if echo "$1/lib"/lib*.{so,dylib}* | grep . > /dev/null; then
|
||||
export NIX_LISP_LD_LIBRARY_PATH="${NIX_LISP_LD_LIBRARY_PATH-}${NIX_LISP_LD_LIBRARY_PATH:+:}$1/lib"
|
||||
fi
|
||||
}
|
||||
|
||||
export NIX_LISP_COMMAND NIX_LISP CL_SOURCE_REGISTRY NIX_LISP_ASDF
|
||||
|
||||
addEnvHooks "$targetOffset" addASDFPaths setLisp collectNixLispLDLP
|
||||
|
||||
mkdir -p "$HOME"/.cache/common-lisp || HOME="$TMP/.temp-${USER:-nixbld}-home"
|
||||
mkdir -p "$HOME"/.cache/common-lisp
|
@ -1,120 +0,0 @@
|
||||
args @ {lib, stdenv, clwrapper, baseName, packageName ? baseName
|
||||
, parasites ? []
|
||||
, buildSystems ? ([packageName] ++ parasites)
|
||||
, version ? "latest"
|
||||
, src, description, deps, buildInputs ? [], meta ? {}, overrides?(x: {})
|
||||
, propagatedBuildInputs ? []
|
||||
, asdFilesToKeep ? [(builtins.concatStringsSep "" [packageName ".asd"])]}:
|
||||
let
|
||||
deployConfigScript = ''
|
||||
outhash="$out"
|
||||
outhash="''${outhash##*/}"
|
||||
outhash="''${outhash%%-*}"
|
||||
config_script="$out"/lib/common-lisp-settings/${args.baseName}-shell-config.sh
|
||||
path_config_script="$out"/lib/common-lisp-settings/${args.baseName}-path-config.sh
|
||||
store_translation="$(dirname "$out"):$(dirname "$out")"
|
||||
mkdir -p "$(dirname "$config_script")"
|
||||
touch "$config_script"
|
||||
touch "$path_config_script"
|
||||
chmod a+x "$config_script"
|
||||
chmod a+x "$path_config_script"
|
||||
echo "if test -z \"\''${_''${outhash}_NIX_LISP_CONFIG:-}\"; then export _''${outhash}_NIX_LISP_CONFIG=1; " >> "$config_script"
|
||||
echo "export NIX_CFLAGS_COMPILE='$NIX_CFLAGS_COMPILE'\"\''${NIX_CFLAGS_COMPILE:+ \$NIX_CFLAGS_COMPILE}\"" >> "$config_script"
|
||||
echo "export NIX_LDFLAGS='$NIX_LDFLAGS'\"\''${NIX_LDFLAGS:+ \$NIX_LDFLAGS}\"" >> "$config_script"
|
||||
echo "export NIX_LISP_COMMAND='$NIX_LISP_COMMAND'" >> "$config_script"
|
||||
echo "export NIX_LISP_ASDF='$NIX_LISP_ASDF'" >> "$config_script"
|
||||
set | grep NIX_CC_WRAPPER_ | sed -e 's@^NIX_CC_WRAPPER@export &@' >> "$config_script"
|
||||
echo "export PATH=\"\''${PATH:+\$PATH:}$PATH\"" >> "$config_script"
|
||||
echo "echo \"\$ASDF_OUTPUT_TRANSLATIONS\" | grep -E '(^|:)$store_translation(:|\$)' >/dev/null || export ASDF_OUTPUT_TRANSLATIONS=\"\''${ASDF_OUTPUT_TRANSLATIONS:+\$ASDF_OUTPUT_TRANSLATIONS:}\"'$store_translation'" >> "$config_script"
|
||||
echo "source '$path_config_script'" >> "$config_script"
|
||||
echo "fi" >> "$config_script"
|
||||
echo "if test -z \"\''${_''${outhash}_NIX_LISP_PATH_CONFIG:-}\"; then export _''${outhash}_NIX_LISP_PATH_CONFIG=1; " >> "$path_config_script"
|
||||
echo "NIX_LISP_ASDF_PATHS=\"$( echo "\''${NIX_LISP_ASDF_PATHS:-}"; echo "$NIX_LISP_ASDF_PATHS"; echo "$out/lib/common-lisp/${args.baseName}" )\"" >> "$path_config_script"
|
||||
echo "export NIX_LISP_ASDF_PATHS=\$((tr ' ' '\n' | sort | uniq | tr '\n' ' ') <<< \$NIX_LISP_ASDF_PATHS)" >> $path_config_script
|
||||
|
||||
test -n "$LD_LIBRARY_PATH" &&
|
||||
echo "export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}\"'$LD_LIBRARY_PATH'" >> "$path_config_script"
|
||||
test -n "$NIX_LISP_LD_LIBRARY_PATH" &&
|
||||
echo "export NIX_LISP_LD_LIBRARY_PATH=\"\''${NIX_LISP_LD_LIBRARY_PATH:-}\''${NIX_LISP_LD_LIBRARY_PATH:+:}\"'$(echo "$NIX_LISP_LD_LIBRARY_PATH" | tr -d '\n' | tr : '\n' | sort | uniq | tr '\n' ':' | sed -e 's/:$//')'" >> "$path_config_script"
|
||||
echo "fi" >> "$path_config_script"
|
||||
'';
|
||||
deployLaunchScript = ''
|
||||
launch_script="$out"/bin/${args.baseName}-lisp-launcher.sh
|
||||
mkdir -p "$(dirname "$launch_script")"
|
||||
touch "$launch_script"
|
||||
chmod a+x "$launch_script"
|
||||
echo "#! ${stdenv.shell}" >> "$launch_script"
|
||||
echo "source '$config_script'" >> "$launch_script"
|
||||
echo "test -n \"\$NIX_LISP_LD_LIBRARY_PATH\" && export LD_LIBRARY_PATH=\"\$NIX_LISP_LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH\"" >> "$launch_script"
|
||||
echo '"${clwrapper}/bin/common-lisp.sh" "$@"' >> "$launch_script"
|
||||
'';
|
||||
moveAsdFiles = ''
|
||||
find $out/lib/common-lisp/ -name '*.asd' | while read ASD_FILE; do
|
||||
KEEP_THIS_ASD=0
|
||||
for ALLOWED_ASD in $asdFilesToKeep; do
|
||||
ALLOWED_ASD="/$ALLOWED_ASD"
|
||||
ALLOWED_ASD_LENGTH=${"$"}{#ALLOWED_ASD}
|
||||
ASD_FILE_LENGTH=${"$"}{#ASD_FILE}
|
||||
ASD_FILE_SUFFIX_INDEX=$(expr "$ASD_FILE_LENGTH" - "$ALLOWED_ASD_LENGTH")
|
||||
ASD_FILE_SUFFIX_INDEX=$(expr "$ASD_FILE_SUFFIX_INDEX" + 1)
|
||||
echo $ALLOWED_ASD $ASD_FILE $ASD_FILE_SUFFIX_INDEX $(expr substr "$ASD_FILE" "$ASD_FILE_SUFFIX_INDEX" "$ASD_FILE_LENGTH")
|
||||
if [ "$(expr substr "$ASD_FILE" "$ASD_FILE_SUFFIX_INDEX" "$ASD_FILE_LENGTH")" == "$ALLOWED_ASD" ]; then
|
||||
KEEP_THIS_ASD=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ "$KEEP_THIS_ASD" == 0 ]; then
|
||||
mv "$ASD_FILE"{,.sibling}
|
||||
fi
|
||||
done
|
||||
'';
|
||||
basePackage = {
|
||||
name = "lisp-${baseName}-${version}";
|
||||
inherit src;
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
inherit deployConfigScript deployLaunchScript;
|
||||
inherit asdFilesToKeep moveAsdFiles;
|
||||
installPhase = ''
|
||||
eval "$preInstall"
|
||||
|
||||
mkdir -p "$out"/share/doc/${args.baseName};
|
||||
mkdir -p "$out"/lib/common-lisp/${args.baseName};
|
||||
cp -r . "$out"/lib/common-lisp/${args.baseName};
|
||||
cp -rf doc/* LICENCE LICENSE COPYING README README.html README.md readme.html "$out"/share/doc/${args.baseName} || true
|
||||
|
||||
${deployConfigScript}
|
||||
${deployLaunchScript}
|
||||
${moveAsdFiles}
|
||||
|
||||
env -i \
|
||||
NIX_LISP="$NIX_LISP" \
|
||||
NIX_LISP_PRELAUNCH_HOOK='nix_lisp_run_single_form "(progn
|
||||
${lib.concatMapStrings (system: ''
|
||||
(asdf:compile-system :${system})
|
||||
(asdf:load-system :${system})
|
||||
(asdf:operate (quote asdf::compile-bundle-op) :${system})
|
||||
(ignore-errors (asdf:operate (quote asdf::deploy-asd-op) :${system}))
|
||||
'') buildSystems}
|
||||
)"' \
|
||||
"$out/bin/${args.baseName}-lisp-launcher.sh"
|
||||
|
||||
eval "$postInstall"
|
||||
'';
|
||||
propagatedBuildInputs = (args.deps or []) ++ [clwrapper clwrapper.lisp clwrapper.asdf]
|
||||
++ (args.propagatedBuildInputs or []);
|
||||
buildInputs = buildInputs;
|
||||
dontStrip=true;
|
||||
|
||||
ASDF_OUTPUT_TRANSLATIONS="${builtins.storeDir}/:${builtins.storeDir}";
|
||||
|
||||
noAuditTmpDir = true;
|
||||
|
||||
meta = {
|
||||
inherit description version;
|
||||
} // meta;
|
||||
};
|
||||
package = basePackage // (overrides basePackage);
|
||||
in
|
||||
stdenv.mkDerivation package
|
@ -1,16 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
[ -z "$NIX_QUICKLISP_DIR" ] && {
|
||||
export NIX_QUICKLISP_DIR="$(mktemp -d --tmpdir nix-quicklisp.XXXXXX)"
|
||||
}
|
||||
|
||||
[ -f "$NIX_QUICKLISP_DIR/setup.lisp" ] || {
|
||||
"$(dirname "$0")/quicklisp-beta-env.sh" "$NIX_QUICKLISP_DIR" &> /dev/null < /dev/null
|
||||
}
|
||||
|
||||
name="$1"
|
||||
|
||||
sbcl --noinform --load "$NIX_QUICKLISP_DIR"/setup.lisp --eval "(ql:quickload :$name)" \
|
||||
--eval "(format t \"~a~%\" (or (asdf::system-description (asdf::find-system \"$name\")) \"\"))" \
|
||||
--eval '(quit)' --script |
|
||||
tee /dev/stderr | tail -n 1
|
@ -1,174 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
name="$1"
|
||||
|
||||
[ -z "$NIX_LISP_PACKAGES_DEFINED_LIST" ] && export NIX_LISP_PACKAGES_DEFINED_LIST="$(mktemp)"
|
||||
|
||||
if [ -n "$NIX_LISP_UPDATE_PACKAGE" ] || [ -n "$NIX_LISP_UPDATE_PACKAGES" ]; then
|
||||
export NIX_LISP_UPDATE_PACKAGE=
|
||||
else
|
||||
nix-instantiate "$(dirname "$0")"/../../../../ -A "lispPackages.$name" > /dev/null && exit
|
||||
fi
|
||||
grep "^$name\$" "$NIX_LISP_PACKAGES_DEFINED_LIST" > /dev/null && exit
|
||||
|
||||
echo "$name" >> "$NIX_LISP_PACKAGES_DEFINED_LIST"
|
||||
|
||||
[ -z "$NIX_QUICKLISP_DIR" ] && {
|
||||
export NIX_QUICKLISP_DIR="$(mktemp -d --tmpdir nix-quicklisp.XXXXXX)"
|
||||
}
|
||||
|
||||
[ -f "$NIX_QUICKLISP_DIR/setup.lisp" ] || {
|
||||
"$(dirname "$0")/quicklisp-beta-env.sh" "$NIX_QUICKLISP_DIR" &> /dev/null < /dev/null
|
||||
}
|
||||
|
||||
description="$("$(dirname "$0")/asdf-description.sh" "$name")"
|
||||
[ -z "$description" ] && {
|
||||
description="$(curl -L https://github.com/quicklisp/quicklisp-projects/raw/master/"$name"/description.txt)"
|
||||
[ "$(echo "$description" | wc -l)" -gt 10 ] && description=""
|
||||
}
|
||||
|
||||
dependencies="$("$(dirname "$0")/quicklisp-dependencies.sh" "$name" | xargs)"
|
||||
ql_src="$(curl -L https://github.com/quicklisp/quicklisp-projects/raw/master/"$name"/source.txt)"
|
||||
ql_src_type="${ql_src%% *}"
|
||||
url="${ql_src##* }"
|
||||
|
||||
[ "$ql_src_type" = "kmr-git" ] && {
|
||||
ql_src_type=git
|
||||
url="http://git.kpe.io/$url.git"
|
||||
export NIX_PREFETCH_GIT_DEEP_CLONE=1
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = ediware-http ] && {
|
||||
ql_src_type=github
|
||||
url="edicl/$url";
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = xach-http ] && {
|
||||
ql_src_type=github
|
||||
url="xach/$url";
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = github ] && {
|
||||
ql_src_type=git
|
||||
url="https://github.com/$url";
|
||||
version="$("$(dirname "$0")/urls-from-page.sh" "$url/releases/" | grep /tag/ | head -n 1 | xargs -l1 basename)"
|
||||
rev="refs/tags/$version";
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = git ] && {
|
||||
fetcher="pkgs.fetchgit"
|
||||
( [ "${url#git://github.com/}" != "$url" ] ||
|
||||
[ "${url#https://github.com/}" != "$url" ]
|
||||
) && {
|
||||
url="${url/git:/https:}"
|
||||
url="${url%.git}"
|
||||
[ -z "$rev" ] && rev=$("$(dirname "$0")/urls-from-page.sh" "$url/commits" | grep /commit/ | head -n 1 | xargs basename)
|
||||
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev" | grep . | tail -n 1)
|
||||
[ -z "$version" ] && version="git-$(date +%Y%m%d)";
|
||||
}
|
||||
[ "${url#git://common-lisp.net/}" != "$url" ] && {
|
||||
http_repo_url="$url"
|
||||
http_repo_url="${http_repo_url/git:/http:}"
|
||||
http_repo_url="${http_repo_url/\/projects\// /r/projects/}"
|
||||
http_repo_head="$http_repo_url/refs/heads/master"
|
||||
echo "$http_repo_head" >&2
|
||||
[ -z "$rev" ] && rev=$(curl -L "$http_repo_head");
|
||||
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev")
|
||||
[ -z "$version" ] && version="git-$(date +%Y%m%d)";
|
||||
}
|
||||
[ "${url#http://git.b9.com/}" != "$url" ] && {
|
||||
http_repo_url="$url"
|
||||
http_repo_url="${http_repo_url/git:/http:}"
|
||||
http_repo_head="$http_repo_url/refs/heads/master"
|
||||
echo "$http_repo_head" >&2
|
||||
rev=$(curl -L "$http_repo_head");
|
||||
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev" | tail -n 1)
|
||||
version="git-$(date +%Y%m%d)";
|
||||
}
|
||||
[ "${url#http://common-lisp.net/}" != "$url" ] && {
|
||||
http_repo_url="$url"
|
||||
http_repo_url="${http_repo_url/git:/http:}"
|
||||
http_repo_head="$http_repo_url/refs/heads/master"
|
||||
echo "$http_repo_head" >&2
|
||||
rev=$(curl -L "$http_repo_head");
|
||||
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev" | tail -n 1)
|
||||
version="git-$(date +%Y%m%d)";
|
||||
}
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = cvs ] && {
|
||||
fetcher="pkgs.fetchcvs"
|
||||
date="$(date -d yesterday +%Y-%m-%d)"
|
||||
version="cvs-$date"
|
||||
module="${module:-$name}"
|
||||
hash=$(USE_DATE=1 "$(dirname "$0")/../../../build-support/fetchcvs/nix-prefetch-cvs" "$url" "$module" "$date")
|
||||
cvsRoot="$url"
|
||||
unset url
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = clnet-darcs ] && {
|
||||
ql_src_type=darcs
|
||||
url="http://common-lisp.net/project/$url/darcs/$url/"
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = darcs ] && {
|
||||
fetcher="pkgs.fetchdarcs"
|
||||
[ -z "$version" ] &&
|
||||
version="$(curl "$url/_darcs/inventory" | grep '\[TAG ' | tail -n 1 | sed -e 's/.* //')"
|
||||
[ -z "$version" ] &&
|
||||
version="$(curl "$url/_darcs/hashed_inventory" | grep '\[TAG ' | tail -n 1 | sed -e 's/.* //')"
|
||||
rev="$version";
|
||||
hash=$(echo "
|
||||
with (import <nixpkgs> {});
|
||||
fetchdarcs {
|
||||
url=''$url'';
|
||||
rev=''$version'';
|
||||
sha256=''0000000000000000000000000000000000000000000000000000000000000000'';
|
||||
}" | nix-instantiate - | tail -n 1 |
|
||||
xargs nix-store -r 2>&1 | tee /dev/stderr | grep 'instead has' | tail -n 1 |
|
||||
sed -e 's/.* instead has .//;s/[^0-9a-z].*//')
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = froydware-http ] && {
|
||||
dirurl="http://method-combination.net/lisp/files/";
|
||||
url="$("$(dirname "$0")/urls-from-page.sh" "$dirurl" |
|
||||
grep "/${url}_" | grep -v "[.]asc\$" | tail -n 1)"
|
||||
ql_src_type=http
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = http ] && {
|
||||
fetcher="pkgs.fetchurl";
|
||||
version="$(echo "$url" | sed -re 's@.*[-_]([0-9.]+)[-._].*@\1@')"
|
||||
hash="$(nix-prefetch-url "$url" | grep . | tail -n 1)"
|
||||
}
|
||||
|
||||
[ "$ql_src_type" = https ] && {
|
||||
fetcher="pkgs.fetchurl";
|
||||
version="$(echo "$url" | sed -re 's@.*[-_]([0-9.]+)[-._].*@\1@')"
|
||||
hash="$(nix-prefetch-url "$url" | grep . | tail -n 1)"
|
||||
}
|
||||
|
||||
if [ "$ql_src" = '{"error":"Not Found"}' ]; then
|
||||
echo "# $name: not found"
|
||||
else
|
||||
cat << EOF | grep -Ev '^[ ]+$'
|
||||
|
||||
$name = buildLispPackage rec {
|
||||
baseName = "$name";
|
||||
version = "${version:-\${Set me //}";
|
||||
description = "$description";
|
||||
deps = [$dependencies];
|
||||
# Source type: $ql_src_type
|
||||
src = ${fetcher:-pkgs.fetchurl} {
|
||||
${url:+url = ''$url'';}
|
||||
sha256 = "${hash:-0000000000000000000000000000000000000000000000000000000000000000}";
|
||||
${rev:+rev = ''$rev'';}
|
||||
${date:+date = ''$date'';}
|
||||
${module:+module = ''$module'';}
|
||||
${cvsRoot:+cvsRoot = ''$cvsRoot'';}
|
||||
};
|
||||
};
|
||||
EOF
|
||||
fi
|
||||
|
||||
for i in $dependencies; do "$0" "$i"; done
|
@ -1,16 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
WORK_DIR=$(mktemp -d "/tmp/ql-venv-XXXXXX")
|
||||
mkdir -p "${1:-.}"
|
||||
TARGET="$(cd "${1:-.}"; pwd)"
|
||||
|
||||
curl http://beta.quicklisp.org/quicklisp.lisp > "$WORK_DIR/ql.lisp"
|
||||
|
||||
sbcl --noinform \
|
||||
--load "$WORK_DIR/ql.lisp" \
|
||||
--eval "(quicklisp-quickstart:install :path \"$TARGET/\")" \
|
||||
--eval "(cl-user::quit)" \
|
||||
--script
|
||||
|
||||
|
||||
rm -rf "$WORK_DIR"
|
@ -1,11 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
[ -z "$NIX_QUICKLISP_DIR" ] && {
|
||||
export NIX_QUICKLISP_DIR="$(mktemp -d --tmpdir nix-quicklisp.XXXXXX)"
|
||||
}
|
||||
|
||||
[ -f "$NIX_QUICKLISP_DIR/setup.lisp" ] || {
|
||||
"$(dirname "$0")/quicklisp-beta-env.sh" "$NIX_QUICKLISP_DIR" &> /dev/null < /dev/null
|
||||
}
|
||||
|
||||
sbcl --noinform --eval "(with-output-to-string (*standard-output*) (load \"$NIX_QUICKLISP_DIR/setup.lisp\"))" --eval "(with-output-to-string (*standard-output*) (with-output-to-string (*error-output*) (with-output-to-string (*trace-output*) (ql:quickload :$1))))" --eval "(format t \"~{~a~%~}\" (mapcar 'ql::name (mapcar 'car (cdr (ql::dependency-tree \"$1\")))))" --eval '(quit)' --script
|
@ -1,14 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
url="$1"
|
||||
protocol="${url%%:*}"
|
||||
path="${url#$protocol://}"
|
||||
server="${path%%/*}"
|
||||
basepath="${path%/*}"
|
||||
relpath="${path#$server}"
|
||||
|
||||
echo "URL: $url" >&2
|
||||
|
||||
curl -A 'text/html; text/xhtml; text/xml; */*' -L -k "$url" | sed -re 's/^/-/;s/[^a-zA-Z][hH][rR][eE][fF]=("([^"]*)"|'\''([^'\'']*)'\''|([^"'\'' <>&]+)[ <>&])/\n+\2\3\4\n-/g' | \
|
||||
sed -e '/^-/d; s/^[+]//; /^#/d;'"s/^\\//$protocol:\\/\\/$server\\//g" | \
|
||||
sed -re 's`^[^:]*$`'"$protocol://$basepath/&\`"
|
@ -1,272 +0,0 @@
|
||||
{lib, stdenv, clwrapper, pkgs, sbcl, coreutils, nix, asdf}:
|
||||
let lispPackages = rec {
|
||||
inherit lib pkgs clwrapper stdenv;
|
||||
nixLib = pkgs.lib;
|
||||
callPackage = nixLib.callPackageWith lispPackages;
|
||||
|
||||
buildLispPackage = callPackage ./define-package.nix;
|
||||
|
||||
quicklisp = buildLispPackage rec {
|
||||
baseName = "quicklisp";
|
||||
version = "2021-02-13";
|
||||
|
||||
buildSystems = [];
|
||||
|
||||
description = "The Common Lisp package manager";
|
||||
deps = [];
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "quicklisp";
|
||||
repo = "quicklisp-client";
|
||||
rev = "version-${version}";
|
||||
sha256 = "sha256-1HLVPhl8aBaeG8dRLxBh0j0X/0wqFeNYK1CEfiELToA=";
|
||||
};
|
||||
overrides = x: rec {
|
||||
inherit clwrapper;
|
||||
quicklispdist = pkgs.fetchurl {
|
||||
# Will usually be replaced with a fresh version anyway, but needs to be
|
||||
# a valid distinfo.txt
|
||||
url = "http://beta.quicklisp.org/dist/quicklisp/2021-12-09/distinfo.txt";
|
||||
sha256 = "sha256:0gc4cv73nl7xkfwvmkmfhfx6yqf876nfm2v24v6fky9n24sh4y6w";
|
||||
};
|
||||
buildPhase = "true; ";
|
||||
postInstall = ''
|
||||
substituteAll ${./quicklisp.sh} "$out"/bin/quicklisp
|
||||
chmod a+x "$out"/bin/quicklisp
|
||||
cp "${quicklispdist}" "$out/lib/common-lisp/quicklisp/quicklisp-distinfo.txt"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
quicklisp-to-nix-system-info = stdenv.mkDerivation {
|
||||
pname = "quicklisp-to-nix-system-info";
|
||||
version = "1.0.0";
|
||||
src = ./quicklisp-to-nix;
|
||||
nativeBuildInputs = [sbcl];
|
||||
buildInputs = [
|
||||
lispPackages.quicklisp coreutils
|
||||
];
|
||||
touch = coreutils;
|
||||
nix-prefetch-url = nix;
|
||||
inherit quicklisp;
|
||||
buildPhase = ''
|
||||
${sbcl}/bin/sbcl --eval '(load #P"${asdf}/lib/common-lisp/asdf/build/asdf.lisp")' --load $src/system-info.lisp --eval '(ql-to-nix-system-info::dump-image)'
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp quicklisp-to-nix-system-info $out/bin
|
||||
'';
|
||||
dontStrip = true;
|
||||
};
|
||||
|
||||
quicklisp-to-nix = stdenv.mkDerivation {
|
||||
pname = "quicklisp-to-nix";
|
||||
version = "1.0.0";
|
||||
src = ./quicklisp-to-nix;
|
||||
buildDependencies = [sbcl quicklisp-to-nix-system-info];
|
||||
buildInputs = with pkgs.lispPackages; [md5 cl-emb alexandria external-program];
|
||||
touch = coreutils;
|
||||
nix-prefetch-url = nix;
|
||||
inherit quicklisp;
|
||||
deps = [];
|
||||
system-info = quicklisp-to-nix-system-info;
|
||||
buildPhase = ''
|
||||
${clwrapper}/bin/cl-wrapper.sh "${sbcl}/bin/sbcl" --eval '(load #P"${asdf}/lib/common-lisp/asdf/build/asdf.lisp")' --load $src/ql-to-nix.lisp --eval '(ql-to-nix::dump-image)'
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp quicklisp-to-nix $out/bin
|
||||
'';
|
||||
dontStrip = true;
|
||||
};
|
||||
|
||||
clx-truetype = buildLispPackage rec {
|
||||
baseName = "clx-truetype";
|
||||
version = "20160825-git";
|
||||
|
||||
buildSystems = [ "clx-truetype" ];
|
||||
parasites = [ "clx-truetype-test" ];
|
||||
|
||||
description = "clx-truetype is pure common lisp solution for antialiased TrueType font rendering using CLX and XRender extension.";
|
||||
deps = with pkgs.lispPackages; [
|
||||
alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf cl-store
|
||||
cl-vectors clx trivial-features zpb-ttf
|
||||
];
|
||||
src = pkgs.fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/clx-truetype/2016-08-25/clx-truetype-20160825-git.tgz";
|
||||
sha256 = "0ndy067rg9w6636gxwlpnw7f3ck9nrnjb03444pprik9r3c9in67";
|
||||
};
|
||||
|
||||
packageName = "clx-truetype";
|
||||
|
||||
asdFilesToKeep = ["clx-truetype.asd"];
|
||||
};
|
||||
cluffer = buildLispPackage rec {
|
||||
baseName = "cluffer";
|
||||
version = "2018-09-24";
|
||||
|
||||
buildSystems = [ "cluffer-base" "cluffer-simple-buffer" "cluffer-simple-line" "cluffer-standard-buffer" "cluffer-standard-line" "cluffer" ];
|
||||
parasites = [ "cluffer-test" ];
|
||||
|
||||
description = "General purpose text-editor buffer";
|
||||
deps = with pkgs.lispPackages; [
|
||||
acclimation clump
|
||||
];
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "robert-strandh";
|
||||
repo = "cluffer";
|
||||
rev = "4aad29c276a58a593064e79972ee4d77cae0af4a";
|
||||
sha256 = "1bcg13g7qb3dr8z50aihdjqa6miz5ivlc9wsj2csgv1km1mak2kj";
|
||||
# date = 2018-09-24T04:45:36+02:00;
|
||||
};
|
||||
|
||||
packageName = "cluffer";
|
||||
|
||||
asdFilesToKeep = [ "cluffer.asd" "cluffer-base.asd" "cluffer-simple-buffer.asd" "cluffer-simple-line.asd" "cluffer-standard-buffer.asd" "cluffer-standard-line.asd" ];
|
||||
};
|
||||
nyxt = pkgs.lispPackages.buildLispPackage rec {
|
||||
baseName = "nyxt";
|
||||
version = "2.2.4";
|
||||
|
||||
description = "Browser";
|
||||
|
||||
overrides = x: {
|
||||
postInstall = ''
|
||||
echo "Building nyxt binary"
|
||||
(
|
||||
source "$out/lib/common-lisp-settings"/*-shell-config.sh
|
||||
cd "$out/lib/common-lisp"/*/
|
||||
makeFlags="''${makeFlags:-}"
|
||||
make LISP=common-lisp.sh NYXT_INTERNAL_QUICKLISP=false PREFIX="$out" $makeFlags all
|
||||
make LISP=common-lisp.sh NYXT_INTERNAL_QUICKLISP=false PREFIX="$out" $makeFlags install
|
||||
cp nyxt "$out/bin/nyxt"
|
||||
)
|
||||
NIX_LISP_PRELAUNCH_HOOK='
|
||||
nix_lisp_build_system nyxt/gtk-application \
|
||||
"(asdf/system:component-entry-point (asdf:find-system :nyxt/gtk-application))" \
|
||||
"" "(format *error-output* \"Alien objects:~%~s~%\" sb-alien::*shared-objects*)"
|
||||
' "$out/bin/nyxt-lisp-launcher.sh"
|
||||
cp "$out/lib/common-lisp/nyxt/nyxt" "$out/bin/"
|
||||
'';
|
||||
|
||||
# Prevent nyxt from trying to obtain dependencies as submodules
|
||||
makeFlags = [ "NYXT_SUBMODULES=false" ] ++ x.buildFlags or [];
|
||||
|
||||
patches = x.patches or [] ++ [
|
||||
# Work around crash when opening _any_ URL
|
||||
# https://github.com/atlas-engineer/nyxt/issues/1781
|
||||
# https://github.com/NixOS/nixpkgs/issues/158005
|
||||
(pkgs.fetchpatch {
|
||||
name = "nyxt-webkit-disable-sandbox.patch";
|
||||
url = "https://github.com/atlas-engineer/nyxt/commit/48ac0d8727f1ca1428188a1ab2c05b7be5f6cc51.patch";
|
||||
sha256 = "0570mcfn5wmjha6jmfdgglp0w5b7rpfnv3flzn77clgbknwbxi0m";
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
deps = with pkgs.lispPackages; [
|
||||
alexandria
|
||||
bordeaux-threads
|
||||
calispel
|
||||
cl-css
|
||||
cl-json
|
||||
cl-markup
|
||||
cl-ppcre
|
||||
cl-ppcre-unicode
|
||||
cl-prevalence
|
||||
closer-mop
|
||||
cl-containers
|
||||
cl-qrencode
|
||||
clss
|
||||
cluffer
|
||||
moptilities
|
||||
dexador
|
||||
enchant
|
||||
file-attributes
|
||||
iolib
|
||||
local-time
|
||||
log4cl
|
||||
lparallel
|
||||
mk-string-metrics
|
||||
osicat
|
||||
parenscript
|
||||
quri
|
||||
serapeum
|
||||
spinneret
|
||||
str
|
||||
plump
|
||||
swank
|
||||
trivia
|
||||
trivial-clipboard
|
||||
trivial-features
|
||||
trivial-garbage
|
||||
trivial-package-local-nicknames
|
||||
trivial-types
|
||||
unix-opts
|
||||
cl-html-diff
|
||||
hu_dot_dwim_dot_defclass-star
|
||||
cl-custom-hash-table
|
||||
fset
|
||||
cl-cffi-gtk
|
||||
cl-webkit2
|
||||
cl-gobject-introspection
|
||||
];
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "atlas-engineer";
|
||||
repo = "nyxt";
|
||||
rev = version;
|
||||
sha256 = "12l7ir3q29v06jx0zng5cvlbmap7p709ka3ik6x29lw334qshm9b";
|
||||
};
|
||||
|
||||
packageName = "nyxt";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pkgs.libressl.out
|
||||
pkgs.webkitgtk
|
||||
pkgs.sbcl
|
||||
];
|
||||
};
|
||||
|
||||
mgl = buildLispPackage rec {
|
||||
baseName = "mgl";
|
||||
version = "2021-10-07";
|
||||
description = "MGL is a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more";
|
||||
deps = with pkgs.lispPackages; [
|
||||
alexandria closer-mop array-operations lla cl-reexport mgl-mat mgl-pax
|
||||
named-readtables pythonic-string-reader
|
||||
];
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "melisgl";
|
||||
repo = "mgl";
|
||||
rev = "e697791a9bcad3b6e7b3845246a2aa55238cfef7";
|
||||
sha256 = "sha256:09sf7nq7nmf9q7bh3a5ygl2i2n0nhrx5fk2kv5ili0ckv7g9x72s";
|
||||
# date = 2021-10-18T14:15+02:00
|
||||
};
|
||||
buildSystems = [ "mgl" "mgl/test" ];
|
||||
packageName = "mgl";
|
||||
parasites = [ "mgl/test" ];
|
||||
asdFilesToKeep = [ "mgl.asd" "mgl-example.asd" "gnuplot/mgl-gnuplot.asd" "visuals/mgl-visuals.asd" ];
|
||||
};
|
||||
|
||||
mgl-mat = buildLispPackage rec {
|
||||
baseName = "mgl-mat";
|
||||
version = "2021-10-11";
|
||||
description = "Multi-dimensional arrays with FFI/CUDA support";
|
||||
deps = with pkgs.lispPackages; [
|
||||
alexandria bordeaux-threads cffi cffi-grovel cl-cuda flexi-streams ieee-floats
|
||||
lla mgl-pax static-vectors trivial-garbage cl-fad
|
||||
];
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "melisgl";
|
||||
repo = "mgl-mat";
|
||||
rev = "3710858bc876b1b86e50f1db2abe719e92d810e7";
|
||||
sha256 = "sha256:1aa2382mi55rp8pd31dz4d94yhfzh30vkggcvmvdfrr4ngffj0dx";
|
||||
# date = 2021-10-18T14:15+02:00
|
||||
};
|
||||
packageName = "mgl-mat";
|
||||
buildSystems = [ "mgl-mat" "mgl-mat/test" ];
|
||||
parasites = [ "mgl-mat/test" ];
|
||||
asdFilesToKeep = [ "mgl-mat.asd" ];
|
||||
};
|
||||
|
||||
};
|
||||
in lispPackages
|
@ -1,18 +0,0 @@
|
||||
with import ../../../default.nix {};
|
||||
runCommand "openssl-lib-marked" {} ''
|
||||
mkdir -p "$out/lib"
|
||||
for lib in ssl crypto; do
|
||||
version="${lib.getVersion openssl}"
|
||||
ln -s "${lib.getLib openssl}/lib/lib$lib.so" "$out/lib/lib$lib.so.$version"
|
||||
version="$(echo "$version" | sed -re 's/[a-z]+$//')"
|
||||
while test -n "$version"; do
|
||||
ln -sfT "${lib.getLib openssl}/lib/lib$lib.so" "$out/lib/lib$lib.so.$version"
|
||||
nextversion="''${version%.*}"
|
||||
if test "$version" = "$nextversion"; then
|
||||
version=
|
||||
else
|
||||
version="$nextversion"
|
||||
fi
|
||||
done
|
||||
done
|
||||
''
|
@ -1,25 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "_1am";
|
||||
version = "20141106-git";
|
||||
|
||||
description = "A minimal testing framework.";
|
||||
|
||||
deps = [ ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/1am/2014-11-06/1am-20141106-git.tgz";
|
||||
sha256 = "0vnnqd4fiq9z34i1k9gqczg3j6xllwba1f6nx0b82sgsdccmsly6";
|
||||
};
|
||||
|
||||
packageName = "1am";
|
||||
|
||||
asdFilesToKeep = ["1am.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM 1am DESCRIPTION A minimal testing framework. SHA256
|
||||
0vnnqd4fiq9z34i1k9gqczg3j6xllwba1f6nx0b82sgsdccmsly6 URL
|
||||
http://beta.quicklisp.org/archive/1am/2014-11-06/1am-20141106-git.tgz MD5
|
||||
c5e83c329157518e3ebfeef63e4ac269 NAME 1am FILENAME _1am DEPS NIL
|
||||
DEPENDENCIES NIL VERSION 20141106-git SIBLINGS NIL PARASITES NIL) */
|
@ -1,39 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "_3bmd-ext-code-blocks";
|
||||
version = "3bmd-20210411-git";
|
||||
|
||||
description = "extension to 3bmd implementing github style ``` delimited code blocks, with support for syntax highlighting using colorize, pygments, or chroma";
|
||||
|
||||
deps = [ args."_3bmd" args."alexandria" args."colorize" args."esrap" args."html-encode" args."split-sequence" args."trivial-with-current-source-form" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz";
|
||||
sha256 = "1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp";
|
||||
};
|
||||
|
||||
packageName = "3bmd-ext-code-blocks";
|
||||
|
||||
asdFilesToKeep = ["3bmd-ext-code-blocks.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM 3bmd-ext-code-blocks DESCRIPTION
|
||||
extension to 3bmd implementing github style ``` delimited code blocks, with support for syntax highlighting using colorize, pygments, or chroma
|
||||
SHA256 1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp URL
|
||||
http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz MD5
|
||||
09f9290aa1708aeb469fb5154ab1a397 NAME 3bmd-ext-code-blocks FILENAME
|
||||
_3bmd-ext-code-blocks DEPS
|
||||
((NAME 3bmd FILENAME _3bmd) (NAME alexandria FILENAME alexandria)
|
||||
(NAME colorize FILENAME colorize) (NAME esrap FILENAME esrap)
|
||||
(NAME html-encode FILENAME html-encode)
|
||||
(NAME split-sequence FILENAME split-sequence)
|
||||
(NAME trivial-with-current-source-form FILENAME
|
||||
trivial-with-current-source-form))
|
||||
DEPENDENCIES
|
||||
(3bmd alexandria colorize esrap html-encode split-sequence
|
||||
trivial-with-current-source-form)
|
||||
VERSION 3bmd-20210411-git SIBLINGS
|
||||
(3bmd-ext-definition-lists 3bmd-ext-math 3bmd-ext-tables
|
||||
3bmd-ext-wiki-links 3bmd-youtube-tests 3bmd-youtube 3bmd)
|
||||
PARASITES NIL) */
|
@ -1,34 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "_3bmd";
|
||||
version = "20210411-git";
|
||||
|
||||
description = "markdown processor in CL using esrap parser.";
|
||||
|
||||
deps = [ args."alexandria" args."esrap" args."split-sequence" args."trivial-with-current-source-form" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz";
|
||||
sha256 = "1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp";
|
||||
};
|
||||
|
||||
packageName = "3bmd";
|
||||
|
||||
asdFilesToKeep = ["3bmd.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM 3bmd DESCRIPTION markdown processor in CL using esrap parser. SHA256
|
||||
1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp URL
|
||||
http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz MD5
|
||||
09f9290aa1708aeb469fb5154ab1a397 NAME 3bmd FILENAME _3bmd DEPS
|
||||
((NAME alexandria FILENAME alexandria) (NAME esrap FILENAME esrap)
|
||||
(NAME split-sequence FILENAME split-sequence)
|
||||
(NAME trivial-with-current-source-form FILENAME
|
||||
trivial-with-current-source-form))
|
||||
DEPENDENCIES
|
||||
(alexandria esrap split-sequence trivial-with-current-source-form) VERSION
|
||||
20210411-git SIBLINGS
|
||||
(3bmd-ext-code-blocks 3bmd-ext-definition-lists 3bmd-ext-math
|
||||
3bmd-ext-tables 3bmd-ext-wiki-links 3bmd-youtube-tests 3bmd-youtube)
|
||||
PARASITES NIL) */
|
@ -1,40 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "access";
|
||||
version = "20210124-git";
|
||||
|
||||
parasites = [ "access-test" ];
|
||||
|
||||
description = "A library providing functions that unify data-structure access for Common Lisp:
|
||||
access and (setf access)";
|
||||
|
||||
deps = [ args."alexandria" args."anaphora" args."cl-interpol" args."cl-ppcre" args."cl-unicode" args."closer-mop" args."flexi-streams" args."iterate" args."lisp-unit2" args."named-readtables" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/access/2021-01-24/access-20210124-git.tgz";
|
||||
sha256 = "1n4j15v1ikspchcbb0bn15kk3lh78f6bxk56cs4arimm8bisyqlq";
|
||||
};
|
||||
|
||||
packageName = "access";
|
||||
|
||||
asdFilesToKeep = ["access.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM access DESCRIPTION
|
||||
A library providing functions that unify data-structure access for Common Lisp:
|
||||
access and (setf access)
|
||||
SHA256 1n4j15v1ikspchcbb0bn15kk3lh78f6bxk56cs4arimm8bisyqlq URL
|
||||
http://beta.quicklisp.org/archive/access/2021-01-24/access-20210124-git.tgz
|
||||
MD5 d2d7d9826cbfb3de568d05a4d6bacdbe NAME access FILENAME access DEPS
|
||||
((NAME alexandria FILENAME alexandria) (NAME anaphora FILENAME anaphora)
|
||||
(NAME cl-interpol FILENAME cl-interpol) (NAME cl-ppcre FILENAME cl-ppcre)
|
||||
(NAME cl-unicode FILENAME cl-unicode)
|
||||
(NAME closer-mop FILENAME closer-mop)
|
||||
(NAME flexi-streams FILENAME flexi-streams)
|
||||
(NAME iterate FILENAME iterate) (NAME lisp-unit2 FILENAME lisp-unit2)
|
||||
(NAME named-readtables FILENAME named-readtables))
|
||||
DEPENDENCIES
|
||||
(alexandria anaphora cl-interpol cl-ppcre cl-unicode closer-mop
|
||||
flexi-streams iterate lisp-unit2 named-readtables)
|
||||
VERSION 20210124-git SIBLINGS NIL PARASITES (access-test)) */
|
@ -1,26 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "acclimation";
|
||||
version = "20200925-git";
|
||||
|
||||
description = "Library supporting internationalization";
|
||||
|
||||
deps = [ ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/acclimation/2020-09-25/acclimation-20200925-git.tgz";
|
||||
sha256 = "11vw1h5zxicj5qxb1smiyjxafw8xk0isnzcf5g0lqis3y9ssqxbw";
|
||||
};
|
||||
|
||||
packageName = "acclimation";
|
||||
|
||||
asdFilesToKeep = ["acclimation.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM acclimation DESCRIPTION Library supporting internationalization
|
||||
SHA256 11vw1h5zxicj5qxb1smiyjxafw8xk0isnzcf5g0lqis3y9ssqxbw URL
|
||||
http://beta.quicklisp.org/archive/acclimation/2020-09-25/acclimation-20200925-git.tgz
|
||||
MD5 8ce10864baef6fb0e11c78e2ee0b0ddb NAME acclimation FILENAME acclimation
|
||||
DEPS NIL DEPENDENCIES NIL VERSION 20200925-git SIBLINGS
|
||||
(acclimation-temperature) PARASITES NIL) */
|
@ -1,29 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "agutil";
|
||||
version = "20210531-git";
|
||||
|
||||
description = "A collection of utility functions not found in other utility libraries.";
|
||||
|
||||
deps = [ args."alexandria" args."closer-mop" args."optima" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/agutil/2021-05-31/agutil-20210531-git.tgz";
|
||||
sha256 = "01shs4qbr0bzmx9134cm84zbh8whbi2s5xngapd2fl8ag1rda9q1";
|
||||
};
|
||||
|
||||
packageName = "agutil";
|
||||
|
||||
asdFilesToKeep = ["agutil.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM agutil DESCRIPTION
|
||||
A collection of utility functions not found in other utility libraries.
|
||||
SHA256 01shs4qbr0bzmx9134cm84zbh8whbi2s5xngapd2fl8ag1rda9q1 URL
|
||||
http://beta.quicklisp.org/archive/agutil/2021-05-31/agutil-20210531-git.tgz
|
||||
MD5 99de7cd320ae2696c1707ca5b55cf40a NAME agutil FILENAME agutil DEPS
|
||||
((NAME alexandria FILENAME alexandria)
|
||||
(NAME closer-mop FILENAME closer-mop) (NAME optima FILENAME optima))
|
||||
DEPENDENCIES (alexandria closer-mop optima) VERSION 20210531-git SIBLINGS
|
||||
NIL PARASITES NIL) */
|
@ -1,27 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "alexandria";
|
||||
version = "20211209-git";
|
||||
|
||||
description = "Alexandria is a collection of portable public domain utilities.";
|
||||
|
||||
deps = [ ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/alexandria/2021-12-09/alexandria-20211209-git.tgz";
|
||||
sha256 = "13xyajg5n3ad3x2hrmzni1w87b0wc41wn7manbvc3dc5n55afxk0";
|
||||
};
|
||||
|
||||
packageName = "alexandria";
|
||||
|
||||
asdFilesToKeep = ["alexandria.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM alexandria DESCRIPTION
|
||||
Alexandria is a collection of portable public domain utilities. SHA256
|
||||
13xyajg5n3ad3x2hrmzni1w87b0wc41wn7manbvc3dc5n55afxk0 URL
|
||||
http://beta.quicklisp.org/archive/alexandria/2021-12-09/alexandria-20211209-git.tgz
|
||||
MD5 4f578a956567ea0d6c99c2babd1752f3 NAME alexandria FILENAME alexandria
|
||||
DEPS NIL DEPENDENCIES NIL VERSION 20211209-git SIBLINGS (alexandria-tests)
|
||||
PARASITES NIL) */
|
@ -1,28 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "anaphora";
|
||||
version = "20211209-git";
|
||||
|
||||
parasites = [ "anaphora/test" ];
|
||||
|
||||
description = "The Anaphoric Macro Package from Hell";
|
||||
|
||||
deps = [ args."rt" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/anaphora/2021-12-09/anaphora-20211209-git.tgz";
|
||||
sha256 = "1pi166qwf3zwswhgq8c4r84rl5d6lnn0rkb3cdf5afyxmminsadg";
|
||||
};
|
||||
|
||||
packageName = "anaphora";
|
||||
|
||||
asdFilesToKeep = ["anaphora.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM anaphora DESCRIPTION The Anaphoric Macro Package from Hell SHA256
|
||||
1pi166qwf3zwswhgq8c4r84rl5d6lnn0rkb3cdf5afyxmminsadg URL
|
||||
http://beta.quicklisp.org/archive/anaphora/2021-12-09/anaphora-20211209-git.tgz
|
||||
MD5 81827cd43d29293e967916bb11c4df88 NAME anaphora FILENAME anaphora DEPS
|
||||
((NAME rt FILENAME rt)) DEPENDENCIES (rt) VERSION 20211209-git SIBLINGS NIL
|
||||
PARASITES (anaphora/test)) */
|
@ -1,35 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "arnesi";
|
||||
version = "20170403-git";
|
||||
|
||||
parasites = [ "arnesi/cl-ppcre-extras" "arnesi/slime-extras" ];
|
||||
|
||||
description = "A bag-of-tools utilities library used to aid in implementing the bese.it toolkit";
|
||||
|
||||
deps = [ args."alexandria" args."cl-ppcre" args."closer-mop" args."collectors" args."iterate" args."swank" args."symbol-munger" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/arnesi/2017-04-03/arnesi-20170403-git.tgz";
|
||||
sha256 = "01kirjpgv5pgbcdxjrnw3ld4jw7wrqm3rgqnxwac4gxaphr2s6q4";
|
||||
};
|
||||
|
||||
packageName = "arnesi";
|
||||
|
||||
asdFilesToKeep = ["arnesi.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM arnesi DESCRIPTION
|
||||
A bag-of-tools utilities library used to aid in implementing the bese.it toolkit
|
||||
SHA256 01kirjpgv5pgbcdxjrnw3ld4jw7wrqm3rgqnxwac4gxaphr2s6q4 URL
|
||||
http://beta.quicklisp.org/archive/arnesi/2017-04-03/arnesi-20170403-git.tgz
|
||||
MD5 bbb34e1a646b2cc489766690c741d964 NAME arnesi FILENAME arnesi DEPS
|
||||
((NAME alexandria FILENAME alexandria) (NAME cl-ppcre FILENAME cl-ppcre)
|
||||
(NAME closer-mop FILENAME closer-mop)
|
||||
(NAME collectors FILENAME collectors) (NAME iterate FILENAME iterate)
|
||||
(NAME swank FILENAME swank) (NAME symbol-munger FILENAME symbol-munger))
|
||||
DEPENDENCIES
|
||||
(alexandria cl-ppcre closer-mop collectors iterate swank symbol-munger)
|
||||
VERSION 20170403-git SIBLINGS NIL PARASITES
|
||||
(arnesi/cl-ppcre-extras arnesi/slime-extras)) */
|
@ -1,32 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "array-operations";
|
||||
version = "20210411-git";
|
||||
|
||||
parasites = [ "array-operations/tests" ];
|
||||
|
||||
description = "Simple array operations library for Common Lisp.";
|
||||
|
||||
deps = [ args."alexandria" args."anaphora" args."clunit2" args."let-plus" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/array-operations/2021-04-11/array-operations-20210411-git.tgz";
|
||||
sha256 = "0l6wxd3a1xdcmcsc93prq8ymainfsy15imiwnaik1i9g94fcbjz8";
|
||||
};
|
||||
|
||||
packageName = "array-operations";
|
||||
|
||||
asdFilesToKeep = ["array-operations.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM array-operations DESCRIPTION
|
||||
Simple array operations library for Common Lisp. SHA256
|
||||
0l6wxd3a1xdcmcsc93prq8ymainfsy15imiwnaik1i9g94fcbjz8 URL
|
||||
http://beta.quicklisp.org/archive/array-operations/2021-04-11/array-operations-20210411-git.tgz
|
||||
MD5 902c6034c006bc6ca88ef59e7ff2b1aa NAME array-operations FILENAME
|
||||
array-operations DEPS
|
||||
((NAME alexandria FILENAME alexandria) (NAME anaphora FILENAME anaphora)
|
||||
(NAME clunit2 FILENAME clunit2) (NAME let-plus FILENAME let-plus))
|
||||
DEPENDENCIES (alexandria anaphora clunit2 let-plus) VERSION 20210411-git
|
||||
SIBLINGS NIL PARASITES (array-operations/tests)) */
|
@ -1,26 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "array-utils";
|
||||
version = "20201220-git";
|
||||
|
||||
description = "A few utilities for working with arrays.";
|
||||
|
||||
deps = [ ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/array-utils/2020-12-20/array-utils-20201220-git.tgz";
|
||||
sha256 = "11y6k8gzzcj00jyccg2k9nh6rvivcvh23z4yzjfly7adygd3n717";
|
||||
};
|
||||
|
||||
packageName = "array-utils";
|
||||
|
||||
asdFilesToKeep = ["array-utils.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM array-utils DESCRIPTION A few utilities for working with arrays.
|
||||
SHA256 11y6k8gzzcj00jyccg2k9nh6rvivcvh23z4yzjfly7adygd3n717 URL
|
||||
http://beta.quicklisp.org/archive/array-utils/2020-12-20/array-utils-20201220-git.tgz
|
||||
MD5 d6ed906f28c46b2ab0335ec1fc05f8af NAME array-utils FILENAME array-utils
|
||||
DEPS NIL DEPENDENCIES NIL VERSION 20201220-git SIBLINGS (array-utils-test)
|
||||
PARASITES NIL) */
|
@ -1,31 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "arrows";
|
||||
version = "20181018-git";
|
||||
|
||||
parasites = [ "arrows/test" ];
|
||||
|
||||
description = "Implements -> and ->> from Clojure, as well as several expansions on the
|
||||
idea.";
|
||||
|
||||
deps = [ args."hu_dot_dwim_dot_stefil" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/arrows/2018-10-18/arrows-20181018-git.tgz";
|
||||
sha256 = "1b13pnn71z1dv1cwysh6p5jfgjsp3q8ivsdxfspl1hg1nh9mqa7r";
|
||||
};
|
||||
|
||||
packageName = "arrows";
|
||||
|
||||
asdFilesToKeep = ["arrows.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM arrows DESCRIPTION
|
||||
Implements -> and ->> from Clojure, as well as several expansions on the
|
||||
idea.
|
||||
SHA256 1b13pnn71z1dv1cwysh6p5jfgjsp3q8ivsdxfspl1hg1nh9mqa7r URL
|
||||
http://beta.quicklisp.org/archive/arrows/2018-10-18/arrows-20181018-git.tgz
|
||||
MD5 c60b5d79680de19baad018a0fe87bc48 NAME arrows FILENAME arrows DEPS
|
||||
((NAME hu.dwim.stefil FILENAME hu_dot_dwim_dot_stefil)) DEPENDENCIES
|
||||
(hu.dwim.stefil) VERSION 20181018-git SIBLINGS NIL PARASITES (arrows/test)) */
|
@ -1,26 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "asdf-package-system";
|
||||
version = "20150608-git";
|
||||
|
||||
description = "System lacks description";
|
||||
|
||||
deps = [ ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/asdf-package-system/2015-06-08/asdf-package-system-20150608-git.tgz";
|
||||
sha256 = "17lfwfc15hcag8a2jsaxkx42wmz2mwkvxf6vb2h9cim7dwsnyy29";
|
||||
};
|
||||
|
||||
packageName = "asdf-package-system";
|
||||
|
||||
asdFilesToKeep = ["asdf-package-system.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM asdf-package-system DESCRIPTION System lacks description SHA256
|
||||
17lfwfc15hcag8a2jsaxkx42wmz2mwkvxf6vb2h9cim7dwsnyy29 URL
|
||||
http://beta.quicklisp.org/archive/asdf-package-system/2015-06-08/asdf-package-system-20150608-git.tgz
|
||||
MD5 9eee9d811aec4894843ac1d8ae6cbccd NAME asdf-package-system FILENAME
|
||||
asdf-package-system DEPS NIL DEPENDENCIES NIL VERSION 20150608-git SIBLINGS
|
||||
NIL PARASITES NIL) */
|
@ -1,27 +0,0 @@
|
||||
/* Generated file. */
|
||||
args @ { fetchurl, ... }:
|
||||
rec {
|
||||
baseName = "asdf-system-connections";
|
||||
version = "20170124-git";
|
||||
|
||||
description = "Allows for ASDF system to be connected so that auto-loading may occur.";
|
||||
|
||||
deps = [ ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://beta.quicklisp.org/archive/asdf-system-connections/2017-01-24/asdf-system-connections-20170124-git.tgz";
|
||||
sha256 = "0h8237bq3niw6glcsps77n1ykcmc5bjkcrbjyxjgkmcb1c5kwwpq";
|
||||
};
|
||||
|
||||
packageName = "asdf-system-connections";
|
||||
|
||||
asdFilesToKeep = ["asdf-system-connections.asd"];
|
||||
overrides = x: x;
|
||||
}
|
||||
/* (SYSTEM asdf-system-connections DESCRIPTION
|
||||
Allows for ASDF system to be connected so that auto-loading may occur.
|
||||
SHA256 0h8237bq3niw6glcsps77n1ykcmc5bjkcrbjyxjgkmcb1c5kwwpq URL
|
||||
http://beta.quicklisp.org/archive/asdf-system-connections/2017-01-24/asdf-system-connections-20170124-git.tgz
|
||||
MD5 23bdbb69c433568e3e15ed705b803992 NAME asdf-system-connections FILENAME
|
||||
asdf-system-connections DEPS NIL DEPENDENCIES NIL VERSION 20170124-git
|
||||
SIBLINGS NIL PARASITES NIL) */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user