From da40ad35d9c797e4db4f42a82e28515f9ff332d1 Mon Sep 17 00:00:00 2001 From: Kopatz <7265381+Kropatz@users.noreply.github.com> Date: Mon, 9 Sep 2024 11:25:42 +0200 Subject: [PATCH] add compression function, formatting and fix error --- flake.lock | 22 ++-- home-manager/zsh/default.nix | 5 + modules/graphical/games.nix | 2 +- modules/services/kavita.nix | 221 ++++++++++++++++++----------------- systems/pc/configuration.nix | 5 +- 5 files changed, 133 insertions(+), 122 deletions(-) diff --git a/flake.lock b/flake.lock index 28ae601..ba17fd1 100644 --- a/flake.lock +++ b/flake.lock @@ -772,11 +772,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1725480560, + "lastModified": 1725635983, "narHash": "sha256-haSfwdurfltqQ/7YEmDcmWLnWwvAgelIHnXsHG34P1k=", "owner": "lilyinstarlight", "repo": "nix-update", - "rev": "68c5b279ba15bf573d856caf539ec404f1f22f30", + "rev": "ed54a7546affb3f8c9c3e10a6fa6fdb21756ec8f", "type": "github" }, "original": { @@ -796,11 +796,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1725639463, - "narHash": "sha256-K9ovOHVQ6RX6C79Kl/q7vjJYlwMsGQSJR2rvgkbACAc=", + "lastModified": 1725845699, + "narHash": "sha256-kbl/Gnll6Cgyk3S2+Je9dbabBBNdB/dKCUcQiXLi1lw=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "ea970b44141becc214f7cfeac6f841c0360b4c94", + "rev": "b0b8a91e3c15780ec98025dd71a560c0a2c7582c", "type": "github" }, "original": { @@ -880,11 +880,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1725407940, - "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=", + "lastModified": 1725693463, + "narHash": "sha256-ZPzhebbWBOr0zRWW10FfqfbJlan3G96/h3uqhiFqmwg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3", + "rev": "68e7dce0a6532e876980764167ad158174402c6f", "type": "github" }, "original": { @@ -1018,11 +1018,11 @@ ] }, "locked": { - "lastModified": 1725575741, - "narHash": "sha256-LaW4WaeNIaju+bo7F7/+TK073JqcuoUvhcxzWp/9OrE=", + "lastModified": 1725762472, + "narHash": "sha256-thdxLVdcfrJNMFV3Ej9mDIh6QgHyoYswiW0SFNwod8A=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6bf986d20552384209907fa0d5f3fa9a34d00995", + "rev": "57a1564c924ee4acbffe0ad3d65c7e90d3e77cd8", "type": "github" }, "original": { diff --git a/home-manager/zsh/default.nix b/home-manager/zsh/default.nix index 909d1ad..27e2967 100644 --- a/home-manager/zsh/default.nix +++ b/home-manager/zsh/default.nix @@ -3,6 +3,11 @@ enable = true; enableCompletion = true; autosuggestion.enable = true; + initExtra = '' + compressImage () { + magick $1 -strip -resize 1920x1080 -quality 85% compressed.jpg + } + ''; shellAliases = { # TODO: gifsicle -O3 --lossy=30 noita-20240328-191617-1612416266-00316616.gif -o noita-20240328-191617-1612416266.gif backupNoita = diff --git a/modules/graphical/games.nix b/modules/graphical/games.nix index 7a6c0f2..d626618 100644 --- a/modules/graphical/games.nix +++ b/modules/graphical/games.nix @@ -18,7 +18,7 @@ in { extraCompatPackages = with pkgs; [ proton-ge-bin ]; }; environment.systemPackages = [ pkgs.mangohud ] - // optional cfg.enablePreinstalled (with pkgs; [ + ++ optionals cfg.enablePreinstalled (with pkgs; [ taisei osu-lazer-bin wineWowPackages.unstableFull diff --git a/modules/services/kavita.nix b/modules/services/kavita.nix index 725f772..327fcd4 100644 --- a/modules/services/kavita.nix +++ b/modules/services/kavita.nix @@ -1,117 +1,120 @@ { config, pkgs, lib, inputs, ... }: with lib; -let - cfg = config.custom.services.kavita; -in -{ +let cfg = config.custom.services.kavita; +in { options.custom.services.kavita = { - enable = mkEnableOption "Enables kavita"; - https = mkOption { - type = types.bool; - default = true; - description = "Should it use https?"; - }; - dir = mkOption { - default = "/data/kavita"; - type = types.path; - description = "data path"; - }; - }; - 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 -"; - - 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"; + enable = mkEnableOption "Enables kavita"; + https = mkOption { + type = types.bool; + default = true; + description = "Should it use https?"; + }; + autoDownload = { + type = types.bool; + default = true; + description = "Should it auto download?"; + }; + dir = mkOption { + default = "/data/kavita"; + type = types.path; + description = "data path"; }; }; + 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" = { - # 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"; + 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"; + }; + }; + + # 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"; - ''; - }; -}; } diff --git a/systems/pc/configuration.nix b/systems/pc/configuration.nix index fad093c..0be1c99 100644 --- a/systems/pc/configuration.nix +++ b/systems/pc/configuration.nix @@ -55,7 +55,10 @@ }; #emulators.enable = true; gamemode.enable = true; - games.enable = true; + games = { + enable = true; + enablePreinstalled = true; + }; ime.enable = true; noise-supression.enable = true; obs.enable = true;