summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSilas Schöffel <sils@sils.li>2025-01-25 21:42:22 +0100
committerSilas Schöffel <sils@sils.li>2025-01-25 21:43:25 +0100
commit51085ef8f8fd4a8c8ef7fe0890ddcdc22433a94c (patch)
treee368d5511228faecafcffbfcdad6187fa8a7bbab
parentfeat(hosts)!: remove server1 (diff)
downloadnixos-server-51085ef8f8fd4a8c8ef7fe0890ddcdc22433a94c.zip
feat(system): remove
This only contains unused and unwanted services
-rw-r--r--secrets.nix4
-rw-r--r--system/default.nix7
-rw-r--r--system/packages/default.nix10
-rw-r--r--system/secrets/default.nix24
-rw-r--r--system/secrets/invidious/hmac.age15
-rw-r--r--system/secrets/taskserver/ca.age449
-rw-r--r--system/secrets/taskserver/systemd_tmpfiles.age18
-rw-r--r--system/services/default.nix7
-rw-r--r--system/services/invidious/default.nix52
-rw-r--r--system/services/minecraft/default.nix37
-rw-r--r--system/services/taskserver/certs/README.md42
-rw-r--r--system/services/taskserver/certs/ca.cert.pem83
-rw-r--r--system/services/taskserver/certs/ca.key.pem.gpgbin13506 -> 0 bytes
-rwxr-xr-xsystem/services/taskserver/certs/check_expire13
-rwxr-xr-xsystem/services/taskserver/certs/generate75
-rwxr-xr-xsystem/services/taskserver/certs/generate.ca43
-rwxr-xr-xsystem/services/taskserver/certs/generate.client54
-rwxr-xr-xsystem/services/taskserver/certs/generate.crl42
-rw-r--r--system/services/taskserver/certs/isrgrootx1.pem31
-rw-r--r--system/services/taskserver/certs/vars7
-rw-r--r--system/services/taskserver/default.nix56
-rw-r--r--system/services/taskserver/organisations.nix14
22 files changed, 0 insertions, 1083 deletions
diff --git a/secrets.nix b/secrets.nix
index 635208a..30e910a 100644
--- a/secrets.nix
+++ b/secrets.nix
@@ -36,8 +36,4 @@ in {
 
   "./hosts/by-name/server3/secrets/backuppass.age".publicKeys = server3;
   "./hosts/by-name/server3/secrets/backupssh.age".publicKeys = server3;
-
-  "./system/secrets/invidious/hmac.age".publicKeys = server1;
-  "./system/secrets/taskserver/ca.age".publicKeys = server1;
-  "./system/secrets/taskserver/systemd_tmpfiles.age".publicKeys = server1;
 }
diff --git a/system/default.nix b/system/default.nix
deleted file mode 100644
index 9fdd937..0000000
--- a/system/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{...}: {
-  imports = [
-    ./packages
-    ./secrets
-    ./services
-  ];
-}
diff --git a/system/packages/default.nix b/system/packages/default.nix
deleted file mode 100644
index 12e4c93..0000000
--- a/system/packages/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{pkgs, ...}: {
-  environment.systemPackages = with pkgs; [
-    jre_minimal
-    git
-    zsh
-    neovim
-    btrfs-progs
-  ];
-  programs.zsh.enable = true;
-}
diff --git a/system/secrets/default.nix b/system/secrets/default.nix
deleted file mode 100644
index 7100eff..0000000
--- a/system/secrets/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{...}: {
-  age = {
-    secrets = {
-      invidiousHmac = {
-        file = ./invidious/hmac.age;
-        mode = "700";
-        owner = "root";
-        group = "root";
-      };
-      taskserverCaKey = {
-        file = ./taskserver/ca.age;
-        mode = "700";
-        owner = "root";
-        group = "root";
-      };
-      taskserverSystemdTmpfiles = {
-        file = ./taskserver/systemd_tmpfiles.age;
-        mode = "700";
-        owner = "root";
-        group = "root";
-      };
-    };
-  };
-}
diff --git a/system/secrets/invidious/hmac.age b/system/secrets/invidious/hmac.age
deleted file mode 100644
index b22b112..0000000
--- a/system/secrets/invidious/hmac.age
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMEh4dnNrVnV1NEVZdWhl
-RG1GbG5GMmRaVEl2Y3lvQ0w5RHV2bEZlajJVCnp1Y25ESE5wbStreUhXMDBHQnl0
-YUR0YU9aR0xaOGV0dTRicXpRYnliQncKLT4gWDI1NTE5IDBvbElycjR0cWc2ejBH
-cFpjU0NQTEZZeklHTUlLeEppemhHKzBaT3lWVm8KU1NXcU93cFNuMWNtakF5VDdN
-ckhYN0lUUmtiS0xoVnBiZXN1VStRSllMWQotPiBzc2gtZWQyNTUxOSBPRDhUNGcg
-OUxDMnB2UmVkZmxlY0xkc3JtK3ZwVXNIZFU1dlJGNlVkQ1YwbitUQ2NuYwpNd3c2
-cmpKSUc0bklYaDNaN0FJdWhWZW56ZmZDQXp1VFJnTjVhZit4bGR3Ci0+IEtLcl1w
-US1ncmVhc2UKZmhOUHF3TVBlaFRvMUNCcll6aUNqYkVCRUtvUXZpcnltRUJmQ0Fr
-MFd3TG5vcm9CUG1KN05kU3RlZEZNVTF2RAo2UkdOcWtFZWR5TEMvL1pEeG1tUU5C
-Nkg3TGdJYTlCcVhXVU9BWk92MkY4WlBDVTRadHBlUDRRRityWm9WblNQCjZ3Ci0t
-LSBEQmJNTnd2TWNZWTRUMUlFSlJNNFlZbVZrcjBTTmVMVXYzMm1aMWptNnZnCt7Y
-2+m12YPqEPRwxthDKtIIxBV15UzOkv1z6xP7zEhCh0JSZVDi6oZsJmHFlLvGhCz7
-azX2l7a4gBzQyBqF/dDurz5Jesyz8g==
------END AGE ENCRYPTED FILE-----
diff --git a/system/secrets/taskserver/ca.age b/system/secrets/taskserver/ca.age
deleted file mode 100644
index b00663c..0000000
--- a/system/secrets/taskserver/ca.age
+++ /dev/null
@@ -1,449 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLcC9JVmlQeHA5Z2xtOWN2
-M3JQWldnbVVyRldnYzEyM1l2VmcvWFY1Sm5FClArdi9VY3ZCZTBnS3QyVlBsRHQ0
-NTZoTThlSmZ3eVdXdi9NZFNYOGR1cjAKLT4gWDI1NTE5IHV0aTJncDBPMDU1NDUx
-TXdNY2E3dHNxTlh2dEFscko2dTd6N3FGbDEyU2MKSXhFMTJaVW9HQjNvdmVJZDlX
-MUp5K1ZUK1BFQjA2QllwUEZPUjVvZFIrcwotPiBzc2gtZWQyNTUxOSBPRDhUNGcg
-RVdveGhxN05VT1FtNEE5ZDVQZ2FZTXJZWFk1Nm53VDRxUkdGMEpxYUExSQpjZmph
-T1ZlYjl5ZUw1WTBCQ1lmRndKTUxBZko3ZUZQbjhBNEszZWxLY2VJCi0+IGsuLWdy
-ZWFzZSBteTksQzVRID1NMXhJIDUhLHZEY10gRTZ+JwpjNTNabFBWZlM0RitXN3ZF
-Y05uaXJ0NGZKL3hpNllQbkRKYlVTZXl5cHRRWVA3b0FKS1M3QkhtME9zOFNOM240
-Cnl0N00xdkFlVkEyQ1c3ZnpvSytVVnVROVdOMAotLS0gRTVCaml6NU9XUFc0N2pZ
-cTEwaGxpOXJabUhoNzNWK2RWWTlzaFE3WlJvWQpQQ0gz0GV9EAr/qh6M8RSpVVYW
-fmaTaWonC3Vsto0yh8e17aihc7bI8SbYeVXFB5e0MRw5i0EAW9AdwlzOzZ1n1VML
-gOihcPKkH5LbOTx6cnoKfE23d22ZQkERyOrLSiHHnfEySiYemm8DUliXdY82keQf
-JUr8MM73CIIWnFgQh8MmKa3Xi4BdL56gz4qtAIPJr+EwITAD2QWI60rIc4ZgCJ72
-HmYJuftsdfptFuE140dedgMhNZI4PfI3aWaVcEmLhMXzuhBZGI7mjn3a+nHthO5o
-gzpFKu/diOeLNkPHfg+GrCHTHQk8Tyr36fNTrolc9YX7lmwTOPTtPrcjui2/8+V6
-rkMMC3Tus0ha+Bnu5GQsmXqtAyf+RLavgqDlMYmgkbz4WGLSdftIkwUR5bokYueF
-9HxDqqwLlH5Xehwhd6uL3ci8Q+vZTV2hqn6Fv1l50FGSSM49pre7PFnpkgtqJ1mF
-ziSuOVX4jhW8eiAsBEai5U8EicfI9rOgSY9c+woMeNNRvjzmacXDJvHVtwmHDpcr
-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
-bFLN3bCB76Y21VIgFJbYtnsuIu/nczltCWO/yds=
------END AGE ENCRYPTED FILE-----
diff --git a/system/secrets/taskserver/systemd_tmpfiles.age b/system/secrets/taskserver/systemd_tmpfiles.age
deleted file mode 100644
index b38c0d0..0000000
--- a/system/secrets/taskserver/systemd_tmpfiles.age
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsRnhhS1N1RHpmTm5QaWZw
-VHBvZDNlRXl3UW1tSkhtUWRtVENWdWR1NVhrCnlhSW1OaWFGVDhHLzJwYzFseEpY
-eVQ3Q3A1OEtTT0VoZklZVDBwUCtoaTQKLT4gWDI1NTE5IEVGUGxrRnhuSk1Ec3da
-SmdMenh2alN4bloxcXpCdW44S1pNbUZXcGVHaGsKbEJTNFBLOVZKaTJyaGwvMjNV
-aTcrUlJUWmtYdmMrckx5RE9iT29MZThyMAotPiBzc2gtZWQyNTUxOSBPRDhUNGcg
-Y0c5cHQvMVdma2JSRUc4U0tVWDN5WCtOQzlndXBKUldmdklzaTIvSXVuMApNdmVy
-Q05BeUN0cnlmVSs2TFJnb2NNTGJoRDdOSUhJZEtjWDlRbjdBQnVNCi0+IDdkUD59
-JH59LWdyZWFzZSA4ZDhwR1ZQbCBSZCBbJ1YwXVpHagpwNU1xWFZOb0VpYXM0YkJX
-a1ZSbkR2c3VWR01aL0xvMGY3MXI2MnFHWWFzaFJycFV5SFY5V2NJSVczT05laGZP
-CkN5NWRlOWE3WFVvTGRLc25mUlVKZzRIcjhxQ0JiWmp0MVRvQWhxWDhkU1hvWFhN
-Ci0tLSAvOXhsOUV5YzRuMHF6dDNQSnhLUmQzdmwrZzRDa2hLeW1HWWE4eklKZWdz
-CoMaSZjbrEu+QykCprEssfNKLvyWqHK86oVsJq27QTvXyHILO+dmHvnNSR4Dnz4p
-TNUd0w4+Ql/dzSYXTPTcxbqWQ2dhZHUYkUWAhLgkdaKwX6iG16lRqAT94eFH9TLU
-iaacJ+tu57jKTqzlWA+iDlV25jl7OzhCrpxxXvTVXygv9le13SIgylvM0LPHsQAB
-tqp5Sm0ZA7MdIyPgZX2gHko0Jf1eAcnPggDfKdzPty8zIsBIFOhyLLAlFJryaIZP
-e18Yhxn2WtCENB/QZboIcMpNZeBjH7Dox8tyo2nqnQ==
------END AGE ENCRYPTED FILE-----
diff --git a/system/services/default.nix b/system/services/default.nix
deleted file mode 100644
index 2b13f32..0000000
--- a/system/services/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{...}: {
-  imports = [
-    ./invidious
-    ./minecraft
-    ./taskserver
-  ];
-}
diff --git a/system/services/invidious/default.nix b/system/services/invidious/default.nix
deleted file mode 100644
index 6c587b3..0000000
--- a/system/services/invidious/default.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}: let
-  cfg = config.services.invidious;
-in {
-  services.invidious = {
-    enable = true;
-    database = {
-      createLocally = true;
-    };
-    domain = "invidious.vhack.eu";
-    nginx.enable = true;
-    extraSettingsFile = "$CREDENTIALS_DIRECTORY/hmac";
-
-    settings = {
-      check_tables = true;
-      db = {
-        dbname = "invidious";
-        user = "invidious";
-      };
-    };
-  };
-  systemd.services.invidious.serviceConfig = {
-    LoadCredential = "hmac:${config.age.secrets.invidiousHmac.path}";
-
-    ExecStart = let
-      # taken from the invidious module
-      settingsFormat = pkgs.formats.json {};
-      settingsFile = settingsFormat.generate "invidious-settings" cfg.settings;
-
-      jqFilter =
-        "."
-        + lib.optionalString (cfg.database.host != null) "[0].db.password = \"'\"'\"$(cat ${lib.escapeShellArg cfg.database.passwordFile})\"'\"'\""
-        + " | .[0]"
-        + lib.optionalString (cfg.extraSettingsFile != null) " * .[1]";
-
-      # don't escape extraSettingsFile, to allow variable substitution
-      jqFiles =
-        settingsFile
-        + lib.optionalString (cfg.extraSettingsFile != null) " \"${cfg.extraSettingsFile}\"";
-    in
-      lib.mkForce (pkgs.writeScript "start-invidious" ''
-        #! ${pkgs.dash}/bin/dash
-
-        export INVIDIOUS_CONFIG="$(${pkgs.jq}/bin/jq -s "${jqFilter}" ${jqFiles})"
-        exec ${cfg.package}/bin/invidious
-      '');
-  };
-}
diff --git a/system/services/minecraft/default.nix b/system/services/minecraft/default.nix
deleted file mode 100644
index 9bc98b9..0000000
--- a/system/services/minecraft/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{lib, ...}: {
-  vhack.persist.directories = [
-    {
-      directory = "/var/lib/minecraft";
-      user = "minecraft";
-      group = "minecraft";
-      mode = "0700";
-    }
-  ];
-
-  nixpkgs.config.allowUnfreePredicate = pkg:
-    builtins.elem (lib.getName pkg) [
-      "minecraft-server"
-    ];
-  services.minecraft-server = {
-    enable = true;
-    declarative = true;
-    eula = true;
-    dataDir = "/var/lib/minecraft";
-    openFirewall = true;
-    jvmOpts = "-Xmx8192M -Xms8192M";
-    whitelist = {
-      ShadyCraft = "7995eea5-b648-41c4-9b0f-7fc082565952";
-      Nightingale768 = "1125d077-6709-44b2-9be0-587aec772e7a";
-      Sirius_Black123 = "f5f66fc5-f287-434e-a03f-2480f998e76f";
-      DerDaHalt = "09c72cb7-cab9-444f-af55-616fcf93822c";
-    };
-    serverProperties = {
-      player-idle-timeout = 30;
-      white-list = true;
-      difficulty = 3;
-      gamemode = "survival";
-      enforce-whitelist = true;
-      simulation-distance = 10;
-    };
-  };
-}
diff --git a/system/services/taskserver/certs/README.md b/system/services/taskserver/certs/README.md
deleted file mode 100644
index 8ff0e44..0000000
--- a/system/services/taskserver/certs/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-> This is taken from: https://github.com/GothenburgBitFactory/taskserver/blob/9794cff61e56bdfb193c6aa4cebb57970ac68aef/pki/README
-
-PKI is a complex subject. These scripts and this description are not intended
-to be a complete and accurate example of PKI.
-
-Ideally you would purchase a server cert signed by a known CA, such as one of
-the following:
-
-- Symantec
-- Comodo
-- GoDaddy
-- GlobalSign
-- (Let's Encrypt)
-
-That cert would need the 'encryption_key' and 'signing_key' attributes.
-Using that server cert, you would then issue a server CRL and client keys.
-
-If you are developing, testing, or running your own private server, you may
-choose instead to generate the above yourself.  In this case you would generate
-a CA key and cert, then use that to generate a server key, cert, and CRL.  Then
-you would use the server key and cert to create a client key and cert.  But as
-there is no trusted CA in this example, just yourself, the resultant client key
-and cert will not be trusted by anyone, for good reasons.
-
-Note, you can inspect any cert with the command:
-
-```
-$ gnutls-certtool -i --infile $CERT
-```
-
-There is a 'generate' script here that will perform the above steps.  Take a
-look at it to see the individual steps it takes to generate the proper set of
-keys and certs.
-
-Note that you need to modify the 'vars' file to provide your own identity and
-chosen parameters.
-
-Validate a certificate with:
-
-```
-$ gnutls-certtool --verify --infile client.cert.pem --load-ca-certificate ca.cert.pem
-```
diff --git a/system/services/taskserver/certs/ca.cert.pem b/system/services/taskserver/certs/ca.cert.pem
deleted file mode 100644
index 76c0435..0000000
--- a/system/services/taskserver/certs/ca.cert.pem
+++ /dev/null
@@ -1,83 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIJPDCCBSSgAwIBAgIULsm+i5JWHG1LDMw4/OaUA1yiNGcwDQYJKoZIhvcNAQEM
-BQAwPjELMAkGA1UEBhMCRVUxDjAMBgNVBAoTBVZoYWNrMR8wHQYDVQQDExZ0YXNr
-c2VydmVyLnZoYWNrLmV1IENBMB4XDTI0MTAwNTE5MTA0NloXDTI1MTAwNTE5MTA0
-NlowPjELMAkGA1UEBhMCRVUxDjAMBgNVBAoTBVZoYWNrMR8wHQYDVQQDExZ0YXNr
-c2VydmVyLnZoYWNrLmV1IENBMIIEIjANBgkqhkiG9w0BAQEFAAOCBA8AMIIECgKC
-BAEAvqK+cCSMRS4QXagPcIHHkdc2mr7DLqqvDSisybD6CFJYH+7YgDP/reqLRCpL
-3J1VmBYlthK6EzsGf7v/rdkgoMEL9pLTgguNS8FWIHybn9X/diYX/hp6CGV4hfn1
-eJFjV78o9dWAFwWrZzGDOW/lbXnqaB+EFbbV/R+lNxwwSXWpxyRjygYVJhiKX5Pt
-u1eN10MPOuX6afdaduag383rHXe6wcOOF+Af+F2mZmvdySBAkjHaL+VvS3ounj8q
-PSC/HoYzDWa4fHnhcgfLJq2ngmLnSQFtDDTq3xd/MBVk17qExD6efIrcGoLSG/L9
-CQJaV/DdfdZwCNNnGz2nm+Whx3MIvlI2cWBM2jxFsfPEiNqPWyaBOBN6JVnE4Xfd
-odfzAvgRPDipansnFvwbYbfmq/sUQbN21tYYpi28EPQMGNkJ5XYf21wLCSo2QCLe
-n8KttXKp2dBi9ykFKRpVUVxalIunco1lBxccXILz0aRILdcoTMCyOAiAZ11QJ+Ij
-vV+gLyBzq2+IMBflsWx0BWZ+yXQJbmMkxJ+wkc26oNG6ZcklckZYkbKKLqmVo2wc
-UW+NODIuwcaKQrqXqzxM/pFuW0eeBKymMg77u7NN3mkUI5sx9F3djQ6RuFFI5KYM
-AGlQB1dlFyj9qtMrqNLi7GSnTCSbeoJq6Tl1NEKELbjIYvAUIYA5O0rAZHMWqNog
-30IaAL8GZaTf4l78ueJeIdGve1Zl+FXka+Clj0d/B4pVqkIu7/pk4Vldc/Bzm5mm
-JIReQZz6NRn8m0szAmeK9ucxx6jzshXnRQrVBUntYYWZzCWQgHjNPF3vXdFrfZgl
-ar/0whmRap7uM7TiMSHRgJjPd7iG27RKXd3dRr51KYaeHSjhnK/26oelBIQDVA6V
-nK69GpD2AFkWpgkUfqD89rLBOxWxdKZgC6ucTtmprwg5pRkfRCgV32fzJkBAoMkN
-erg8uQGjT/EnTSxEK72XK2MRDpUpKZvB2GoG69dOYs1L9mtIbxgdexeBlw2UNF1l
-JDlPQUEmlY/QptWCro7H0HcdP/iXCadTZcxIf+ln0cfMwlVYgTn+4NWWvRNskWx2
-c8RqynsrjM/7PIuWltVizlcAp7WIQtbBHcTs9lNBRSQrtxEaSuLoZ2cLiw9qBN7j
-2goLCEKvRI/KqsVj9/NirMpVg4g3t/ZQSEh56w6seKPynzEF1KKdA+2tCzwuSmDs
-UT0hHpzepoTXJoix/eRWl4yVsUD1zz1HdL+WJL0vWNZax92Q1afq5icjtEty4/Ng
-Ek35dWGQI21usyVHKH+jsFFioj+3pm5jPUb7tCZ/sptYlXOL6MtSWmpOzMqjiDQK
-pZizY/mseUHQOyz9MBdZ3Vv8GQIDAQABozIwMDAPBgNVHRMBAf8EBTADAQH/MB0G
-A1UdDgQWBBQiVaWbtkt9aYDBbPhXAGtpi6HxAzANBgkqhkiG9w0BAQwFAAOCBAEA
-hCfUJVB75LF+z0A02vdfg0aQGHokLVejqFkCZ8kZvDNC7kkRepO0EkYO7YMYxHX6
-R+IU4mtiSq7ubtgLuGcQmz/Q9UbxUxX/bIZ5tP5lNOZZqoZ4xqfj/ROMtT5xo5c0
-2ZUXWOBTtqLEzOIaPxjvjW8WU0sVPrjeC1il4dTSNRQZdTFj6nJXmebBG3FWakEi
-l8Nzx85DFqtyMdfyCaJPzwDSsYJx6a15wLX3nLzHNln4E5skzYgV9qxdqDBDsi99
-h4SYaktETciTxnkVLKNyILfA5DjN6uacU3a79KCrwhQmMze6P3cXl06gFGIl2HBM
-CQ5zrz5bIfG7Msi98Qj0FAOfRDF4Qx1UrwMp727Vlj2oL2MmZXfVS7dLYT6bi2z0
-xf74Z4mTitETXWhLayfJuuoNBSC8dmlsLOUVgtppoy8eqze6S0JDIjLl04aHg9ja
-yE9WQI8nq9pMEAF7O63Od7lfIsvEmAcbjU1GCHmzCf8qedvmEXhgpuCNFGtNgxKh
-V1Wc0WMKh1ql3ETsK37+c2gJu2hTHX7LTS/mkMtEkEQcruDAppwDfkX+gSrPDRvG
-riGmk4AttTmK7PvesVI9riXfw0iAo/ydsUckqanntiX9uZvQWsClHVamR8wjL3JK
-PMErm6/SrAelH0vLCQkYm2NSFApX6GBDSmvbKSZvmqutnApDUKcu+36GFZHqC+Wz
-gIQzhvOL4AO2jyPRRByscNyWc5Zu5yN78x7UKfwxLOMnRK1ZxZ18N0OdAmmDXN6e
-TBYoCoenjaqIYbtFUMSqOJEW+nAZbTINO4Sf/ouPg+kBg/uDKvGUbKP29GnhQL2o
-PFwvBBYlXqn9AuPiXwCUUinBYR260rzuzfKyP6HmXOaxMOJxU3jM38+3vDpC5Kb0
-MMY6+lYo42/rGeRMvkm+aM1zZcPHAIgZ6M/LaUrrLTX5zLqsNfx5gUddEfqRrZTK
-Z4ivJwqTrI/e1iZ/grLUjHWPV/PflBOQc7NmPdvEv3uRampRPfBwtC1KMae/Y6se
-hx9TbJQGdoK90dCe9LzdUHEdGyZT5cKDSCd9ffmWwORbN8+xqRFZ8/tRyxgSA58Z
-MSTmqkNM+udO/Zn2oOmAwpXhrwc75ezGXvwNH3YMdyVDqZrlfLgv7KMyhuhOnP1z
-T8+ZgLOfy8hxeZwObL821lAIhKxQux0LQFYoYrOUmP9kDw+gRg1AnIi3n8Tgeisk
-DmIYgmB/9vgEDqBO9vhcg/qdevhjkfeiOfKRdpxpg9mCh57hHfM1CHq5ulFttbwc
-JjT/BiQzCmzJPXAlRuxVPHCaF1qyp6Pf4seLRy0qyWyOWVxVx2BKKGV7cX/IUbXV
-53Nn1zkqWwd9Ws9D7zQwog==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
-WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
-ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
-MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
-h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
-0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
-A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
-T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
-B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
-B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
-KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
-OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
-jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
-qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
-rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
-hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
-ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
-3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
-NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
-ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
-TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
-jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
-oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
-4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
-mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
-emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
------END CERTIFICATE-----
diff --git a/system/services/taskserver/certs/ca.key.pem.gpg b/system/services/taskserver/certs/ca.key.pem.gpg
deleted file mode 100644
index 8abd59a..0000000
--- a/system/services/taskserver/certs/ca.key.pem.gpg
+++ /dev/null
Binary files differdiff --git a/system/services/taskserver/certs/check_expire b/system/services/taskserver/certs/check_expire
deleted file mode 100755
index 39f3291..0000000
--- a/system/services/taskserver/certs/check_expire
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env nix
-#! nix shell nixpkgs#openssl nixpkgs#dash --command dash
-
-cd "$(dirname "$0")" || {
-    echo "No dir name?!"
-    exit 1
-}
-
-for cert in *.cert.pem; do
-    echo "$cert"
-    openssl x509 -noout -in "$cert" -dates
-    echo
-done
diff --git a/system/services/taskserver/certs/generate b/system/services/taskserver/certs/generate
deleted file mode 100755
index c3b58ae..0000000
--- a/system/services/taskserver/certs/generate
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i dash --packages openssl gnutls dash
-#! nix-shell --impure
-
-# For a public or production server, purchase a cert from a known CA, and skip
-# the next step.
-
-# For development, testing and personal server management, create a CA key and
-# cert, and use that to generate a server key and cert.  Creates:
-#   ca.key.pem
-#   ca.cert.pem
-#   server.key.pem
-#   server.cert.pem
-
-GENERATION_LOCATION="/run/user/$(id -u)/taskserver/certs"
-BASEDIR="$(dirname "$0")"
-cd "$BASEDIR" || {
-    echo "(BUG?) No basedir ('$BASEDIR')" 1>&2
-    exit 1
-}
-
-ca=false
-crl=false
-clients=false
-
-for arg in "$@"; do
-    case "$arg" in
-    "--ca")
-        ca=true
-        ;;
-    "--crl")
-        crl=true
-        ;;
-    "--clients")
-        clients=true
-        ;;
-    esac
-done
-
-# `ca.cert.pem` is not on this list, as it would otherwise get deleted in the `rm` on the
-# second-to last line
-set -- ./vars ./generate.ca ./generate.crl ./generate.client ./ca.key.pem.gpg ./isrgrootx1.pem
-
-mkdir --parents "$GENERATION_LOCATION"
-cp "$@" ./ca.cert.pem "$GENERATION_LOCATION"
-cd "$GENERATION_LOCATION" || echo "(BUG?) No possible location fould!" 1>&2
-
-gpg --decrypt ca.key.pem.gpg >ca.key.pem
-
-[ "$ca" = true ] && ./generate.ca
-cat ./isrgrootx1.pem >>./ca.cert.pem
-
-# Generate a certificate revocation list (CRL).  The initial CRL is empty, but
-# can grow over time.  Creates:
-#   server.crl.pem
-
-[ "$crl" = true ] && ./generate.crl
-
-# The above is sufficient to operate a server. You now need to run a client cert creation
-# process per client; Add the required client names and uncomment
-# ./generate.client <client_name>
-#
-#
-# Creates:
-#   <client_name>.key.pem
-#   <client_name>.cert.pem
-#
-[ "$clients" = true ] && ./generate.client soispha
-[ "$clients" = true ] && ./generate.client android-mobile
-[ "$clients" = true ] && ./generate.client android-tab
-
-rm "$@" "./ca.key.pem"
-echo "(INFO) Look for the keys at: $GENERATION_LOCATION"
-
-# vim: ft=sh
diff --git a/system/services/taskserver/certs/generate.ca b/system/services/taskserver/certs/generate.ca
deleted file mode 100755
index eb0dd5c..0000000
--- a/system/services/taskserver/certs/generate.ca
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-# Take the correct binary to create the certificates
-CERTTOOL=$(command -v gnutls-certtool 2>/dev/null || command -v certtool 2>/dev/null)
-if [ -z "$CERTTOOL" ]; then
-    echo "ERROR: No certtool found" >&2
-    exit 1
-fi
-
-. ./vars
-
-if ! [ -f ca.key.pem ]; then
-    # Create a CA key.
-    $CERTTOOL \
-        --generate-privkey \
-        --sec-param $SEC_PARAM \
-        --outfile ca.key.pem
-fi
-
-chmod 600 ca.key.pem
-
-if ! [ -f ca.template ]; then
-    # Sign a CA cert.
-    cat <<EOF >ca.template
-organization = $ORGANIZATION
-cn = $CN CA
-country = $COUNTRY
-expiration_days = $EXPIRATION_DAYS
-ca
-EOF
-#state = $STATE
-#locality = $LOCALITY
-fi
-
-if ! [ -f ca.cert.pem ]; then
-    $CERTTOOL \
-        --generate-self-signed \
-        --load-privkey ca.key.pem \
-        --template ca.template \
-        --outfile ca.cert.pem
-fi
-
-chmod 600 ca.cert.pem
diff --git a/system/services/taskserver/certs/generate.client b/system/services/taskserver/certs/generate.client
deleted file mode 100755
index 4f0e503..0000000
--- a/system/services/taskserver/certs/generate.client
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/sh
-
-# Take the correct binary to create the certificates
-CERTTOOL=$(command -v gnutls-certtool 2>/dev/null || command -v certtool 2>/dev/null)
-if [ -z "$CERTTOOL" ]
-then
-  echo "ERROR: No certtool found" >&2
-  exit 1
-fi
-
-. ./vars
-
-NAME=client
-if [ $# -gt 0 ]
-then
-  NAME=$1
-fi
-
-if ! [ -f "$NAME".key.pem ]
-then
-  # Create a client key.
-  $CERTTOOL \
-    --generate-privkey \
-    --sec-param $SEC_PARAM \
-    --outfile "$NAME".key.pem
-fi
-
-chmod 600 "$NAME".key.pem
-
-if ! [ -f "$NAME".template ]
-then
-  # Sign a client cert with the key.
-  cat <<EOF >"$NAME".template
-organization = $ORGANIZATION
-cn = $CN
-expiration_days = $EXPIRATION_DAYS
-tls_www_client
-encryption_key
-signing_key
-EOF
-fi
-
-if ! [ -f "$NAME".cert.pem ]
-then
-  $CERTTOOL \
-    --generate-certificate \
-    --load-privkey "$NAME".key.pem \
-    --load-ca-certificate ca.cert.pem \
-    --load-ca-privkey ca.key.pem \
-    --template "$NAME".template \
-    --outfile "$NAME".cert.pem
-fi
-
-chmod 600 "$NAME".cert.pem
diff --git a/system/services/taskserver/certs/generate.crl b/system/services/taskserver/certs/generate.crl
deleted file mode 100755
index e9f6715..0000000
--- a/system/services/taskserver/certs/generate.crl
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-
-# Take the correct binary to create the certificates
-CERTTOOL=$(command -v gnutls-certtool 2>/dev/null || command -v certtool 2>/dev/null)
-if [ -z "$CERTTOOL" ]
-then
-  echo "ERROR: No certtool found" >&2
-  exit 1
-fi
-
-. ./vars
-
-if ! [ -f crl.template ]
-then
-  # CRL - Certificate Revocation List
-  cat <<EOF >crl.template
-expiration_days = $EXPIRATION_DAYS
-EOF
-fi
-
-if ! [ -f server.crl.pem ]
-then
-  $CERTTOOL \
-    --generate-crl \
-    --load-ca-privkey ca.key.pem \
-    --load-ca-certificate ca.cert.pem \
-    --template crl.template \
-    --outfile server.crl.pem
-fi
-
-chmod 600 server.crl.pem
-
-# To create a CRL that contains some revoked certificates, place the
-# certificates in a file and use --load-certificate as follows:
-# $CERTTOOL \
-#   --generate-crl \
-#   --load-ca-privkey ca.key.pem \
-#   --load-ca-certificate ca.cert.pem \
-#   --load-certificate revoked-certs.pem
-
-# To verify a CRL:
-#   $CERTTOOL --verify-crl --load-ca-certificate ca.cert.pem --infile server.crl.pem
diff --git a/system/services/taskserver/certs/isrgrootx1.pem b/system/services/taskserver/certs/isrgrootx1.pem
deleted file mode 100644
index b85c803..0000000
--- a/system/services/taskserver/certs/isrgrootx1.pem
+++ /dev/null
@@ -1,31 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
-TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
-cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
-WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
-ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
-MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
-h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
-0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
-A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
-T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
-B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
-B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
-KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
-OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
-jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
-qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
-rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
-hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
-ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
-3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
-NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
-ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
-TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
-jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
-oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
-4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
-mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
-emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
------END CERTIFICATE-----
diff --git a/system/services/taskserver/certs/vars b/system/services/taskserver/certs/vars
deleted file mode 100644
index 50d753a..0000000
--- a/system/services/taskserver/certs/vars
+++ /dev/null
@@ -1,7 +0,0 @@
-SEC_PARAM=ultra
-EXPIRATION_DAYS=365
-ORGANIZATION="Vhack"
-CN=taskserver.vhack.eu
-COUNTRY=EU
-#STATE="Germany"
-#LOCALITY="Göteborg"
diff --git a/system/services/taskserver/default.nix b/system/services/taskserver/default.nix
deleted file mode 100644
index 04b6a8b..0000000
--- a/system/services/taskserver/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{config, ...}: let
-  taskStore = "/var/lib/taskserver";
-in {
-  environment.etc = {
-    "tmpfiles.d/taskserver.conf".source = config.age.secrets.taskserverSystemdTmpfiles.path;
-  };
-
-  vhack.persist.directories = [
-    "/var/lib/taskserver"
-  ];
-
-  services.taskserver = {
-    enable = true;
-    pki.manual = {
-      ca.cert = ./certs/ca.cert.pem;
-      server = {
-        cert = "${taskStore}/fullchain.pem";
-        key = "${taskStore}/key.pem";
-      };
-    };
-
-    debug = false;
-    ipLog = false;
-    trust = "strict";
-
-    organisations = import ./organisations.nix;
-    openFirewall = true;
-    fqdn = "taskserver.vhack.eu";
-
-    # This should tell taskd to bind to both ipv6 and ipv4 domains:
-    # This will ONLY work when the kernel option `sys.net.ipv6.bindv6only` is false
-    listenHost = "::";
-  };
-  boot.kernelParams = [
-    "sys.net.ipv6.bindv6only=0"
-  ];
-
-  security.acme.certs.taskserver = {
-    domain = "taskserver.vhack.eu";
-    postRun =
-      /*
-      bash
-      */
-      ''
-        set -x
-        rm "${taskStore}/key.pem"
-        rm "${taskStore}/fullchain.pem"
-
-        cp key.pem "${taskStore}";
-        cp fullchain.pem "${taskStore}";
-
-        chown taskd:taskd "${taskStore}/key.pem"
-        chown taskd:taskd "${taskStore}/fullchain.pem"
-      '';
-  };
-}
diff --git a/system/services/taskserver/organisations.nix b/system/services/taskserver/organisations.nix
deleted file mode 100644
index c3ad966..0000000
--- a/system/services/taskserver/organisations.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  vhack = {
-    users = [
-      "soispha"
-    ];
-  };
-  soispha = {
-    users = [
-      "soispha"
-      "android-mobile"
-      "android-tab"
-    ];
-  };
-}