diff --git a/hosts/deertopia/configuration.nix b/hosts/deertopia/configuration.nix index a4489fc..6658b15 100755 --- a/hosts/deertopia/configuration.nix +++ b/hosts/deertopia/configuration.nix @@ -37,41 +37,57 @@ keyFile = "/persist/vault/root/deertopia-key"; }; - git-annex = { + # git-annex = { + # enable = true; + # user.name = "annex"; + # user.email = "annex@deertopia.net"; + # keyFiles = [ + # ../../public-keys/crumb-at-guix-rebound.pub + # ../../public-keys/crumble-at-fruitbook.pub + # ../../public-keys/lain-at-deertopia.pub + # ]; + # repos = { + # "/persist/vault/jellyfin/Documents" = { + # managed = true; + # symlinkToAnnexHome = "documents"; + # remotes = { + # "guix-rebound" = "crumb@guix-rebound:Documents"; + # }; + # }; + # "/persist/vault/jellyfin/Music" = { + # managed = true; + # symlinkToAnnexHome = "music"; + # remotes = { + # "guix-rebound" = "crumb@guix-rebound:Music"; + # }; + # }; + # "/persist/deertopia.net/dav/org" = { + # managed = true; + # symlinkToAnnexHome = "org"; + # remotes = { + # "guix-rebound" = "crumb@guix-rebound:org"; + # }; + # }; + # }; + # }; + + syncthing = { enable = true; - user.name = "annex"; - user.email = "annex@deertopia.net"; - keyFiles = [ - ../../public-keys/crumb-at-guix-rebound.pub - ../../public-keys/crumble-at-fruitbook.pub - ../../public-keys/lain-at-deertopia.pub - ]; - repos = { - "/persist/vault/jellyfin/Documents" = { - managed = true; - symlinkToAnnexHome = "documents"; - remotes = { - "guix-rebound" = "crumb@guix-rebound:Documents"; - }; - }; - "/persist/vault/jellyfin/Music" = { - managed = true; - symlinkToAnnexHome = "music"; - remotes = { - "guix-rebound" = "crumb@guix-rebound:Music"; - }; - }; - "/persist/deertopia.net/dav/org" = { - managed = true; - symlinkToAnnexHome = "org"; - remotes = { - "guix-rebound" = "crumb@guix-rebound:org"; - }; + devices = { + "guix-rebound".id = + "Q5B6LIV-5HQMWWV-XFQL5IT-PHP7PVE-XFWUVHK-F6WJ42C-OPMR4M7-GFNK3AG"; + }; + folders = { + "Music" = { + path = "/persist/vault/jellyfin/Music"; + devices = [ "guix-rebound" ]; + ignorePerms = true; }; }; }; deertopia = { + # slskd.enable = true; jellyfin.enable = true; nginx.enable = true; webdav.enable = true; diff --git a/modules/nixos/deertopia/slskd.nix b/modules/nixos/deertopia/slskd.nix new file mode 100644 index 0000000..b8a2d27 --- /dev/null +++ b/modules/nixos/deertopia/slskd.nix @@ -0,0 +1,45 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.sydnix.deertopia.slskd; +in { + options = { + sydnix.deertopia.slskd = { + enable = mkEnableOption "Soulseek"; + }; + }; + + config = mkIf cfg.enable { + sydnix.sops.secrets.slskd-credentials = {}; + + services.slskd = { + enable = true; + + openFirewall = true; + domain = null; + environmentFile = "/run/secrets/slskd-credentials"; + + settings = { + shares.directories = [ "/persist/vault/jellyfin/Music" ]; + # directories.downloads = "/persist/vault/jellyfin/Music"; + }; + }; + + networking.firewall.allowedTCPPorts = [ + config.services.slskd.settings.web.port + ]; + + users.users.${config.services.slskd.user}.extraGroups = [ "jellyfin" ]; + + sydnix.deertopia.nginx.vhosts."slsk".vhost = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = + "http://localhost:${builtins.toString + config.services.slskd.settings.web.port}"; + }; + }; + }; +} diff --git a/modules/nixos/syncthing.nix b/modules/nixos/syncthing.nix new file mode 100644 index 0000000..ff8cd27 --- /dev/null +++ b/modules/nixos/syncthing.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.sydnix.syncthing; +in { + options = { + sydnix.syncthing = { + enable = lib.mkEnableOption "Syncthing"; + devices = lib.mkOption { + type = lib.types.anything; + default = {}; + }; + folders = lib.mkOption { + type = lib.types.anything; + default = {}; + }; + }; + }; + + config = lib.mkIf cfg.enable { + users.users.${config.services.syncthing.user}.extraGroups = [ + "jellyfin" + ]; + + services.syncthing = { + enable = true; + openDefaultPorts = true; + settings = { + overrideDevices = true; + overrideFolders = true; + devices = cfg.devices; + folders = cfg.folders; + }; + }; + }; +}