diff --git a/hosts/architect/default.nix b/hosts/architect/default.nix index 26b4bcc..207b437 100644 --- a/hosts/architect/default.nix +++ b/hosts/architect/default.nix @@ -151,15 +151,25 @@ in smartd.enable = true; }; - pepe.services = { - gitea = { - enable = true; - domain = "git.giugl.io"; + pepe = { + core = { + media = { + enable = true; + path = "/media"; + }; }; - immich = { - enable = true; - domain = "photos.giugl.io"; - package = pkgs.unstablePkgs.immich; + + services = { + gitea = { + enable = true; + domain = "git.giugl.io"; + }; + + immich = { + enable = true; + domain = "photos.giugl.io"; + package = pkgs.unstablePkgs.immich; + }; }; }; } diff --git a/modules/core/default.nix b/modules/core/default.nix new file mode 100644 index 0000000..ea5f08c --- /dev/null +++ b/modules/core/default.nix @@ -0,0 +1,5 @@ +{...}: { + imports = [ + ./media.nix + ]; +} diff --git a/modules/core/media.nix b/modules/core/media.nix new file mode 100644 index 0000000..1e76498 --- /dev/null +++ b/modules/core/media.nix @@ -0,0 +1,27 @@ +{ config, lib, ... }: + +let + cfg = config.pepe.core.media; +in +{ + options.pepe.core.media = with lib; { + enable = mkEnableOption "Enable media library"; + group = mkOption { + type = types.str; + default = "media"; + }; + path = mkOption { + type = types.str; + default = null; + }; + groupMembers = mkOption { + type = types.listOf types.str; + default = []; + }; + }; + + config = lib.mkIf cfg.enable { + users.groups.${cfg.group}.members = [ cfg.group ] ++ cfg.groupMembers; + }; +} + diff --git a/modules/default.nix b/modules/default.nix index 0d7bbef..c8f7477 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,4 +1,7 @@ { ... }: { - imports = [ ./services ]; + imports = [ + ./services + ./core + ]; }