From 344279495a87cea13e92688ca27925d2d845899b Mon Sep 17 00:00:00 2001 From: vi <noreply@example.org> Date: Tue, 25 Mar 2014 02:55:25 +0800 Subject: [PATCH 1/5] Add Mnemosyne 2.2.1. The Mnemosyne Project has two aspects: * It's a free flash-card tool which optimizes your learning process. * It's a research project into the nature of long-term memory. We strive to provide a clear, uncluttered piece of software, easy to use and to understand for newbies, but still infinitely customisable through plugins and scripts for power users. Mnemosyne uses a sophisticated algorithm to schedule the best time for a card to come up for review. Difficult cards that you tend to forget quickly will be scheduled more often, while Mnemosyne won't waste your time on things you remember well. If you want, anonymous statistics on your learning process can be uploaded to a central server for analysis. This data will be valuable to study the behaviour of our memory over a very long time period. The results will be used to improve the scheduling algorithms behind the software even further. --- pkgs/games/mnemosyne/default.nix | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pkgs/games/mnemosyne/default.nix diff --git a/pkgs/games/mnemosyne/default.nix b/pkgs/games/mnemosyne/default.nix new file mode 100644 index 000000000000..3598cca04618 --- /dev/null +++ b/pkgs/games/mnemosyne/default.nix @@ -0,0 +1,51 @@ +{stdenv, fetchurl, pythonPackages}: +let + version = "2.2.1"; + inherit (pythonPackages) pyqt4 matplotlib cherrypy sqlite3; +in pythonPackages.buildPythonPackage rec { + name = "mnemosyne-${version}"; + src = fetchurl { + url = "http://sourceforge.net/projects/mnemosyne-proj/files/mnemosyne/${name}/Mnemosyne-${version}.tar.gz"; + sha256 = "7f5dd06a879b9ab059592355412182ee286e78e124aa25d588cacf9e4ab7c423"; + }; + pythonPath = [ + pyqt4 + matplotlib + cherrypy + sqlite3 + ]; + preConfigure = '' + substituteInPlace setup.py --replace /usr $out + substituteInPlace setup.py --replace sys.exec_prefix \"$out\" + ''; + installCommand = "python setup.py install --prefix=$out"; + meta = { + homepage = "http://mnemosyne-proj.org/"; + description = "Spaced-repetition software."; + longDescription = '' + The Mnemosyne Project has two aspects: + + * It's a free flash-card tool which optimizes your learning process. + * It's a research project into the nature of long-term memory. + + We strive to provide a clear, uncluttered piece of software, easy to use + and to understand for newbies, but still infinitely customisable through + plugins and scripts for power users. + + ## Efficient learning + + Mnemosyne uses a sophisticated algorithm to schedule the best time for + a card to come up for review. Difficult cards that you tend to forget + quickly will be scheduled more often, while Mnemosyne won't waste your + time on things you remember well. + + ## Memory research + + If you want, anonymous statistics on your learning process can be + uploaded to a central server for analysis. This data will be valuable to + study the behaviour of our memory over a very long time period. The + results will be used to improve the scheduling algorithms behind the + software even further. + ''; + }; +} From ed7c31187645cf4ac6cb0673fd43a8f0d4798791 Mon Sep 17 00:00:00 2001 From: vi <noreply@example.org> Date: Tue, 25 Mar 2014 02:58:21 +0800 Subject: [PATCH 2/5] Include Mnemosyne in nix packages collection. --- pkgs/top-level/all-packages.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7e81a39ec083..7578553f68b0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9576,6 +9576,8 @@ let mars = callPackage ../games/mars { }; micropolis = callPackage ../games/micropolis { }; + + mnemosyne = callPackage ../games/mnemosyne { }; naev = callPackage ../games/naev { }; From 5149f278aa61cb52fa65d39cc383c1c7d8e4360d Mon Sep 17 00:00:00 2001 From: vi <noreply@example.org> Date: Tue, 25 Mar 2014 03:28:19 +0800 Subject: [PATCH 3/5] Patch *all* references to `sys.exec_prefix`. --- pkgs/games/mnemosyne/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/games/mnemosyne/default.nix b/pkgs/games/mnemosyne/default.nix index 3598cca04618..f55a7efe9643 100644 --- a/pkgs/games/mnemosyne/default.nix +++ b/pkgs/games/mnemosyne/default.nix @@ -16,7 +16,7 @@ in pythonPackages.buildPythonPackage rec { ]; preConfigure = '' substituteInPlace setup.py --replace /usr $out - substituteInPlace setup.py --replace sys.exec_prefix \"$out\" + find . -type f -exec grep -H sys.exec_prefix {} ';' | cut -d: -f1 | xargs sed -i s,sys.exec_prefix,\"$out\", ''; installCommand = "python setup.py install --prefix=$out"; meta = { From ed63dcb7c7f84d6bd67d980c0d731782bead7ee7 Mon Sep 17 00:00:00 2001 From: vi <noreply@example.org> Date: Wed, 26 Mar 2014 00:05:34 +0800 Subject: [PATCH 4/5] Have Mnemosyne take pkgs, rather than pythonPackages as argument. --- pkgs/games/mnemosyne/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/games/mnemosyne/default.nix b/pkgs/games/mnemosyne/default.nix index f55a7efe9643..44f2d229fbe2 100644 --- a/pkgs/games/mnemosyne/default.nix +++ b/pkgs/games/mnemosyne/default.nix @@ -1,8 +1,8 @@ -{stdenv, fetchurl, pythonPackages}: +{stdenv, fetchurl, pkgs}: let version = "2.2.1"; - inherit (pythonPackages) pyqt4 matplotlib cherrypy sqlite3; -in pythonPackages.buildPythonPackage rec { + inherit (pkgs.pythonPackages) buildPythonPackage pyqt4 matplotlib cherrypy sqlite3; +in buildPythonPackage rec { name = "mnemosyne-${version}"; src = fetchurl { url = "http://sourceforge.net/projects/mnemosyne-proj/files/mnemosyne/${name}/Mnemosyne-${version}.tar.gz"; From b5acc84ff3c74909d3b2a28becbb70a37102ceae Mon Sep 17 00:00:00 2001 From: vi <noreply@example.org> Date: Wed, 26 Mar 2014 00:37:05 +0800 Subject: [PATCH 5/5] Mnemosyne: provide capacity to override dependencies at the fidelity of a Python package. --- pkgs/games/mnemosyne/default.nix | 10 ++++++++-- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pkgs/games/mnemosyne/default.nix b/pkgs/games/mnemosyne/default.nix index 44f2d229fbe2..1d23640ce8b1 100644 --- a/pkgs/games/mnemosyne/default.nix +++ b/pkgs/games/mnemosyne/default.nix @@ -1,7 +1,13 @@ -{stdenv, fetchurl, pkgs}: +{ stdenv +, fetchurl +, buildPythonPackage +, pyqt4 +, matplotlib +, cherrypy +, sqlite3 +}: let version = "2.2.1"; - inherit (pkgs.pythonPackages) buildPythonPackage pyqt4 matplotlib cherrypy sqlite3; in buildPythonPackage rec { name = "mnemosyne-${version}"; src = fetchurl { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7578553f68b0..a35721097bba 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9577,7 +9577,9 @@ let micropolis = callPackage ../games/micropolis { }; - mnemosyne = callPackage ../games/mnemosyne { }; + mnemosyne = callPackage ../games/mnemosyne { + inherit (pythonPackages) matplotlib cherrypy sqlite3; + }; naev = callPackage ../games/naev { };