diff --git a/configs/hu-berlin.nix b/configs/hu-berlin.nix index 35f6e1f..2614fa6 100644 --- a/configs/hu-berlin.nix +++ b/configs/hu-berlin.nix @@ -1,6 +1,7 @@ -{ pkgs, lib, ... }: +{ config, pkgs, lib, ... }: let inherit (lib.strings) fileContents; + inherit (import ) sshPort; eduroam = { identity = fileContents ; password = fileContents ; @@ -28,7 +29,33 @@ in { eduroam.auth = eduroamAuth; }; + fileSystems."/mnt/moodle" = { + device = "moodle@toum.r:/var/lib/moodle"; + fsType = "fuse.sshfs"; + options = [ + "allow_other" + "default_permissions" + "gid=100" + "uid=1000" + "IdentityFile=/root/.ssh/id_rsa" + "Port=${toString sshPort}" + "idmap=user" + "noauto" + "nofail" + "reconnect" + "ro" + "x-systemd.automount" + "x-systemd.requires=network.target" + "x-systemd.idle-timeout=1min" + "x-systemd.device-timeout=1s" + "x-systemd.mount-timeout=1s" + ]; + }; + + environment.systemPackages = [ + pkgs.sshfsFuse + (pkgs.writers.writeDashBin "hu-vpn" '' ${pkgs.openfortivpn}/bin/openfortivpn -p "${eduroam.password}" -c ${pkgs.writeText "hu-berlin.config" '' host = forti-ssl.vpn.hu-berlin.de diff --git a/configs/moodle-dl.nix b/configs/moodle-dl.nix new file mode 100644 index 0000000..28f4989 --- /dev/null +++ b/configs/moodle-dl.nix @@ -0,0 +1,58 @@ +{ 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 + ]; + download_submissions = true; + download_descriptions = false; + download_links_in_descriptions = false; + download_databases = false; + download_forums = false; + download_linked_files = false; + download_also_with_cookie = false; + }; + + moodle-dl-json = pkgs.writeText "moodle-dl.json" (builtins.toJSON moodle-dl-config); +in +{ + users.extraUsers.moodle = { + isNormalUser = false; + home = "/var/lib/moodle"; + 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" + ]; + useDefaultShell = true; + }; + + system.activationScripts.moodle-dl-config = "ln -sfn ${toString moodle-dl-json} ${config.users.extraUsers.moodle.home}/config.json"; + + 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/configs/ssh.nix b/configs/ssh.nix index 7b495ff..b039faf 100644 --- a/configs/ssh.nix +++ b/configs/ssh.nix @@ -1,16 +1,12 @@ { pkgs, config, lib, ... }: let - inherit (import ) sshPort; - kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl { - url = "https://github.com/kmein.keys"; - sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx"; - })); + inherit (import ) sshPort kieran; in { services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add"; programs.ssh.startAgent = true; - users.users.me.openssh.authorizedKeys.keys = kmeinKeys; + users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs; home-manager.users.me.programs.ssh = { enable = true; diff --git a/configs/sshd.nix b/configs/sshd.nix index 8fbeff3..32730e2 100644 --- a/configs/sshd.nix +++ b/configs/sshd.nix @@ -1,10 +1,6 @@ { config, lib, pkgs, ... }: let - inherit (import ) sshPort; - kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl { - url = "https://github.com/kmein.keys"; - sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx"; - })); + inherit (import ) sshPort kieran; in { users.motd = "Welcome to ${config.networking.hostName}!"; @@ -16,5 +12,5 @@ in forwardX11 = true; }; - users.users.root.openssh.authorizedKeys.keys = kmeinKeys; + users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs; } diff --git a/lib/default.nix b/lib/default.nix index f7b94e0..d25c7fb 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -31,6 +31,10 @@ github = "kmein"; email = "kmein@posteo.de"; name = "KierĂ¡n Meinhardt"; + sshKeys = pkgs: pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl { + url = "https://github.com/kmein.keys"; + sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx"; + })); }; ignorePaths = [ diff --git a/packages/moodle-dl/default.nix b/packages/moodle-dl/default.nix new file mode 100644 index 0000000..4c402d8 --- /dev/null +++ b/packages/moodle-dl/default.nix @@ -0,0 +1,32 @@ +{ 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 + ]; + + 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 new file mode 100644 index 0000000..f8acd42 --- /dev/null +++ b/packages/moodle-dl/readchar-version.patch @@ -0,0 +1,13 @@ +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/systems/toum/configuration.nix b/systems/toum/configuration.nix index ebbbb88..47baae3 100644 --- a/systems/toum/configuration.nix +++ b/systems/toum/configuration.nix @@ -1,18 +1,15 @@ { config, pkgs, lib, ... }: let - kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl { - url = "https://github.com/kmein.keys"; - sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx"; - })); + inherit (import ) kieran; in { imports = [ ./hardware-configuration.nix ./hass ./telegram-bots - + @@ -72,7 +69,7 @@ in { hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/"; shell = pkgs.bash; - openssh.authorizedKeys.keys = kmeinKeys; + openssh.authorizedKeys.keys = kieran.sshKeys pkgs; }; security.sudo.enable = true; diff --git a/systems/zaatar/configuration.nix b/systems/zaatar/configuration.nix index 674632a..6a3b2e1 100644 --- a/systems/zaatar/configuration.nix +++ b/systems/zaatar/configuration.nix @@ -1,19 +1,14 @@ { config, pkgs, lib, ... }: -let - kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl { - url = "https://github.com/kmein.keys"; - sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx"; - })); -in { +{ imports = [ ./hardware-configuration.nix - + { sound.enable = true;