1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00

feat: run moodle-dl on toum, sshfs from wilde

This commit is contained in:
2020-10-31 20:52:10 +01:00
parent 77e97e84a9
commit 96f5d750ef
9 changed files with 144 additions and 26 deletions

View File

@@ -1,6 +1,7 @@
{ pkgs, lib, ... }:
{ config, pkgs, lib, ... }:
let
inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort;
eduroam = {
identity = fileContents <secrets/eduroam/identity>;
password = fileContents <secrets/eduroam/password>;
@@ -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

58
configs/moodle-dl.nix Normal file
View File

@@ -0,0 +1,58 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
moodle-dl = pkgs.callPackage <niveum/packages/moodle-dl> {};
moodle-dl-config = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "18980945";
send_error_msg = true;
};
token = lib.strings.fileContents <system-secrets/moodle.token>;
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";
};
}

View File

@@ -1,16 +1,12 @@
{ pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) sshPort;
kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys";
sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx";
}));
inherit (import <niveum/lib>) 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;

View File

@@ -1,10 +1,6 @@
{ config, lib, pkgs, ... }:
let
inherit (import <niveum/lib>) sshPort;
kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys";
sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx";
}));
inherit (import <niveum/lib>) 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;
}

View File

@@ -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 = [

View File

@@ -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;
};
}

View File

@@ -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',

View File

@@ -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 <niveum/lib>) kieran;
in {
imports = [
./hardware-configuration.nix
./hass
./telegram-bots
<niveum/configs/distrobump.nix>
<niveum/configs/nextcloud.nix>
<niveum/configs/spacetime.nix>
<niveum/configs/sshd.nix>
<niveum/configs/moodle-dl.nix>
<niveum/configs/save-space.nix>
<niveum/configs/wifi.nix>
<niveum/configs/tmux.nix>
@@ -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;

View File

@@ -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
<niveum/configs/wifi.nix>
<niveum/configs/keyboard.nix>
<niveum/modules/retiolum.nix>
<niveum/modules/constants.nix>
<niveum/configs/spacetime.nix>
<niveum/configs/mpd.nix>
<niveum/configs/sshd.nix>
<niveum/configs/version.nix>
<niveum/configs/spotifyd.nix>
{
sound.enable = true;