diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..be348b6 --- /dev/null +++ b/default.nix @@ -0,0 +1,8 @@ +{ pkgs ? null }: +let + overlay = import ./overlay.nix; + pkgs' = if pkgs == null then + import { overlays = [ overlay ]; } + else + pkgs.extend overlay; +in builtins.intersectAttrs (overlay { } { }) pkgs' diff --git a/flake.lock b/flake.lock index 24377f9..cadab6d 100644 --- a/flake.lock +++ b/flake.lock @@ -1,79 +1,22 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1691412377, - "narHash": "sha256-WpMRfQUxBLM2yZ8DzgnrI3BuTTpZGMUX6Owm39PKD3Y=", - "owner": "ehmry", + "lastModified": 1696757521, + "narHash": "sha256-cfgtLNCBLFx2qOzRLI6DHfqTdfWI+UbvsKYa3b3fvaA=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "13df68506e632a15e95d57252cec4d9f0ea20701", + "rev": "2646b294a146df2781b1ca49092450e8a32814e1", "type": "github" }, "original": { - "owner": "ehmry", - "ref": "nim", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "root": { "inputs": { - "nixpkgs": "nixpkgs", - "rust": "rust" - } - }, - "rust": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1692151776, - "narHash": "sha256-nE3Z0bRcABHQq2RFC1RsUVnGCJS0Y5xhYUBY9amxgJA=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "dea24da3d3be23ab53ee80314474afd5fcb03c1c", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index f077345..7ccdc8c 100644 --- a/flake.nix +++ b/flake.nix @@ -1,96 +1,10 @@ { description = "Syndicate utilities"; - inputs = { - nixpkgs.url = "github:ehmry/nixpkgs/nim"; - rust = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - - outputs = { self, nixpkgs, rust }: { + outputs = { self, nixpkgs }: { lib = nixpkgs.lib.extend (import ./lib.nix); - overlays.default = final: prev: - let - rust' = (prev.extend rust.overlay).rust-bin.nightly.latest.default; - - nimOverlay = final': prev': { - noiseprotocol = final'.callPackage ./packages/nim/noiseprotocol { }; - - preserves = prev'.preserves.overrideAttrs (finalAttrs: prevAttrs: { - pname = "preserves"; - version = "20230806"; - src = final.fetchFromGitea { - domain = "git.syndicate-lang.org"; - owner = "ehmry"; - repo = "preserves-nim"; - rev = finalAttrs.version; - hash = "sha256-kSIGqdcbrrdDiD7AbH0jOuqxywqbS7htBRBdJc1RO3U="; - }; - nimFlags = [ "--path:${final'.nim.passthru.nim}/nim" ]; - }); - - syndicate = prev'.syndicate.overrideAttrs (finalAttrs: prevAttrs: { - version = "20230816"; - src = final.fetchFromGitea { - domain = "git.syndicate-lang.org"; - owner = "ehmry"; - repo = "${finalAttrs.pname}-nim"; - rev = finalAttrs.version; - hash = "sha256-0zZngM2OFicDNisZVAKMS1yOfgf3huL21uA4AU1lWMg="; - }; - nimFlags = [ ]; - }); - - syndicate_utils = - final'.callPackage ./packages/syndicate_utils-nim { }; - syndicated-open = final'.callPackage ./packages/syndicated-open { }; - xdg_open_ng = - builtins.trace "xdg_open_ng has been renamed to syndicated-open" - final'.syndicated-open; - }; - in { - inherit (self) lib; - - acpi_actor = final.nim2Packages.callPackage ./packages/acpi_actor { }; - - fontconfig_actor = - final.nim2Packages.callPackage ./packages/fontconfig_actor { }; - - libnotify_actor = - final.nim2Packages.callPackage ./packages/libnotify_actor { }; - - nimPackages = prev.nimPackages.overrideScope' nimOverlay; - nim2Packages = prev.nim2Packages.overrideScope' nimOverlay; - - nix_actor = final.nim2Packages.callPackage ./packages/nix_actor { }; - - noise-c = final.callPackage ./packages/noise-c { }; - - python3Packages = prev.python3Packages.overrideScope (final': prev': { - preserves = final'.callPackage ./packages/preserves-py { }; - syndicate = final'.callPackage ./packages/syndicate-py { }; - }); - - preserves-tools = - final.callPackage ./packages/preserves-tools { rust = rust'; }; - - sqlite_actor = - final.nim2Packages.callPackage ./packages/sqlite_actor { }; - - squeak = final.callPackage ./packages/squeak { }; - squeaker = final.python3Packages.callPackage ./packages/squeaker { }; - - syndicate-server = - final.callPackage ./packages/syndicate-server { rust = rust'; }; - - synit-pid1 = final.callPackage ./packages/synit-pid1 { rust = rust'; }; - - xapian_actor = - final.nim2Packages.callPackage ./packages/xapian_actor { }; - }; + overlays.default = import ./overlay.nix; legacyPackages = self.lib.mapAttrs (system: pkgs: pkgs.extend self.overlays.default) { diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..bce1d3c --- /dev/null +++ b/overlay.nix @@ -0,0 +1,86 @@ +final: prev: +let + nimOverlay = final': prev': { + nix_actor = final'.callPackage ./packages/nix_actor { }; + + noiseprotocol = final'.callPackage ./packages/nim/noiseprotocol { }; + + syndicate_utils = final'.callPackage ./packages/syndicate_utils-nim { }; + syndicated-open = final'.callPackage ./packages/syndicated-open { }; + xdg_open_ng = + builtins.trace "xdg_open_ng has been renamed to syndicated-open" + final'.syndicated-open; + }; + + rustPkgs = let + overlay = import (prev.fetchFromGitHub { + owner = "oxalica"; + repo = "rust-overlay"; + rev = "acb7e896a73b0cf2c6ffe40b2051eb7f88fc2a10"; + hash = "sha256-zpOir1AWpWyQscP5dMpqMrCgBzjzH7Wv0FNUsQ0dcS0="; + }); + in final.extend overlay; + + rust' = rustPkgs.rust-bin.nightly.latest.default; + +in { + lib = prev.lib.extend (import ./lib.nix); + + acpi_actor = final.nim2Packages.callPackage ./packages/acpi_actor { }; + + fontconfig_actor = + final.nim2Packages.callPackage ./packages/fontconfig_actor { }; + + libnotify_actor = + final.nim2Packages.callPackage ./packages/libnotify_actor { }; + + nimFlagsFromLockFile = let + fetchDependency = let + methods = { + fetchzip = { url, sha256, ... }: + final.fetchzip { + name = "source"; + inherit url sha256; + }; + git = { fetchSubmodules, leaveDotGit, rev, sha256, url, ... }: + final.fetchgit { + inherit fetchSubmodules leaveDotGit rev sha256 url; + }; + }; + in attrs@{ method, ... }: methods.${method} attrs // attrs; + in lockFile: + with builtins; + final.lib.pipe lockFile [ + readFile + fromJSON + (getAttr "depends") + (map fetchDependency) + (map ({ outPath, srcDir, ... }: ''--path:"${outPath}/${srcDir}"'')) + ]; + + nimPackages = prev.nimPackages.overrideScope' nimOverlay; + nim2Packages = prev.nim2Packages.overrideScope' nimOverlay; + + inherit (final.nim2Packages) nix_actor; + + noise-c = final.callPackage ./packages/noise-c { }; + + preserves-tools = final.callPackage ./packages/preserves-tools { }; + + python3Packages = prev.python3Packages.overrideScope (final': prev': { + preserves = final'.callPackage ./packages/preserves-py { }; + syndicate = final'.callPackage ./packages/syndicate-py { }; + }); + + sqlite_actor = final.nim2Packages.callPackage ./packages/sqlite_actor { }; + + squeak = final.callPackage ./packages/squeak { }; + squeaker = final.python3Packages.callPackage ./packages/squeaker { }; + + syndicate-server = + final.callPackage ./packages/syndicate-server { rust = rust'; }; + + synit-pid1 = final.callPackage ./packages/synit-pid1 { }; + + xapian_actor = final.nim2Packages.callPackage ./packages/xapian_actor { }; +} diff --git a/packages/acpi_actor/default.nix b/packages/acpi_actor/default.nix index 195e2b9..ae69139 100644 --- a/packages/acpi_actor/default.nix +++ b/packages/acpi_actor/default.nix @@ -1,21 +1,21 @@ -{ lib, buildNimPackage, fetchFromGitea, syndicate }: +{ lib, buildNimPackage, fetchFromGitea, nimFlagsFromLockFile }: -buildNimPackage rec { +buildNimPackage (final: prev: { pname = "acpi_actor"; - version = "20230506"; + version = "20231010"; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; - repo = pname; - rev = version; - hash = "sha256-48O+nMrfuYRlULE3fa6vjyaUULPvYiv770ye637RRVY="; + repo = final.pname; + rev = final.version; + hash = "sha256-eN3VC2yL6UvjeIGvzx0PAujR/Xd6Rc1e9Ftf6fKKk2E="; }; - propagatedBuildInputs = [ syndicate ]; + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; - meta = src.meta // { + meta = final.src.meta // { maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; -} +}) diff --git a/packages/fontconfig_actor/default.nix b/packages/fontconfig_actor/default.nix index 7a290f4..057b3e6 100644 --- a/packages/fontconfig_actor/default.nix +++ b/packages/fontconfig_actor/default.nix @@ -1,24 +1,27 @@ -{ lib, buildNimPackage, fetchFromGitea, fontconfig, pkg-config, syndicate }: +{ lib, buildNimPackage, fetchFromGitea, fontconfig, pkg-config +, nimFlagsFromLockFile }: -buildNimPackage rec { +buildNimPackage (final: prev: { pname = "fontconfig_actor"; - version = "20230506"; + version = "20231009"; nimBinOnly = true; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; - repo = pname; - rev = version; - hash = "sha256-TH6tu6l7gfb7GmYCyZInTUmKsUBRJCpbkL1Ec5El0Iw="; + repo = final.pname; + rev = final.version; + hash = "sha256-DeoHz+vi3/cXANxm54C7zY2H0lzrHTj2bfWLAMGOZBw="; }; nativeBuildInputs = [ pkg-config ]; - buildInputs = [ fontconfig syndicate ]; + buildInputs = [ fontconfig ]; - meta = src.meta // { + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; + + meta = final.src.meta // { description = "Syndicate actor for asserting Fontconfig information"; maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; -} +}) diff --git a/packages/libnotify_actor/default.nix b/packages/libnotify_actor/default.nix index 088f344..c502259 100644 --- a/packages/libnotify_actor/default.nix +++ b/packages/libnotify_actor/default.nix @@ -1,22 +1,25 @@ -{ lib, buildNimPackage, fetchFromGitea, syndicate, libnotify, pkg-config }: +{ lib, buildNimPackage, fetchFromGitea, libnotify, pkg-config +, nimFlagsFromLockFile }: -buildNimPackage rec { +buildNimPackage (final: prev: { pname = "libnotify_actor"; - version = "20230506"; + version = "20231009"; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; - repo = pname; - rev = version; - hash = "sha256-sTLmogaqnxoX/pp0/A4+343lXCYsASnoKKIY6J+1nv4="; + repo = final.pname; + rev = final.version; + hash = "sha256-xNHadWL3Lay1HGEfdmjpLDJsOddrqziMGm0A74tbeYA="; }; propagatedNativeBuildInputs = [ pkg-config ]; - propagatedBuildInputs = [ libnotify syndicate ]; + propagatedBuildInputs = [ libnotify ]; - meta = src.meta // { + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; + + meta = final.src.meta // { maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; -} +}) diff --git a/packages/nix_actor/default.nix b/packages/nix_actor/default.nix index bc5ef1f..72e5868 100644 --- a/packages/nix_actor/default.nix +++ b/packages/nix_actor/default.nix @@ -1,22 +1,35 @@ -{ lib, buildNimPackage, fetchFromGitea, boost, nix, pkg-config, syndicate }: +{ lib, buildNimPackage, fetchFromGitea, fetchFromGitHub, boost, nix +, nimFlagsFromLockFile, pkg-config }: -buildNimPackage rec { +let + nix' = nix.overrideAttrs (final: prev: { + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + rev = "2.13.3"; + hash = "sha256-jUc2ccTR8f6MGY2pUKgujm+lxSPNGm/ZAP+toX+nMNc="; + }; + }); +in buildNimPackage (final: prev: { pname = "nix_actor"; - version = "20230530"; + version = "20231009"; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; - repo = pname; - rev = version; - hash = "sha256-HOdpwZ9jEvYEHx3MKYkaG/DguH94p4E1bVa30mYy6JQ="; + repo = final.pname; + rev = final.version; + hash = "sha256-+wMhpmC1233Ze4+xnd5sNnIfsXkGEx67bZN3oMYu2EQ="; }; - propagatedNativeBuildInputs = [ pkg-config ]; - propagatedBuildInputs = [ boost nix syndicate ]; + nimBinOnly = true; + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; - meta = src.meta // { + propagatedNativeBuildInputs = [ pkg-config ]; + propagatedBuildInputs = [ boost nix' ]; + + meta = final.src.meta // { maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; -} +}) diff --git a/packages/preserves-tools/default.nix b/packages/preserves-tools/default.nix index 258e4cf..fc11725 100644 --- a/packages/preserves-tools/default.nix +++ b/packages/preserves-tools/default.nix @@ -1,4 +1,4 @@ -{ lib, rustPlatform, rust, fetchCrate }: +{ lib, rustPlatform, rustc, fetchCrate }: rustPlatform.buildRustPackage rec { pname = "preserves-tool"; @@ -12,11 +12,14 @@ rustPlatform.buildRustPackage rec { sha256 = "sha256-I9dqY2pej/HRQg2VGkEoWKOlo4c9TYwk/jw23eN1nlU="; }; cargoHash = "sha256-0UMGDoyfdEJQQDoUadbU6Ev6yA2k0sQHRvO/Z+4QF5g="; - nativeBuildInputs = [ rust ]; + nativeBuildInputs = [ rustc ]; + + RUSTC_BOOTSTRAP = true; meta = { description = "Swiss army knife for working with Preserves documents"; homepage = "https://preserves.gitlab.io/preserves/doc/preserves-tool.html"; maintainers = with lib.maintainers; [ ehmry ]; + mainProgram = "preserves-tool"; }; } diff --git a/packages/sqlite_actor/default.nix b/packages/sqlite_actor/default.nix index a669b4e..d9b5617 100644 --- a/packages/sqlite_actor/default.nix +++ b/packages/sqlite_actor/default.nix @@ -1,22 +1,25 @@ -{ lib, buildNimPackage, fetchFromGitea, pkg-config, syndicate, sqlcipher }: +{ lib, buildNimPackage, fetchFromGitea, pkg-config, sqlcipher +, nimFlagsFromLockFile }: -buildNimPackage rec { +buildNimPackage (final: prev: { pname = "sqlite_actor"; - version = "20230527"; + version = "20231010"; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; - repo = pname; - rev = version; - hash = "sha256-+I4rJtsRA0LKpkIXwGpRoc1mCxGRQM4oU0ABR6OjFdw="; + repo = final.pname; + rev = final.version; + hash = "sha256-oKw5GUsK1F2RegOFiNYkLXT5CvtWcF/8H6QdE4DXa1A="; }; propagatedNativeBuildInputs = [ pkg-config ]; - propagatedBuildInputs = [ sqlcipher syndicate ]; + propagatedBuildInputs = [ sqlcipher ]; - meta = src.meta // { + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; + + meta = final.src.meta // { maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; -} +}) diff --git a/packages/syndicate-nim/default.nix b/packages/syndicate-nim/default.nix deleted file mode 100644 index c8cf996..0000000 --- a/packages/syndicate-nim/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ lib, buildNimPackage, fetchFromGitea, fetchFromGitHub, preserves }: - -let - hashlib = buildNimPackage rec { - pname = "hashlib"; - version = "1.0.1"; - - src = fetchFromGitHub { - owner = "khchen"; - repo = pname; - rev = "84e0247555e4488594975900401baaf5bbbfb531"; - hash = "sha256-nWNThelCh0LPVU7ryZgS/23hRRvJDVL2xWbQibb+zN0="; - }; - doCheck = true; - }; -in buildNimPackage rec { - pname = "syndicate"; - version = "20230530"; - - src = fetchFromGitea { - domain = "git.syndicate-lang.org"; - owner = "ehmry"; - repo = "${pname}-nim"; - rev = version; - hash = "sha256-lUHoMSQwUlz9EDMvpFL9GlrwbwMvZDILSmuakONwe50="; - }; - - propagatedBuildInputs = [ hashlib preserves ]; - - doCheck = true; - - meta = src.meta // { - maintainers = [ lib.maintainers.ehmry ]; - license = lib.licenses.unlicense; - }; -} diff --git a/packages/syndicate_utils-nim/default.nix b/packages/syndicate_utils-nim/default.nix index bab0922..a138bb6 100644 --- a/packages/syndicate_utils-nim/default.nix +++ b/packages/syndicate_utils-nim/default.nix @@ -1,18 +1,19 @@ -{ lib, buildNimPackage, fetchFromGitea, illwill, syndicate }: +{ lib, buildNimPackage, fetchFromGitea, nimFlagsFromLockFile }: buildNimPackage (final: prev: { pname = "syndicate_utils"; - version = "20230801"; + version = "20231005"; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; repo = final.pname; rev = final.version; - hash = "sha256-O9n9y0v0cQg5b2P4GjOEKYj6t1fGTMy4v/QpeAScv2Q="; + hash = "sha256-RNbEoD4p8o4ZrBFGD2wdmM4VmqfeCbhm0bOzIO0pVNI="; }; - propagatedBuildInputs = [ illwill syndicate ]; + nimBinOnly = true; + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; meta = final.src.meta // { maintainers = [ lib.maintainers.ehmry ]; diff --git a/packages/syndicated-open/default.nix b/packages/syndicated-open/default.nix index 930a871..8b3ffe9 100644 --- a/packages/syndicated-open/default.nix +++ b/packages/syndicated-open/default.nix @@ -1,21 +1,23 @@ -{ lib, buildNimPackage, fetchFromGitea, makeDesktopItem, pkg-config, pcre, syndicate }: +{ lib, buildNimPackage, fetchFromGitea, makeDesktopItem, pkg-config, pcre +, nimFlagsFromLockFile }: -buildNimPackage rec { +buildNimPackage (final: prev: { pname = "syndicated-open"; - version = "20230630"; + version = "20231010"; nimBinOnly = true; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; - repo = pname; - rev = version; - hash = "sha256-BRSvsIkaingUhtaBKQYwFzr6uC4WFs2/BmfWWPfI/6s="; + repo = final.pname; + rev = final.version; + hash = "sha256-DVBSsnN59XKV7Pc1spBxcLwyOIif3xMHXHID9khVJck="; }; nativeBuildInputs = [ pkg-config ]; + propagatedBuildInputs = [ pcre ]; - propagatedBuildInputs = [ pcre syndicate ]; + nimFlags = nimFlagsFromLockFile "${final.src}/lock.json"; desktopItem = makeDesktopItem rec { name = "open"; @@ -36,9 +38,9 @@ buildNimPackage rec { cp -a $desktopItem/* $out/ ''; - meta = src.meta // { + meta = final.src.meta // { description = "Syndicated open command"; maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; -} +}) diff --git a/packages/synit-pid1/default.nix b/packages/synit-pid1/default.nix index 7a8976e..5a5225e 100644 --- a/packages/synit-pid1/default.nix +++ b/packages/synit-pid1/default.nix @@ -1,6 +1,6 @@ # https://git.syndicate-lang.org/synit/synit/src/branch/main/packaging/packages/synit-pid1/APKBUILD -{ lib, rustPlatform, rust, fetchFromGitea }: +{ lib, rustPlatform, rustc, fetchFromGitea }: rustPlatform.buildRustPackage rec { pname = "synit-pid1"; @@ -27,7 +27,9 @@ rustPlatform.buildRustPackage rec { sourceRoot = "source/${pname}"; cargoHash = "sha256-57ZUlR+lIwQf3/4pDeeEMUc1juNTddcHpzNQZTUWbtU="; - nativeBuildInputs = [ rust ]; + nativeBuildInputs = [ rustc ]; + + RUSTC_BOOTSTRAP = true; meta = src.meta // { description = "Synit pid 1 program (patched for NixOS)";