Compare commits

...

6 Commits

16 changed files with 77 additions and 273 deletions

View File

@ -6,14 +6,15 @@
"home-manager": "home-manager",
"nixpkgs": [
"nixpkgs"
]
],
"systems": "systems"
},
"locked": {
"lastModified": 1689334118,
"narHash": "sha256-djk5AZv1yU84xlKFaVHqFWvH73U7kIRstXwUAnDJPsk=",
"lastModified": 1703433843,
"narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
"owner": "ryantm",
"repo": "agenix",
"rev": "0d8c5325fc81daf00532e3e26c6752f7bcde1143",
"rev": "417caa847f9383e111d1397039c9d4337d024bf0",
"type": "github"
},
"original": {
@ -30,11 +31,11 @@
]
},
"locked": {
"lastModified": 1673295039,
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
@ -54,11 +55,11 @@
]
},
"locked": {
"lastModified": 1688380630,
"narHash": "sha256-8ilApWVb1mAi4439zS3iFeIT0ODlbrifm/fegWwgHjA=",
"lastModified": 1701787589,
"narHash": "sha256-ce+oQR4Zq9VOsLoh9bZT8Ip9PaMLcjjBUHVPzW5d7Cw=",
"owner": "numtide",
"repo": "devshell",
"rev": "f9238ec3d75cefbb2b42a44948c4e8fb1ae9a205",
"rev": "44ddedcbcfc2d52a76b64fb6122f209881bd3e1e",
"type": "github"
},
"original": {
@ -75,11 +76,11 @@
]
},
"locked": {
"lastModified": 1682203081,
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
"lastModified": 1703113217,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github"
},
"original": {
@ -90,16 +91,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1689503327,
"narHash": "sha256-qVwzYLA8oT2oWNDXO0A3bZHOhoPOihIB9T677+Hor1E=",
"lastModified": 1704295289,
"narHash": "sha256-9WZDRfpMqCYL6g/HNWVvXF0hxdaAgwgIGeLYiOhmes8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f64b9738da8e86195766147e9752c67fccee006c",
"rev": "b0b2c5445c64191fd8d0b31f2b1a34e45a64547d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
@ -109,7 +110,7 @@
"agenix": "agenix",
"devshell": "devshell",
"nixpkgs": "nixpkgs",
"systems": "systems"
"systems": "systems_2"
}
},
"systems": {
@ -126,6 +127,21 @@
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",

View File

@ -2,7 +2,7 @@
description = "Dev Setup";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
systems.url = "github:nix-systems/default";
@ -26,6 +26,10 @@
self.overlays.pythonOverlay
agenix.overlays.default
devshell.overlays.default
# https://github.com/NixOS/nixpkgs/issues/265675#issuecomment-1846591842
(final: prev: {
pipewire = prev.pipewire.override { ffadoSupport = false; };
})
];
}
);
@ -44,6 +48,7 @@
# Add additional packages you'd like to be available in your devshell
# PATH here
devshell.packages = with pkgs; [
jq
];
commands = [
{

View File

@ -13,20 +13,13 @@ final: prev: {
# erpnext dependencies
gocardless-pro = pyFinal.callPackage ./python/gocardless-pro.nix {};
python-youtube = pyFinal.callPackage ./python/python-youtube.nix {};
redisearch = pyFinal.callPackage ./python/redisearch.nix {};
taxjar = pyFinal.callPackage ./python/taxjar.nix {};
# frappe dependencies
email-reply-parser = pyFinal.callPackage ./python/email-reply-parser.nix {};
git-url-parse = pyFinal.callPackage ./python/git-url-parse.nix {};
maxminddb-geolite2 = pyFinal.callPackage ./python/maxminddb-geolite2.nix {};
posthog = pyFinal.callPackage ./python/posthog.nix {};
premailer = pyFinal.callPackage ./python/premailer.nix {};
psycopg2-binary = pyFinal.callPackage ./python/psycopg2-binary.nix {};
pypdf2 = pyFinal.callPackage ./python/pypdf2.nix {};
pypika = pyFinal.callPackage ./python/pypika.nix {};
rauth = pyFinal.callPackage ./python/rauth.nix {};
traceback-with-variables = pyFinal.callPackage ./python/traceback-with-variables.nix {};
# indirect dependencies
@ -36,15 +29,6 @@ final: prev: {
rejson = pyFinal.callPackage ./python/rejson.nix {};
bleach = pyPrev.bleach.overridePythonAttrs (oldAttrs: (rec {
version = "3.3.1";
src = pyPrev.fetchPypi {
inherit version;
inherit (oldAttrs) pname;
sha256 = "sha256-MGSDpal5VHQWCtV/zj3dG1BVHpge7Y4VpYLTTO8oqvo=";
};
}));
plaid-python = pyPrev.plaid-python.overridePythonAttrs (oldAttrs: (rec {
version = "7.2.1";
src = pyPrev.fetchPypi {
@ -57,16 +41,6 @@ final: prev: {
# Integration tests require API keys and internet access
checkPhase = "pyPrev.test -rxs ./tests/unit";
}));
tweepy = pyPrev.tweepy.overridePythonAttrs (oldAttrs: (rec {
version = "3.10.0";
src = pyPrev.fetchPypi {
inherit version;
inherit (oldAttrs) pname;
sha256 = "sha256-duaVS4BspHDdqHf1fbh5L/8GoL66DtQ+/DgFdx458Go=";
};
doCheck = false;
pythonImportsCheck = [];
}));
};
};
}

View File

@ -2,6 +2,7 @@
, buildPythonPackage
, fetchFromGitHub
, pythonRelaxDepsHook
, flit-core
# Core dependencies
, pycountry
@ -34,9 +35,9 @@ buildPythonPackage rec {
sha256 = erpnextSrcHash;
};
format = "flit";
format = "pyproject";
nativeBuildInputs = [ pythonRelaxDepsHook ];
nativeBuildInputs = [ pythonRelaxDepsHook flit-core ];
pythonRelaxDeps = [
"pycountry"
"rapidfuzz"

View File

@ -2,6 +2,7 @@
, buildPythonPackage
, pythonRelaxDepsHook
, fetchFromGitHub
, flit-core
# Core dependencies
, babel
@ -96,9 +97,9 @@ buildPythonPackage rec {
sha256 = frappeSrcHash;
};
format = "flit";
format = "pyproject";
nativeBuildInputs = [ pythonRelaxDepsHook ];
nativeBuildInputs = [ pythonRelaxDepsHook flit-core ];
pythonRelaxDeps = [
"Babel"
"beautifulsoup4"

View File

@ -1,14 +0,0 @@
{ buildPythonPackage
, fetchPypi
, pbr
}:
buildPythonPackage rec {
pname = "git-url-parse";
version = "1.2.2";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-e19OOusdaTr+7mejvUrAY/cgbC6ORuVZ8NoNqYRF8Rc=";
};
propagatedBuildInputs = [pbr];
doCheck = false;
}

View File

@ -1,22 +0,0 @@
{ buildPythonPackage
, fetchPypi
, backoff
, monotonic
, python-dateutil
, requests
}:
buildPythonPackage rec {
pname = "posthog";
version = "3.0.1";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-V9J5H/V1LOVroPm7iHb688qSCPHCxs6utaJQTDRJN2c=";
};
propagatedBuildInputs = [
backoff
monotonic
python-dateutil
requests
];
doCheck = false;
}

View File

@ -1,22 +0,0 @@
{ buildPythonPackage
, fetchPypi
, cssselect
, cssutils
, lxml
, mock
, nose
, requests
, cachetools
}:
buildPythonPackage rec {
pname = "premailer";
version = "3.8.0";
buildInputs = [ mock nose ];
propagatedBuildInputs = [ cachetools cssselect cssutils lxml requests ];
src = fetchPypi {
inherit pname version;
sha256 = "sha256-TU4VckTO6UWgDBT+qp5qOusvryYj/2qLoIr99QX6DyU=";
};
}

View File

@ -1,13 +0,0 @@
{
buildPythonPackage,
fetchPypi,
}:
buildPythonPackage rec {
pname = "PyPDF2";
version = "2.1.1";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-Vy8TFLZDMGed1vtwN4H+M9Dyi1n7LP661efrntypJzg=";
};
propagatedBuildInputs = [];
}

View File

@ -1,15 +0,0 @@
{
buildPythonPackage,
fetchPypi,
}:
buildPythonPackage rec {
pname = "pypika";
version = "0.48.9";
src = fetchPypi {
pname = "PyPika";
inherit version;
sha256 = "sha256-g4g2phdH58g4DNG3/2OGlLenM1NF0PVZsEss2DKtU3g=";
};
propagatedBuildInputs = [];
doCheck = false;
}

View File

@ -1,27 +0,0 @@
{
buildPythonPackage,
fetchPypi,
requests,
dataclasses-json,
isodate,
requests-oauthlib
}:
buildPythonPackage rec {
pname = "python-youtube";
version = "0.8.0";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-Ud0Y+lmsK88SNh0uIjhOHgCgCG+SBv/FQkt3yc63tlo=";
};
# PyPI doesn't have test data in the source dist
doCheck = false;
propagatedBuildInputs = [
requests
dataclasses-json
isodate
requests-oauthlib
];
}

View File

@ -1,14 +0,0 @@
{ buildPythonPackage
, fetchPypi
, requests
}:
buildPythonPackage rec {
pname = "rauth";
version = "0.7.3";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-UkzbwcKFYOrPyanUDFlSXrjQD98H+62GEH6iRBFHewo=";
};
propagatedBuildInputs = [requests];
doCheck = false;
}

View File

@ -2,13 +2,14 @@ let
# set ssh public keys here for your system and user
machines = {
dumpyourvms = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILDATEWAgDZFfYs1ZPh33Kg4sqQ9tWMVKyk8XqFu3Koe host@dumpyourvms";
test-vm = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH/oRgbesMS5rTPGeP2PYtBC7bYCqrmDJxfWRRAAxN8Z host@test-vm";
ryzensun = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH/l7MfEmt510BMeNjuXNPmZ0brcQidvrrpcea+qJMjX host@ryzensun";
test-vm = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIATdaeRzb/OE1P+lcRS/i9C4yIN11J5zpfVb7+v1D4d7";
};
users = {
teutat3s = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHcU6KPy4b1MQXd6EJhcYwbJu7E+0IrBZF/IP6T7gbMf teutat3s@dumpyourvms";
root = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHcU6KPy4b1MQXd6EJhcYwbJu7E+0IrBZF/IP6T7gbMf root@test-vm";
};
allKeys = [machines.dumpyourvms machines.test-vm users.root users.teutat3s];
allKeys = [machines.dumpyourvms machines.ryzensun machines.test-vm users.root users.teutat3s];
in {
"admin-password.age".publicKeys = allKeys;
"database-root-password.age".publicKeys = allKeys;

View File

@ -1,12 +1,12 @@
{
benchVersion = "5.16.4";
erpnextVersion = "14.30.6";
frappeVersion = "14.40.3";
benchVersion = "5.19.0";
erpnextVersion = "14.58.1";
frappeVersion = "15.8.1";
hashes = {
"benchSrcHash" = "nIEFTCiyjfkCtpeeoQY+9zfoHQXZ5NOgXgLaz5ki150=";
"erpnextSrcHash" = "E+1vW73a3dp0YIVM0Ybt55DEi/7kDIKB4xTac+D49l4=";
"benchSrcHash" = "sha256-y8nx4vFVQggwGv2MWQ88WczgVbPxPybZV38FF5u5aWI=";
"erpnextSrcHash" = "sha256-HeeNd7dAlbppR2gPPmohKqpUUoMx5f0Kgsd7wZtUHp8=";
"erpnextYarnHash" = "0rjqlw0lff1wwbzl62g8nnjlhz3km2km3vqj2dccawpi4q2kh6jn";
"frappeSrcHash" = "byzPj4kJRgU1Fs5wyr9FZU2NyoxX0qePNY/KicEvGcY=";
"frappeYarnHash" = "0az1kdqcwmpzryrdg6ag4q5pqxy67vcns654d888l9307x9lq5rw";
"frappeSrcHash" = "sha256-FDUUNbULPmMY6dDgbMHrxXD8pK1AP+T7kG7mY9MmMDg=";
"frappeYarnHash" = "0rj2v69siagwjz632hyaii5ni24fp434cznaxpi8978fq07qx6l9";
};
}

View File

@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github
#!nix-shell -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github jq
if [ "$#" -gt 3 ] || [[ "$1" == -* ]]; then
echo "Regenerates packaging data for the ERPNext packages."
@ -14,13 +14,13 @@ frappe_version="$3"
set -euo pipefail
if [ -z "$bench_version" ]; then
bench_version="$(wget -q -O- "https://api.github.com/repos/frappe/bench/releases?per_page=1" | jq -r '.[0].tag_name')"
bench_version="$(wget --quiet --output-document=- "https://api.github.com/repos/frappe/bench/releases?per_page=1" | jq --raw-output '.[0].tag_name')"
fi
if [ -z "$erpnext_version" ]; then
erpnext_version="$(wget -q -O- "https://api.github.com/repos/frappe/erpnext/releases?per_page=1" | jq -r '.[0].tag_name')"
erpnext_version="$(wget --quiet --output-document=- "https://api.github.com/repos/frappe/erpnext/releases?per_page=1" | jq --raw-output '.[0].tag_name')"
fi
if [ -z "$frappe_version" ]; then
frappe_version="$(wget -q -O- "https://api.github.com/repos/frappe/frappe/releases?per_page=1" | jq -r '.[0].tag_name')"
frappe_version="$(wget --quiet --output-document=- "https://api.github.com/repos/frappe/frappe/releases?per_page=1" | jq --raw-output '.[0].tag_name')"
fi
# strip leading "v"
@ -29,32 +29,38 @@ erpnext_version="${erpnext_version#v}"
frappe_version="${frappe_version#v}"
# Bench
bench_src_hash=$(nix-prefetch-github frappe bench --rev "v${bench_version}" | jq -r .sha256)
echo "Prefetching bench source version $bench_version from GitHub ..."
bench_src_hash=$(nix-prefetch-github frappe bench --rev "v${bench_version}" | jq --raw-output .hash)
# Erpnext
echo "Prefetching erpnext source version $erpnext_version from GitHub ..."
erpnext_src="https://raw.githubusercontent.com/frappe/erpnext/v$erpnext_version"
erpnext_src_hash="$(nix-prefetch-github frappe erpnext --rev "v${erpnext_version}" | jq -r .sha256)"
erpnext_src_hash="$(nix-prefetch-github frappe erpnext --rev "v${erpnext_version}" | jq --raw-output .hash)"
erpnext_tmpdir=$(mktemp -d)
erpnext_tmpdir=$(mktemp --directory)
trap 'rm -rf "$erpnext_tmpdir"' EXIT
pushd "$erpnext_tmpdir"
wget -q "$erpnext_src/yarn.lock"
pushd "$erpnext_tmpdir" &> /dev/null
wget --quiet "$erpnext_src/yarn.lock"
echo "Prefetching erpnext yarn dependencies ..."
erpnext_yarn_hash=$(prefetch-yarn-deps yarn.lock)
popd
popd &> /dev/null
# Frappe
echo "Prefetching frappe source version $frappe_version from GitHub ..."
frappe_src="https://raw.githubusercontent.com/frappe/frappe/v$frappe_version"
frappe_src_hash="$(nix-prefetch-github frappe frappe --rev "v${frappe_version}" | jq -r .sha256)"
frappe_src_hash="$(nix-prefetch-github frappe frappe --rev "v${frappe_version}" | jq --raw-output .hash)"
frappe_tmpdir=$(mktemp -d)
frappe_tmpdir=$(mktemp --directory)
trap 'rm -rf "$frappe_tmpdir"' EXIT
pushd "$frappe_tmpdir"
wget -q "$frappe_src/yarn.lock"
pushd "$frappe_tmpdir" &> /dev/null
wget --quiet "$frappe_src/yarn.lock"
echo "Prefetching frappe yarn dependencies ..."
frappe_yarn_hash=$(prefetch-yarn-deps yarn.lock)
popd
popd &> /dev/null
echo "Saving updated versions and hashes to pin.nix file ..."
cat > pin.nix << EOF
{
benchVersion = "$bench_version";

View File

@ -1,73 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../../../ -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github
if [ "$#" -gt 1 ] || [[ "$1" == -* ]]; then
echo "Regenerates packaging data for the ERPNext packages."
echo "Usage: $0 [git bench release tag] $1 [git erpnext release tag] $2 [git frappe release tag]"
exit 1
fi
bench_version="$1"
erpnext_version="$3"
frappe_version="$2"
set -euo pipefail
if [ -z "$bench_version" ]; then
bench_version="$(wget -q -O- "https://api.github.com/repos/frappe/bench/releases?per_page=1" | jq -r '.[0].tag_name')"
fi
if [ -z "$erpnext_version" ]; then
erpnext_version="$(wget -q -O- "https://api.github.com/repos/frappe/erpnext/releases?per_page=1" | jq -r '.[0].tag_name')"
fi
if [ -z "$frappe_version" ]; then
frappe_version="$(wget -q -O- "https://api.github.com/repos/frappe/frappe/releases?per_page=1" | jq -r '.[0].tag_name')"
fi
# strip leading "v"
bench_version="${bench_version#v}"
erpnext_version="${erpnext_version#v}"
frappe_version="${frappe_version#v}"
# Bench
bench_src_hash=$(nix-prefetch-github frappe bench --rev "v${bench_version}" | jq -r .sha256)
popd
# Erpnext
erpnext_src="https://raw.githubusercontent.com/frappe/erpnext/v$erpnext_version"
erpnext_src_hash="$(nix-prefetch-github frappe erpnext --rev "v${erpnext_version}" | jq -r .sha256)"
erpnext_tmpdir=$(mktemp -d)
trap 'rm -rf "$erpnext_tmpdir"' EXIT
pushd "$erpnext_tmpdir"
wget -q "$erpnext_src/yarn.lock"
erpnext_yarn_hash=$(prefetch-yarn-deps yarn.lock)
popd
# Frappe
frappe_src="https://raw.githubusercontent.com/frappe/frappe/v$frappe_version"
frappe_src_hash="$(nix-prefetch-github frappe frappe --rev "v${frappe_version}" | jq -r .sha256)"
frappe_tmpdir=$(mktemp -d)
trap 'rm -rf "$frappe_tmpdir"' EXIT
pushd "$frappe_tmpdir"
wget -q "$frappe_src/yarn.lock"
frappe_yarn_hash=$(prefetch-yarn-deps yarn.lock)
popd
cat > pin.nix << EOF
{
benchVersion = "$bench_version";
erpnextVersion = "$erpnext_version";
frappeVersion = "$frappe_version";
hashes = {
"benchSrcHash" = "$bench_src_hash";
"erpnextSrcHash" = "$erpnext_src_hash";
"erpnextYarnHash" = "$erpnext_yarn_hash";
"frappeSrcHash" = "$frappe_src_hash";
"frappeYarnHash" = "$frappe_yarn_hash";
};
}
EOF