add compression function, formatting and fix error
This commit is contained in:
22
flake.lock
generated
22
flake.lock
generated
@@ -772,11 +772,11 @@
|
|||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725480560,
|
"lastModified": 1725635983,
|
||||||
"narHash": "sha256-haSfwdurfltqQ/7YEmDcmWLnWwvAgelIHnXsHG34P1k=",
|
"narHash": "sha256-haSfwdurfltqQ/7YEmDcmWLnWwvAgelIHnXsHG34P1k=",
|
||||||
"owner": "lilyinstarlight",
|
"owner": "lilyinstarlight",
|
||||||
"repo": "nix-update",
|
"repo": "nix-update",
|
||||||
"rev": "68c5b279ba15bf573d856caf539ec404f1f22f30",
|
"rev": "ed54a7546affb3f8c9c3e10a6fa6fdb21756ec8f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -796,11 +796,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725639463,
|
"lastModified": 1725845699,
|
||||||
"narHash": "sha256-K9ovOHVQ6RX6C79Kl/q7vjJYlwMsGQSJR2rvgkbACAc=",
|
"narHash": "sha256-kbl/Gnll6Cgyk3S2+Je9dbabBBNdB/dKCUcQiXLi1lw=",
|
||||||
"owner": "lilyinstarlight",
|
"owner": "lilyinstarlight",
|
||||||
"repo": "nixos-cosmic",
|
"repo": "nixos-cosmic",
|
||||||
"rev": "ea970b44141becc214f7cfeac6f841c0360b4c94",
|
"rev": "b0b8a91e3c15780ec98025dd71a560c0a2c7582c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -880,11 +880,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725407940,
|
"lastModified": 1725693463,
|
||||||
"narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=",
|
"narHash": "sha256-ZPzhebbWBOr0zRWW10FfqfbJlan3G96/h3uqhiFqmwg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
|
"rev": "68e7dce0a6532e876980764167ad158174402c6f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1018,11 +1018,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725575741,
|
"lastModified": 1725762472,
|
||||||
"narHash": "sha256-LaW4WaeNIaju+bo7F7/+TK073JqcuoUvhcxzWp/9OrE=",
|
"narHash": "sha256-thdxLVdcfrJNMFV3Ej9mDIh6QgHyoYswiW0SFNwod8A=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "6bf986d20552384209907fa0d5f3fa9a34d00995",
|
"rev": "57a1564c924ee4acbffe0ad3d65c7e90d3e77cd8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -3,6 +3,11 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
|
initExtra = ''
|
||||||
|
compressImage () {
|
||||||
|
magick $1 -strip -resize 1920x1080 -quality 85% compressed.jpg
|
||||||
|
}
|
||||||
|
'';
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# TODO: gifsicle -O3 --lossy=30 noita-20240328-191617-1612416266-00316616.gif -o noita-20240328-191617-1612416266.gif
|
# TODO: gifsicle -O3 --lossy=30 noita-20240328-191617-1612416266-00316616.gif -o noita-20240328-191617-1612416266.gif
|
||||||
backupNoita =
|
backupNoita =
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ in {
|
|||||||
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.mangohud ]
|
environment.systemPackages = [ pkgs.mangohud ]
|
||||||
// optional cfg.enablePreinstalled (with pkgs; [
|
++ optionals cfg.enablePreinstalled (with pkgs; [
|
||||||
taisei
|
taisei
|
||||||
osu-lazer-bin
|
osu-lazer-bin
|
||||||
wineWowPackages.unstableFull
|
wineWowPackages.unstableFull
|
||||||
|
|||||||
@@ -1,117 +1,120 @@
|
|||||||
{ config, pkgs, lib, inputs, ... }:
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let cfg = config.custom.services.kavita;
|
||||||
cfg = config.custom.services.kavita;
|
in {
|
||||||
in
|
|
||||||
{
|
|
||||||
options.custom.services.kavita = {
|
options.custom.services.kavita = {
|
||||||
enable = mkEnableOption "Enables kavita";
|
enable = mkEnableOption "Enables kavita";
|
||||||
https = mkOption {
|
https = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = "Should it use https?";
|
description = "Should it use https?";
|
||||||
};
|
};
|
||||||
dir = mkOption {
|
autoDownload = {
|
||||||
default = "/data/kavita";
|
type = types.bool;
|
||||||
type = types.path;
|
default = true;
|
||||||
description = "data path";
|
description = "Should it auto download?";
|
||||||
};
|
};
|
||||||
};
|
dir = mkOption {
|
||||||
config =
|
default = "/data/kavita";
|
||||||
let
|
type = types.path;
|
||||||
fqdn = "kavita-kopatz.duckdns.org";
|
description = "data path";
|
||||||
useStepCa = false; #config.services.step-ca.enable;
|
|
||||||
useHttps = cfg.https;
|
|
||||||
baseDir = cfg.dir;
|
|
||||||
mangal = "${pkgs.mangal}/bin/mangal";
|
|
||||||
githubRunnerEnabled = config.services.github-runners ? oberprofis.enable;
|
|
||||||
in lib.mkIf cfg.enable {
|
|
||||||
networking.firewall.allowedTCPPorts = [ 5000 ];
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
(if githubRunnerEnabled then "d ${baseDir} 0750 kavita github-actions-runner -" else "d ${baseDir} 0770 kavita kavita -")
|
|
||||||
"d ${baseDir}/manga 0770 kavita kavita -"
|
|
||||||
] ++ lib.optional githubRunnerEnabled "d ${baseDir}/github 0770 github-actions-runner kavita -";
|
|
||||||
|
|
||||||
age.secrets.kavita = {
|
|
||||||
file = ../../secrets/kavita.age;
|
|
||||||
owner = "kavita";
|
|
||||||
group = "kavita";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.kavita = {
|
|
||||||
enable = true;
|
|
||||||
user = "kavita";
|
|
||||||
package = let
|
|
||||||
backend = pkgs.kavita.backend.overrideAttrs (old: {
|
|
||||||
patches = old.patches ++ [./kavita-patches.diff ];
|
|
||||||
});
|
|
||||||
kavitaPatched = pkgs.kavita.overrideAttrs (old: {
|
|
||||||
backend = backend;
|
|
||||||
});
|
|
||||||
in kavitaPatched;
|
|
||||||
settings.Port = 5000;
|
|
||||||
dataDir = baseDir;
|
|
||||||
tokenKeyFile = config.age.secrets.kavita.path;
|
|
||||||
settings.IpAddresses = "127.0.0.1";
|
|
||||||
settings.BaseUrl = "/kavita";
|
|
||||||
};
|
|
||||||
|
|
||||||
#todo: base url needs new kavita version
|
|
||||||
systemd.services.kavita = {
|
|
||||||
after = [ "nginx.service" ] ++ lib.optional useStepCa "step-ca.service";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.download-manga = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
wants = [ "network-online.target" ];
|
|
||||||
after = [ "network-online.target" ];
|
|
||||||
startAt = "*-*-* 19:00:00";
|
|
||||||
restartIfChanged = false;
|
|
||||||
script = ''
|
|
||||||
${mangal} clear -q
|
|
||||||
${mangal} clear -c
|
|
||||||
${mangal} inline -S Mangapill -q omniscient -m first -d
|
|
||||||
${mangal} inline -S Mangapill --query "oshi-no-ko" --manga first --download
|
|
||||||
${mangal} inline -S Mangapill --query "Frieren" --manga first --download -f
|
|
||||||
${mangal} inline -S Mangapill --query "Chainsaw" --manga first --download
|
|
||||||
${mangal} inline -S Mangapill --query "Jujutsu%20Kaisen" --manga first --download
|
|
||||||
${mangal} inline -S Mangapill --query "solo-leveling" --manga first --download
|
|
||||||
${mangal} inline -S Mangapill --query "berserk" --manga first --download
|
|
||||||
${mangal} inline -S Mangapill --query "the-greatest-real-estate" --manga first --download
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
PrivateTmp = true;
|
|
||||||
User = "kavita";
|
|
||||||
Group = "kavita";
|
|
||||||
Type = "oneshot";
|
|
||||||
WorkingDirectory = "${baseDir}/manga";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
config = let
|
||||||
|
fqdn = "kavita-kopatz.duckdns.org";
|
||||||
|
useStepCa = false; # config.services.step-ca.enable;
|
||||||
|
useHttps = cfg.https;
|
||||||
|
baseDir = cfg.dir;
|
||||||
|
mangal = "${pkgs.mangal}/bin/mangal";
|
||||||
|
githubRunnerEnabled = config.services.github-runners ? oberprofis.enable;
|
||||||
|
in lib.mkIf cfg.enable {
|
||||||
|
networking.firewall.allowedTCPPorts = [ 5000 ];
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
(if githubRunnerEnabled then
|
||||||
|
"d ${baseDir} 0750 kavita github-actions-runner -"
|
||||||
|
else
|
||||||
|
"d ${baseDir} 0770 kavita kavita -")
|
||||||
|
"d ${baseDir}/manga 0770 kavita kavita -"
|
||||||
|
] ++ lib.optional githubRunnerEnabled
|
||||||
|
"d ${baseDir}/github 0770 github-actions-runner kavita -";
|
||||||
|
|
||||||
# services.nginx.virtualHosts."kopatz.ddns.net".locations."/kavita" = {
|
age.secrets.kavita = {
|
||||||
# proxyPass = "http://127.0.0.1:5000";
|
file = ../../secrets/kavita.age;
|
||||||
# extraConfig = ''
|
owner = "kavita";
|
||||||
# add_header Access-Control-Allow-Origin *;
|
group = "kavita";
|
||||||
# add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
|
};
|
||||||
# add_header Access-Control-Allow-Headers "Authorization, Origin, X-Requested-With, Content-Type, Accept";
|
|
||||||
# '';
|
services.kavita = {
|
||||||
# };
|
enable = true;
|
||||||
security.acme.certs."${fqdn}" = lib.mkIf useStepCa {
|
user = "kavita";
|
||||||
server = "https://127.0.0.1:8443/acme/kop-acme/directory";
|
package = let
|
||||||
|
backend = pkgs.kavita.backend.overrideAttrs
|
||||||
|
(old: { patches = old.patches ++ [ ./kavita-patches.diff ]; });
|
||||||
|
kavitaPatched = pkgs.kavita.overrideAttrs (old: { backend = backend; });
|
||||||
|
in kavitaPatched;
|
||||||
|
settings.Port = 5000;
|
||||||
|
dataDir = baseDir;
|
||||||
|
tokenKeyFile = config.age.secrets.kavita.path;
|
||||||
|
settings.IpAddresses = "127.0.0.1";
|
||||||
|
settings.BaseUrl = "/kavita";
|
||||||
|
};
|
||||||
|
|
||||||
|
#todo: base url needs new kavita version
|
||||||
|
systemd.services.kavita = {
|
||||||
|
after = [ "nginx.service" ] ++ lib.optional useStepCa "step-ca.service";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.download-manga = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
startAt = "*-*-* 19:00:00";
|
||||||
|
restartIfChanged = false;
|
||||||
|
script = ''
|
||||||
|
${mangal} clear -q
|
||||||
|
${mangal} clear -c
|
||||||
|
${mangal} inline -S Mangapill -q omniscient -m first -d
|
||||||
|
${mangal} inline -S Mangapill --query "oshi-no-ko" --manga first --download
|
||||||
|
${mangal} inline -S Mangapill --query "Frieren" --manga first --download -f
|
||||||
|
${mangal} inline -S Mangapill --query "Chainsaw" --manga first --download
|
||||||
|
${mangal} inline -S Mangapill --query "Jujutsu%20Kaisen" --manga first --download
|
||||||
|
${mangal} inline -S Mangapill --query "solo-leveling" --manga first --download
|
||||||
|
${mangal} inline -S Mangapill --query "berserk" --manga first --download
|
||||||
|
${mangal} inline -S Mangapill --query "the-greatest-real-estate" --manga first --download
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
PrivateTmp = true;
|
||||||
|
User = "kavita";
|
||||||
|
Group = "kavita";
|
||||||
|
Type = "oneshot";
|
||||||
|
WorkingDirectory = "${baseDir}/manga";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# services.nginx.virtualHosts."kopatz.ddns.net".locations."/kavita" = {
|
||||||
|
# proxyPass = "http://127.0.0.1:5000";
|
||||||
|
# extraConfig = ''
|
||||||
|
# add_header Access-Control-Allow-Origin *;
|
||||||
|
# add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
|
||||||
|
# add_header Access-Control-Allow-Headers "Authorization, Origin, X-Requested-With, Content-Type, Accept";
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
security.acme.certs."${fqdn}" = lib.mkIf useStepCa {
|
||||||
|
server = "https://127.0.0.1:8443/acme/kop-acme/directory";
|
||||||
|
};
|
||||||
|
services.nginx.virtualHosts."${fqdn}" = {
|
||||||
|
forceSSL = useHttps;
|
||||||
|
enableACME = useHttps;
|
||||||
|
quic = useHttps;
|
||||||
|
http3 = useHttps;
|
||||||
|
locations."/".proxyPass = "http://127.0.0.1:5000";
|
||||||
|
locations."/".extraConfig = ''
|
||||||
|
more_clear_headers 'x-frame-options';
|
||||||
|
add_header Access-Control-Allow-Origin *;
|
||||||
|
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
|
||||||
|
add_header Access-Control-Allow-Headers "Authorization, Origin, X-Requested-With, Content-Type, Accept";
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
services.nginx.virtualHosts."${fqdn}" = {
|
|
||||||
forceSSL = useHttps;
|
|
||||||
enableACME = useHttps;
|
|
||||||
quic = useHttps;
|
|
||||||
http3 = useHttps;
|
|
||||||
locations."/".proxyPass = "http://127.0.0.1:5000";
|
|
||||||
locations."/".extraConfig = ''
|
|
||||||
more_clear_headers 'x-frame-options';
|
|
||||||
add_header Access-Control-Allow-Origin *;
|
|
||||||
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
|
|
||||||
add_header Access-Control-Allow-Headers "Authorization, Origin, X-Requested-With, Content-Type, Accept";
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,10 @@
|
|||||||
};
|
};
|
||||||
#emulators.enable = true;
|
#emulators.enable = true;
|
||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
games.enable = true;
|
games = {
|
||||||
|
enable = true;
|
||||||
|
enablePreinstalled = true;
|
||||||
|
};
|
||||||
ime.enable = true;
|
ime.enable = true;
|
||||||
noise-supression.enable = true;
|
noise-supression.enable = true;
|
||||||
obs.enable = true;
|
obs.enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user