@@ -24,19 +24,18 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
opener = {
|
opener = {
|
||||||
edit =
|
edit = [
|
||||||
[
|
{
|
||||||
{
|
run = "${hmConfig.programs.neovim.finalPackage}/bin/nvim \"$@\"";
|
||||||
run = "${hmConfig.programs.neovim.finalPackage}/bin/nvim \"$@\"";
|
desc = "nvim";
|
||||||
desc = "nvim";
|
block = true;
|
||||||
block = true;
|
}
|
||||||
}
|
]
|
||||||
]
|
++ lib.lists.optional hmConfig.programs.vscode.enable {
|
||||||
++ lib.lists.optional hmConfig.programs.vscode.enable {
|
run = "${hmConfig.programs.vscode.package}/bin/code \"$@\"";
|
||||||
run = "${hmConfig.programs.vscode.package}/bin/code \"$@\"";
|
desc = "code";
|
||||||
desc = "code";
|
orphan = true;
|
||||||
orphan = true;
|
};
|
||||||
};
|
|
||||||
open = [
|
open = [
|
||||||
{
|
{
|
||||||
run = "uwsm app -- xdg-open \"$1\"";
|
run = "uwsm app -- xdg-open \"$1\"";
|
||||||
|
@@ -37,16 +37,15 @@ in
|
|||||||
home = {
|
home = {
|
||||||
pointerCursor.gtk.enable = true;
|
pointerCursor.gtk.enable = true;
|
||||||
|
|
||||||
file =
|
file = {
|
||||||
{
|
".icons/default/index.theme".enable = false;
|
||||||
".icons/default/index.theme".enable = false;
|
}
|
||||||
}
|
// builtins.listToAttrs (
|
||||||
// builtins.listToAttrs (
|
builtins.map (name: {
|
||||||
builtins.map (name: {
|
name = ".icons/${name}";
|
||||||
name = ".icons/${name}";
|
value.enable = false;
|
||||||
value.enable = false;
|
}) (hmConfig.theme.icon.names ++ hmConfig.theme.cursor.names)
|
||||||
}) (hmConfig.theme.icon.names ++ hmConfig.theme.cursor.names)
|
);
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
theme.template = {
|
theme.template = {
|
||||||
|
@@ -9,9 +9,7 @@
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
hyprland = prev.hyprland.overrideAttrs (oldAttrs: {
|
hyprland = prev.hyprland.overrideAttrs (oldAttrs: {
|
||||||
patches = oldAttrs.patches or [ ] ++ [
|
patches = oldAttrs.patches or [ ] ++ [ ./fix-maxwidth-resolution-mode.patch ];
|
||||||
./fix-maxwidth-resolution-mode.patch
|
|
||||||
];
|
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
@@ -29,119 +29,118 @@ in
|
|||||||
"jellyseerr/authelia/digest".sopsFile = ../../../../../../../secrets/secrets.yaml;
|
"jellyseerr/authelia/digest".sopsFile = ../../../../../../../secrets/secrets.yaml;
|
||||||
};
|
};
|
||||||
|
|
||||||
templates =
|
templates = {
|
||||||
{
|
jellyseerr-env.content = ''
|
||||||
jellyseerr-env.content = ''
|
JELLYFIN_ADMIN_PASSWORD=${hmConfig.sops.placeholder."jellyfin/admin"}
|
||||||
JELLYFIN_ADMIN_PASSWORD=${hmConfig.sops.placeholder."jellyfin/admin"}
|
'';
|
||||||
'';
|
|
||||||
|
|
||||||
jellyseerr.content = builtins.readFile (
|
jellyseerr.content = builtins.readFile (
|
||||||
(pkgs.formats.json { }).generate "setings.json" {
|
(pkgs.formats.json { }).generate "setings.json" {
|
||||||
main = {
|
main = {
|
||||||
applicationTitle = "Jellyseerr";
|
applicationTitle = "Jellyseerr";
|
||||||
applicationUrl = "https://request.karaolidis.com";
|
applicationUrl = "https://request.karaolidis.com";
|
||||||
cacheImages = true;
|
cacheImages = true;
|
||||||
# https://github.com/fallenbagel/jellyseerr/blob/d53ffca5db9b09bd1055936c2472d54a78f937b8/server/lib/permissions.ts#L7
|
# https://github.com/fallenbagel/jellyseerr/blob/d53ffca5db9b09bd1055936c2472d54a78f937b8/server/lib/permissions.ts#L7
|
||||||
# REQUEST | CREATE_ISSUES | RECENT_VIEW
|
# REQUEST | CREATE_ISSUES | RECENT_VIEW
|
||||||
# 32 | 4194304 | 67108864
|
# 32 | 4194304 | 67108864
|
||||||
defaultPermissions = 71303200;
|
defaultPermissions = 71303200;
|
||||||
localLogin = false;
|
localLogin = false;
|
||||||
mediaServerLogin = false;
|
mediaServerLogin = false;
|
||||||
oidcLogin = true;
|
oidcLogin = true;
|
||||||
newPlexLogin = false;
|
newPlexLogin = false;
|
||||||
mediaServerType = 2;
|
mediaServerType = 2;
|
||||||
partialRequestsEnabled = true;
|
partialRequestsEnabled = true;
|
||||||
enableSpecialEpisodes = true;
|
enableSpecialEpisodes = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
jellyfin = {
|
||||||
|
name = "jupiter";
|
||||||
|
ip = "jellyfin";
|
||||||
|
port = 8096;
|
||||||
|
externalHostname = "https://media.karaolidis.com";
|
||||||
|
jellyfinForgotPasswordUrl = "https://id.karaolidis.com/reset-password/step1";
|
||||||
|
};
|
||||||
|
|
||||||
|
oidc.providers = [
|
||||||
|
{
|
||||||
|
slug = "authelia";
|
||||||
|
name = "Authelia";
|
||||||
|
issuerUrl = "https://id.karaolidis.com";
|
||||||
|
clientId = jellyseerrAutheliaClientId;
|
||||||
|
clientSecret = hmConfig.sops.placeholder."jellyseerr/authelia/password";
|
||||||
|
scopes = lib.strings.concatStringsSep " " [
|
||||||
|
"openid"
|
||||||
|
"profile"
|
||||||
|
"email"
|
||||||
|
"groups"
|
||||||
|
];
|
||||||
|
newUserLogin = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
radarr = [ ];
|
||||||
|
|
||||||
|
sonarr = [ ];
|
||||||
|
|
||||||
|
public.initialized = true;
|
||||||
|
|
||||||
|
notifications.agents.email = {
|
||||||
|
enabled = true;
|
||||||
|
options = {
|
||||||
|
emailFrom = "jupiter@karaolidis.com";
|
||||||
|
smtpHost = "smtp.protonmail.ch";
|
||||||
|
smtpPort = 587;
|
||||||
|
authUser = "jupiter@karaolidis.com";
|
||||||
|
authPass = hmConfig.sops.placeholder."jellyseerr/smtp";
|
||||||
|
senderName = "Jellyseerr";
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
jellyfin = {
|
network.trustProxy = true;
|
||||||
name = "jupiter";
|
}
|
||||||
ip = "jellyfin";
|
);
|
||||||
port = 8096;
|
|
||||||
externalHostname = "https://media.karaolidis.com";
|
|
||||||
jellyfinForgotPasswordUrl = "https://id.karaolidis.com/reset-password/step1";
|
|
||||||
};
|
|
||||||
|
|
||||||
oidc.providers = [
|
authelia-jellyseerr.content = builtins.readFile (
|
||||||
{
|
(pkgs.formats.yaml { }).generate "jellyseerr.yaml" {
|
||||||
slug = "authelia";
|
identity_providers.oidc = {
|
||||||
name = "Authelia";
|
authorization_policies.jellyseerr = {
|
||||||
issuerUrl = "https://id.karaolidis.com";
|
default_policy = "deny";
|
||||||
clientId = jellyseerrAutheliaClientId;
|
rules = [
|
||||||
clientSecret = hmConfig.sops.placeholder."jellyseerr/authelia/password";
|
|
||||||
scopes = lib.strings.concatStringsSep " " [
|
|
||||||
"openid"
|
|
||||||
"profile"
|
|
||||||
"email"
|
|
||||||
"groups"
|
|
||||||
];
|
|
||||||
newUserLogin = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
radarr = [ ];
|
|
||||||
|
|
||||||
sonarr = [ ];
|
|
||||||
|
|
||||||
public.initialized = true;
|
|
||||||
|
|
||||||
notifications.agents.email = {
|
|
||||||
enabled = true;
|
|
||||||
options = {
|
|
||||||
emailFrom = "jupiter@karaolidis.com";
|
|
||||||
smtpHost = "smtp.protonmail.ch";
|
|
||||||
smtpPort = 587;
|
|
||||||
authUser = "jupiter@karaolidis.com";
|
|
||||||
authPass = hmConfig.sops.placeholder."jellyseerr/smtp";
|
|
||||||
senderName = "Jellyseerr";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
network.trustProxy = true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
authelia-jellyseerr.content = builtins.readFile (
|
|
||||||
(pkgs.formats.yaml { }).generate "jellyseerr.yaml" {
|
|
||||||
identity_providers.oidc = {
|
|
||||||
authorization_policies.jellyseerr = {
|
|
||||||
default_policy = "deny";
|
|
||||||
rules = [
|
|
||||||
{
|
|
||||||
policy = "one_factor";
|
|
||||||
subject = "group:jellyfin";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
clients = [
|
|
||||||
{
|
{
|
||||||
client_id = jellyseerrAutheliaClientId;
|
policy = "one_factor";
|
||||||
client_name = "jellyseerr";
|
subject = "group:jellyfin";
|
||||||
client_secret = hmConfig.sops.placeholder."jellyseerr/authelia/digest";
|
|
||||||
redirect_uris = [ "https://request.karaolidis.com/login?provider=authelia&callback=true" ];
|
|
||||||
authorization_policy = "jellyseerr";
|
|
||||||
scopes = [
|
|
||||||
"openid"
|
|
||||||
"email"
|
|
||||||
"profile"
|
|
||||||
"groups"
|
|
||||||
];
|
|
||||||
token_endpoint_auth_method = "client_secret_post";
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
|
||||||
);
|
clients = [
|
||||||
}
|
{
|
||||||
// builtins.listToAttrs (
|
client_id = jellyseerrAutheliaClientId;
|
||||||
builtins.map (arr: {
|
client_name = "jellyseerr";
|
||||||
name = "jellyseerr-${arr.hostName}";
|
client_secret = hmConfig.sops.placeholder."jellyseerr/authelia/digest";
|
||||||
value.content = builtins.readFile (
|
redirect_uris = [ "https://request.karaolidis.com/login?provider=authelia&callback=true" ];
|
||||||
(pkgs.formats.json { }).generate "${arr.hostName}.json" arr.jellyseerrConfig
|
authorization_policy = "jellyseerr";
|
||||||
);
|
scopes = [
|
||||||
}) arrs
|
"openid"
|
||||||
|
"email"
|
||||||
|
"profile"
|
||||||
|
"groups"
|
||||||
|
];
|
||||||
|
token_endpoint_auth_method = "client_secret_post";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
// builtins.listToAttrs (
|
||||||
|
builtins.map (arr: {
|
||||||
|
name = "jellyseerr-${arr.hostName}";
|
||||||
|
value.content = builtins.readFile (
|
||||||
|
(pkgs.formats.json { }).generate "${arr.hostName}.json" arr.jellyseerrConfig
|
||||||
|
);
|
||||||
|
}) arrs
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.quadlet = {
|
virtualisation.quadlet = {
|
||||||
|
@@ -22,20 +22,19 @@ in
|
|||||||
sops = {
|
sops = {
|
||||||
secrets."prowlarr/apiKey".sopsFile = ../../../../../../../secrets/secrets.yaml;
|
secrets."prowlarr/apiKey".sopsFile = ../../../../../../../secrets/secrets.yaml;
|
||||||
|
|
||||||
templates =
|
templates = {
|
||||||
{
|
prowlarr-env.content = ''
|
||||||
prowlarr-env.content = ''
|
API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"}
|
||||||
API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"}
|
'';
|
||||||
'';
|
}
|
||||||
}
|
// builtins.listToAttrs (
|
||||||
// builtins.listToAttrs (
|
builtins.map (arr: {
|
||||||
builtins.map (arr: {
|
name = "prowlarr-${arr.hostName}";
|
||||||
name = "prowlarr-${arr.hostName}";
|
value.content = builtins.readFile (
|
||||||
value.content = builtins.readFile (
|
(pkgs.formats.json { }).generate "${arr.hostName}.json" arr.prowlarrConfig
|
||||||
(pkgs.formats.json { }).generate "${arr.hostName}.json" arr.prowlarrConfig
|
);
|
||||||
);
|
}) arrs
|
||||||
}) arrs
|
);
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.quadlet = {
|
virtualisation.quadlet = {
|
||||||
|
@@ -51,7 +51,8 @@ rec {
|
|||||||
api_key = apiKey;
|
api_key = apiKey;
|
||||||
delete_old_custom_formats = true;
|
delete_old_custom_formats = true;
|
||||||
replace_existing_custom_formats = true;
|
replace_existing_custom_formats = true;
|
||||||
} // extraConfig;
|
}
|
||||||
|
// extraConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
mkJellyseerrConfig =
|
mkJellyseerrConfig =
|
||||||
|
@@ -51,7 +51,8 @@ rec {
|
|||||||
api_key = apiKey;
|
api_key = apiKey;
|
||||||
delete_old_custom_formats = true;
|
delete_old_custom_formats = true;
|
||||||
replace_existing_custom_formats = true;
|
replace_existing_custom_formats = true;
|
||||||
} // extraConfig;
|
}
|
||||||
|
// extraConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
mkJellyseerrConfig =
|
mkJellyseerrConfig =
|
||||||
|
@@ -19,7 +19,7 @@ find . -type f -name "sops.yaml" | while IFS= read -r sops_file; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
sed -i "/$host = mkNixosConfiguration/d" flake.nix
|
sed -i "/$host = mkNixosConfiguration/d" flake.nix
|
||||||
sed -i "/`$host`/d" ./README.md
|
sed -i "/\`$host\`/d" ./README.md
|
||||||
|
|
||||||
rm -rf "./hosts/$host"
|
rm -rf "./hosts/$host"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user