diff --git a/configs/moodle-dl.nix b/configs/moodle-dl.nix index ed1a13f..a0f59f5 100644 --- a/configs/moodle-dl.nix +++ b/configs/moodle-dl.nix @@ -1,59 +1,54 @@ { config, pkgs, lib, ... }: let - inherit (import ) kieran; - - moodle-dl = pkgs.callPackage {}; - - moodle-dl-config = { - telegram = { - token = lib.strings.fileContents ; - chat_id = "18980945"; - send_error_msg = true; - }; - token = lib.strings.fileContents ; - moodle_domain = "moodle.hu-berlin.de"; - moodle_path = "/"; - download_course_ids = [ - 99881 # Dialektologie - 100183 # Onomastik - 100353 # Sanskrit I - 100692 # Sanskrit Tutorium - 99832 # Germanisch - 99823 # Gotisch - 99813 # Altalbanisch - 98681 # Geistliche Lyrik von Luther bis Lehnert - 99667 # Antike Mythologie - # 52365 # FSR KlassPhil - ]; - download_submissions = true; - download_descriptions = true; - download_links_in_descriptions = false; - download_databases = false; - download_forums = false; - download_linked_files = false; - download_also_with_cookie = false; + nixpkgs-kmein = builtins.fetchGit { + url = "https://github.com/kmein/nixpkgs"; + ref = "refs/heads/feature/moodle-dl-module"; + rev = "98ec084fe4dd9608769d592318d211dff3d32d86"; }; - moodle-dl-json = pkgs.writeText "moodle-dl.json" (builtins.toJSON moodle-dl-config); - - moodle-dl-directory = "/var/lib/moodle"; + moodle-dl-package = (import nixpkgs-kmein {}).moodle-dl.overrideAttrs (old: old // { + patches = old.patches ++ [ ]; + }); in { - users.extraUsers.moodle = { - isNormalUser = false; - home = moodle-dl-directory; - createHome = true; - openssh.authorizedKeys.keys = [ - # for sshfs mount - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtIFmbspaBHaSkLEx43V0uaVd7l9NUFiwt2VOP++KzLjvRMLkyF2hg2HjmogTjUvTyoDs7RHwEH/cHZlJ5JQkM1jRqQpnYwGfkZEwYvmXAl6LY9+vQMP36gNPfXmKX3y3LelO7oD2uhUs0guTtg0tHUyN5/UY5u+VinyD6djxDkHaCUn3S7CS/odBcs/4flXT654wsvzgYicnSKH9R4W+7C0YsckZ/NoIkA4jnuwtWZYWrUkxd4/290buX6pAc5+zVVZqyy0sI4i8s6pO9RL5W7xvYt+w+U0u0dMxm5ckiRmLVKfIbMN4YtDxsZbZDajlQ1nDbOsEsrSXWz4H4cSNot7J820x1qh5SSxL4GSQlcT+6xCFk9kKyflxoS3oLoPLttx3rmOMkZKJWxF/IKLW47orxV6wkG5mHxdeR3cf6jX4j3nkwFVyC9R+WG4w2Z4vKONVE7uWGYU3y4OpR1e6MGHVShkNKqEvC/Kjcc/6v7I7AKRAuPZB0WEw36tA65/8= root@wilde" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFPHt+FPQ6gq8Ev65YsBZrafdtpWGpCNnlVvy67S1BK root@manakish" - ]; - useDefaultShell = true; + imports = [ "${nixpkgs-kmein}/nixos/modules/services/networking/moodle-dl.nix" ]; + + services.moodle-dl = { + enable = true; + startAt = "hourly"; + package = moodle-dl-package; + config = { + telegram = { + token = lib.strings.fileContents ; + chat_id = "18980945"; + send_error_msg = true; + }; + token = lib.strings.fileContents ; + moodle_domain = "moodle.hu-berlin.de"; + moodle_path = "/"; + download_course_ids = [ + 99881 # Dialektologie + 100183 # Onomastik + 100353 # Sanskrit I + 100692 # Sanskrit Tutorium + 99832 # Germanisch + 99823 # Gotisch + 99813 # Altalbanisch + 98681 # Geistliche Lyrik von Luther bis Lehnert + 99667 # Antike Mythologie + # 52365 # FSR KlassPhil + ]; + download_submissions = true; + download_descriptions = true; + download_links_in_descriptions = false; + download_databases = false; + download_forums = false; + download_linked_files = false; + download_also_with_cookie = false; + }; }; - system.activationScripts.moodle-dl-config = "ln -sfn ${toString moodle-dl-json} ${config.users.extraUsers.moodle.home}/config.json"; - - services.syncthing = { + services.syncthing = let moodle-dl-directory = config.services.moodle-dl.directory; in { enable = true; user = "moodle"; # config.users.extraUsers.moodle.name; openDefaultPorts = true; @@ -71,16 +66,4 @@ in }; }; }; - - systemd.services.moodle-dl = { - enable = true; - startAt = "hourly"; - serviceConfig = { - Type = "oneshot"; - User = config.users.extraUsers.moodle.name; - WorkingDirectory = config.users.extraUsers.moodle.home; - }; - wants = [ "network-online.target" ]; - script = "${moodle-dl}/bin/moodle-dl"; - }; } diff --git a/packages/moodle-dl/default.nix b/packages/moodle-dl/default.nix deleted file mode 100644 index a2996e7..0000000 --- a/packages/moodle-dl/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ stdenv, lib, python3Packages }: -python3Packages.buildPythonApplication rec { - pname = "moodle-dl"; - version = "2.1.1.1"; - - src = python3Packages.fetchPypi { - inherit pname version; - sha256 = "0nv2gm4x6mfsa0wywm4xbsx6nf6hx4kb63s4lczaxb9m4ybjd45h"; - }; - - patches = [ - ./readchar-version.patch - ./telegram-format.patch - ]; - - propagatedBuildInputs = with python3Packages; [ - sentry-sdk - colorama - readchar - youtube-dl - certifi - html2text - requests - ]; - - meta = with stdenv.lib; { - homepage = "https://github.com/C0D3D3V/Moodle-Downloader-2"; - maintainers = [ maintainers.kmein ]; - description = "A Moodle downloader that downloads course content fast from Moodle"; - license = licenses.gpl3; - platforms = platforms.all; - }; -} diff --git a/packages/moodle-dl/readchar-version.patch b/packages/moodle-dl/readchar-version.patch deleted file mode 100644 index f8acd42..0000000 --- a/packages/moodle-dl/readchar-version.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/setup.py b/setup.py -index 180139d..5582359 100644 ---- a/setup.py -+++ b/setup.py -@@ -32,7 +32,7 @@ setup( - install_requires=[ - 'sentry_sdk>=0.13.5', - 'colorama>=0.4.3', -- 'readchar>=2.0.1', -+ 'readchar>=2.0.0', - 'youtube_dl>=2020.9.20', - 'certifi>=2020.4.5.2', - 'html2text>=2020.1.16', diff --git a/packages/moodle-dl/telegram-format.patch b/packages/moodle-dl/telegram-format.patch index 3a5fe8c..5e090ed 100644 --- a/packages/moodle-dl/telegram-format.patch +++ b/packages/moodle-dl/telegram-format.patch @@ -1,8 +1,8 @@ diff --git a/moodle_dl/notification_services/telegram/telegram_formater.py b/moodle_dl/notification_services/telegram/telegram_formater.py -index 05180b6..33009b0 100644 +index 470ff32..9ff1fa4 100644 --- a/moodle_dl/notification_services/telegram/telegram_formater.py +++ b/moodle_dl/notification_services/telegram/telegram_formater.py -@@ -15,10 +15,10 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]: +@@ -37,24 +37,24 @@ def create_full_moodle_diff_messages(changed_courses: [Course]) -> [str]: diff_count += len(course.files) result_list = [] @@ -10,36 +10,27 @@ index 05180b6..33009b0 100644 + one_msg_content = "%s changes in Moodle!" % (diff_count) for course in changed_courses: -- new_line = '\r\n\r\n\r\n> ' + course.fullname + '\r\n' +- new_line = '\r\n\r\n\r\n> **' + course.fullname + '**\r\n' + new_line = "\r\n\r\n" + course.fullname + "" - if len(one_msg_content) + len(new_line) >= 4096: - result_list.append(one_msg_content) - one_msg_content = new_line -@@ -27,16 +27,16 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]: + one_msg_content = append_with_limit(new_line, one_msg_content, result_list) for file in course.files: if file.modified: -- new_line = '\r\n* Modified: ' + file.saved_to +- new_line = '\r\n__* Modified:__ ' + file.saved_to + new_line = "\r\nāœļø " + file.saved_to elif file.moved: if file.new_file is not None: -- new_line = '\r\n* Moved: ' + file.new_file.saved_to +- new_line = '\r\n__* Moved:__ ' + file.new_file.saved_to + new_line = "\r\nšŸ“‚ " + file.new_file.saved_to else: -- new_line = '\r\n* Moved: ' + file.saved_to +- new_line = '\r\n__* Moved:__ ' + file.saved_to + new_line = "\r\nšŸ“‚ " + file.saved_to elif file.deleted: -- new_line = '\r\n- Deleted: ' + file.saved_to +- new_line = '\r\n__- Deleted:__ ' + file.saved_to + new_line = "\r\nšŸ—‘ļø " + file.saved_to else: -- new_line = '\r\n+ Added: ' + file.saved_to +- new_line = '\r\n__+ Added:__ ' + file.saved_to + new_line = "\r\nšŸŽ‰ " + file.saved_to - if len(one_msg_content) + len(new_line) >= 4096: - result_list.append(one_msg_content) -@@ -52,4 +52,4 @@ def create_full_error_message(details) -> (str, {str: str}): - """ - Creates an error message - """ -- return 'The following error occurred during execution:' + details -+ return "The following error occurred during execution:" + details + one_msg_content = append_with_limit(new_line, one_msg_content, result_list) +