diff --git a/flake.lock b/flake.lock index 8267763..79a3cd7 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1751619699, - "narHash": "sha256-3Si+Gi0e8PDIzUrV6LYCUN21EvaQyPaOU64kF6KT824=", + "lastModified": 1751930350, + "narHash": "sha256-hBIrzyrwG3XjeNyzVNWKDX+yYVlpwAqf9ovgF7qecug=", "owner": "aylur", "repo": "ags", - "rev": "e5e2efaf2e05e077190cfddabf5b827edae5ef8b", + "rev": "22f37ccb0db58d9d8a11ad0054ab20ecfad005ad", "type": "github" }, "original": { @@ -32,11 +32,11 @@ ] }, "locked": { - "lastModified": 1751126708, - "narHash": "sha256-AodIKw7TmI7rHVcOfEsO82stupMYIMVQeLAUQfVxnkU=", + "lastModified": 1752227802, + "narHash": "sha256-5Nr80lTZJ8ewuxIzRHc6E8L4LW4rdGZukiZyL7nOVSE=", "owner": "aylur", "repo": "astal", - "rev": "ac90f09385a2295da9fdc108aaba4a317aaeacc7", + "rev": "81eb3770965190024803ed6dd0fe35318da64831", "type": "github" }, "original": { @@ -53,11 +53,11 @@ ] }, "locked": { - "lastModified": 1751607816, - "narHash": "sha256-5PtrwjqCIJ4DKQhzYdm8RFePBuwb+yTzjV52wWoGSt4=", + "lastModified": 1752113600, + "narHash": "sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB+jb4A2UmiR+kzY9CLI=", "owner": "nix-community", "repo": "disko", - "rev": "da6109c917b48abc1f76dd5c9bf3901c8c80f662", + "rev": "79264292b7e3482e5702932949de9cbb69fedf6d", "type": "github" }, "original": { @@ -112,11 +112,11 @@ "gnim": { "flake": false, "locked": { - "lastModified": 1751120710, - "narHash": "sha256-sT1ILM8m1QG8CeMmqLHhW/8T/MzUq3JL9jO3V7FMa4w=", + "lastModified": 1751928958, + "narHash": "sha256-vQY2L+Hnp6F1MHFa3UbMft1goGw3iODI5M+96Z7P+9Q=", "owner": "aylur", "repo": "gnim", - "rev": "5d2b734be452e2819f3a7313dbb34fa43c23e5d9", + "rev": "9bffa83f52f711b13e3c139454623a9aea4f5552", "type": "github" }, "original": { @@ -132,11 +132,11 @@ ] }, "locked": { - "lastModified": 1751643357, - "narHash": "sha256-a9X6r0L9iVWa4sAo03w5GCa3EtKYOPxnlbqz7RAoqxo=", + "lastModified": 1752220369, + "narHash": "sha256-Fk4KFIfdq4iATbwojGQvHFly93mZJnGuD6k+P4YV/lE=", "owner": "karaolidis", "repo": "home-manager", - "rev": "7689125c6ee26f606a0402790c5bc6f1803b48cf", + "rev": "444d7a18b87260772c5293a10f998d3da67e5f44", "type": "github" }, "original": { @@ -148,11 +148,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751646237, - "narHash": "sha256-Pz36DVKJdrHaSuLkwCWypkSVeL4nUim8IR5F6KmABbU=", + "lastModified": 1752234186, + "narHash": "sha256-v9iaBVKTk6vGVle8q6s22reTtl+BxJFA+i6Gs5YmMXo=", "owner": "karaolidis", "repo": "nixpkgs", - "rev": "066db057b67632761397b46f4803a927aa9e2d80", + "rev": "5b6fdd0939385dff89d6cfc5d2e125a392f7a107", "type": "github" }, "original": { @@ -167,17 +167,14 @@ "flake-parts": "flake-parts", "nixpkgs": [ "nixpkgs" - ], - "treefmt-nix": [ - "treefmt-nix" ] }, "locked": { - "lastModified": 1751668458, - "narHash": "sha256-GKNMo5gVuAuwTIkHD7b9abm1TvSv+gYNo4MSnekmg1g=", + "lastModified": 1752229622, + "narHash": "sha256-jGJH7ssNiuex4+FVOS97PRhmkMAeJreKfmEkWhka/Bc=", "owner": "nix-community", "repo": "NUR", - "rev": "7bdd7e68584498bb1a8304454067d1bd95a9ecae", + "rev": "b814b0f9755b2d58ecd69303cb438d0776ee49a5", "type": "github" }, "original": { @@ -195,11 +192,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1751055357, - "narHash": "sha256-F3BW9LVnFK378ztxXty5NJmSOxhgpc0LH0QHrrThBOA=", + "lastModified": 1752193435, + "narHash": "sha256-kEmmqqBoiB46HcFNYojiTAqZiCraaHMAbB5wxWg2/cU=", "owner": "icewind1991", "repo": "nvidia-patch-nixos", - "rev": "d5947772bf136484712f5d560df161990d427687", + "rev": "ab69bce4e85c45c356acbc9ab818fbbd646e44c3", "type": "github" }, "original": { @@ -211,11 +208,11 @@ }, "quadlet-nix": { "locked": { - "lastModified": 1751500838, - "narHash": "sha256-vk5LeXsVkPM8uy+N1ZdzRPRAzzu+vzTBviqAiFpK6s8=", + "lastModified": 1751931728, + "narHash": "sha256-i4OALPUnFhe9j9NauZaszZZTgIYSaLHmCO2gp9MZYKQ=", "owner": "SEIAROTg", "repo": "quadlet-nix", - "rev": "ba095a211dc8d2cdcc146f11cd97f26490d6669d", + "rev": "5cb4f185dc3722d589bdf238e6802c4c9f87994e", "type": "github" }, "original": { @@ -273,11 +270,11 @@ ] }, "locked": { - "lastModified": 1751171964, - "narHash": "sha256-SeVvQm9ex+6BhDPIsRt9E1kSmMblQ6gTi53baphnX08=", + "lastModified": 1751776600, + "narHash": "sha256-75wd/aSvSoXUVd/buwI+Gsqx6LdmBVMbdXw+tCV1u58=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "16adc163d966fc2bb5da47580df4602ae2c7a310", + "rev": "54fad36eeae085f4a6ce4522bc351705b9c0c58a", "type": "github" }, "original": { @@ -325,11 +322,11 @@ ] }, "locked": { - "lastModified": 1750931469, - "narHash": "sha256-0IEdQB1nS+uViQw4k3VGUXntjkDp7aAlqcxdewb/hAc=", + "lastModified": 1752055615, + "narHash": "sha256-19m7P4O/Aw/6+CzncWMAJu89JaKeMh3aMle1CNQSIwM=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "ac8e6f32e11e9c7f153823abc3ab007f2a65d3e1", + "rev": "c9d477b5d5bd7f26adddd3f96cfd6a904768d4f9", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 29798b9..d2ca1b6 100644 --- a/flake.nix +++ b/flake.nix @@ -62,10 +62,7 @@ repo = "NUR"; ref = "main"; - inputs = { - nixpkgs.follows = "nixpkgs"; - treefmt-nix.follows = "treefmt-nix"; - }; + inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils = { diff --git a/hosts/common/configs/system/sshd/default.nix b/hosts/common/configs/system/sshd/default.nix index c3b29cb..1c056c0 100644 --- a/hosts/common/configs/system/sshd/default.nix +++ b/hosts/common/configs/system/sshd/default.nix @@ -1,7 +1,11 @@ -{ ... }: +{ pkgs, ... }: { environment = { - enableAllTerminfo = true; + systemPackages = with pkgs; [ + kitty.terminfo + tmux.terminfo + ]; + persistence."/persist/state"."/var/lib/fail2ban" = { }; }; diff --git a/hosts/common/configs/user/console/android/default.nix b/hosts/common/configs/user/console/android/default.nix index 4b26c50..12f5eb8 100644 --- a/hosts/common/configs/user/console/android/default.nix +++ b/hosts/common/configs/user/console/android/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: { nixpkgs.overlays = [ diff --git a/hosts/common/configs/user/console/brightnessctl/default.nix b/hosts/common/configs/user/console/brightnessctl/default.nix index 2a75ab1..f83cbc9 100644 --- a/hosts/common/configs/user/console/brightnessctl/default.nix +++ b/hosts/common/configs/user/console/brightnessctl/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { users.users.${user}.extraGroups = [ diff --git a/hosts/common/configs/user/console/btop/default.nix b/hosts/common/configs/user/console/btop/default.nix index 43fc3fe..24d3b95 100644 --- a/hosts/common/configs/user/console/btop/default.nix +++ b/hosts/common/configs/user/console/btop/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.btop = { diff --git a/hosts/common/configs/user/console/dive/default.nix b/hosts/common/configs/user/console/dive/default.nix index e75e1c4..3353d88 100644 --- a/hosts/common/configs/user/console/dive/default.nix +++ b/hosts/common/configs/user/console/dive/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/console/fastfetch/default.nix b/hosts/common/configs/user/console/fastfetch/default.nix index 4427c1b..c914b7c 100644 --- a/hosts/common/configs/user/console/fastfetch/default.nix +++ b/hosts/common/configs/user/console/fastfetch/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.fastfetch.enable = true; diff --git a/hosts/common/configs/user/console/ffmpeg/default.nix b/hosts/common/configs/user/console/ffmpeg/default.nix index f561fc0..6e162b5 100644 --- a/hosts/common/configs/user/console/ffmpeg/default.nix +++ b/hosts/common/configs/user/console/ffmpeg/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ diff --git a/hosts/common/configs/user/console/git/default.nix b/hosts/common/configs/user/console/git/default.nix index 610edf1..40fce21 100644 --- a/hosts/common/configs/user/console/git/default.nix +++ b/hosts/common/configs/user/console/git/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/console/gpg-agent/default.nix b/hosts/common/configs/user/console/gpg-agent/default.nix index 64cdbdd..00c7497 100644 --- a/hosts/common/configs/user/console/gpg-agent/default.nix +++ b/hosts/common/configs/user/console/gpg-agent/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/console/home-manager/default.nix b/hosts/common/configs/user/console/home-manager/default.nix index d78254e..796ccbb 100644 --- a/hosts/common/configs/user/console/home-manager/default.nix +++ b/hosts/common/configs/user/console/home-manager/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, ... }: { imports = [ inputs.home-manager.nixosModules.default ]; diff --git a/hosts/common/configs/user/console/imagemagick/default.nix b/hosts/common/configs/user/console/imagemagick/default.nix index 9353919..4930ef7 100644 --- a/hosts/common/configs/user/console/imagemagick/default.nix +++ b/hosts/common/configs/user/console/imagemagick/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ imagemagick ]; diff --git a/hosts/common/configs/user/console/ip/default.nix b/hosts/common/configs/user/console/ip/default.nix index 5e7ede2..a80548c 100644 --- a/hosts/common/configs/user/console/ip/default.nix +++ b/hosts/common/configs/user/console/ip/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ diff --git a/hosts/common/configs/user/console/jq/default.nix b/hosts/common/configs/user/console/jq/default.nix index 00133ae..a154d88 100644 --- a/hosts/common/configs/user/console/jq/default.nix +++ b/hosts/common/configs/user/console/jq/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.jq.enable = true; diff --git a/hosts/common/configs/user/console/kubernetes/default.nix b/hosts/common/configs/user/console/kubernetes/default.nix index 5fa2a71..2cdbdd1 100644 --- a/hosts/common/configs/user/console/kubernetes/default.nix +++ b/hosts/common/configs/user/console/kubernetes/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/console/libvirt/default.nix b/hosts/common/configs/user/console/libvirt/default.nix index 92958fc..74a9774 100644 --- a/hosts/common/configs/user/console/libvirt/default.nix +++ b/hosts/common/configs/user/console/libvirt/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.dconf.settings = { diff --git a/hosts/common/configs/user/console/lsof/default.nix b/hosts/common/configs/user/console/lsof/default.nix index a8df201..5f5b547 100644 --- a/hosts/common/configs/user/console/lsof/default.nix +++ b/hosts/common/configs/user/console/lsof/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ lsof ]; diff --git a/hosts/common/configs/user/console/mprocs/default.nix b/hosts/common/configs/user/console/mprocs/default.nix index 98bc4eb..930d8e6 100644 --- a/hosts/common/configs/user/console/mprocs/default.nix +++ b/hosts/common/configs/user/console/mprocs/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ mprocs ]; diff --git a/hosts/common/configs/user/console/ncdu/default.nix b/hosts/common/configs/user/console/ncdu/default.nix index e7b7e56..1766db4 100644 --- a/hosts/common/configs/user/console/ncdu/default.nix +++ b/hosts/common/configs/user/console/ncdu/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/console/ncspot/default.nix b/hosts/common/configs/user/console/ncspot/default.nix index 2323e44..dc726af 100644 --- a/hosts/common/configs/user/console/ncspot/default.nix +++ b/hosts/common/configs/user/console/ncspot/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { environment.persistence = { diff --git a/hosts/common/configs/user/console/neovim/default.nix b/hosts/common/configs/user/console/neovim/default.nix index ff1358c..c5e0151 100644 --- a/hosts/common/configs/user/console/neovim/default.nix +++ b/hosts/common/configs/user/console/neovim/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs = { diff --git a/hosts/common/configs/user/console/nix-cleanup/default.nix b/hosts/common/configs/user/console/nix-cleanup/default.nix index 6658aa1..02aa272 100644 --- a/hosts/common/configs/user/console/nix-cleanup/default.nix +++ b/hosts/common/configs/user/console/nix-cleanup/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.zsh.shellAliases.ncl = "sudo nix-cleanup"; diff --git a/hosts/common/configs/user/console/nix-develop/default.nix b/hosts/common/configs/user/console/nix-develop/default.nix index 5a255a5..d2ec03a 100644 --- a/hosts/common/configs/user/console/nix-develop/default.nix +++ b/hosts/common/configs/user/console/nix-develop/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, inputs, diff --git a/hosts/common/configs/user/console/nix-direnv/default.nix b/hosts/common/configs/user/console/nix-direnv/default.nix index 6bd294a..6b8d568 100644 --- a/hosts/common/configs/user/console/nix-direnv/default.nix +++ b/hosts/common/configs/user/console/nix-direnv/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, diff --git a/hosts/common/configs/user/console/nix/default.nix b/hosts/common/configs/user/console/nix/default.nix index 76650da..83a4fae 100644 --- a/hosts/common/configs/user/console/nix/default.nix +++ b/hosts/common/configs/user/console/nix/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { environment.persistence."/persist/cache"."${home}/.cache/nix" = { }; diff --git a/hosts/common/configs/user/console/ouch/default.nix b/hosts/common/configs/user/console/ouch/default.nix index 4b1cbfc..528405a 100644 --- a/hosts/common/configs/user/console/ouch/default.nix +++ b/hosts/common/configs/user/console/ouch/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ ouch ]; diff --git a/hosts/common/configs/user/console/pipewire/default.nix b/hosts/common/configs/user/console/pipewire/default.nix index 3f952b1..0dc6a2e 100644 --- a/hosts/common/configs/user/console/pipewire/default.nix +++ b/hosts/common/configs/user/console/pipewire/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: { environment.persistence."/persist/state"."${home}/.local/state/wireplumber" = { }; diff --git a/hosts/common/configs/user/console/podman/default.nix b/hosts/common/configs/user/console/podman/default.nix index d469616..0bf1e5e 100644 --- a/hosts/common/configs/user/console/podman/default.nix +++ b/hosts/common/configs/user/console/podman/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, diff --git a/hosts/common/configs/user/console/sops/default.nix b/hosts/common/configs/user/console/sops/default.nix index 93b1687..e52134e 100644 --- a/hosts/common/configs/user/console/sops/default.nix +++ b/hosts/common/configs/user/console/sops/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, ... }: { environment.persistence."/persist/state"."${home}/.config/sops-nix/key.txt" = { }; diff --git a/hosts/common/configs/user/console/ssh-agent/default.nix b/hosts/common/configs/user/console/ssh-agent/default.nix index 7346616..e3416e9 100644 --- a/hosts/common/configs/user/console/ssh-agent/default.nix +++ b/hosts/common/configs/user/console/ssh-agent/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/console/ssh/default.nix b/hosts/common/configs/user/console/ssh/default.nix index c9ca991..d62fffd 100644 --- a/hosts/common/configs/user/console/ssh/default.nix +++ b/hosts/common/configs/user/console/ssh/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.ssh.enable = true; diff --git a/hosts/common/configs/user/console/syncthing/default.nix b/hosts/common/configs/user/console/syncthing/default.nix index 56d92b9..89b504a 100644 --- a/hosts/common/configs/user/console/syncthing/default.nix +++ b/hosts/common/configs/user/console/syncthing/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, utils, ... }: { networking.firewall = { diff --git a/hosts/common/configs/user/console/tmux/default.nix b/hosts/common/configs/user/console/tmux/default.nix index cc923a2..f624e9a 100644 --- a/hosts/common/configs/user/console/tmux/default.nix +++ b/hosts/common/configs/user/console/tmux/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.tmux.enable = true; diff --git a/hosts/common/configs/user/console/tree/default.nix b/hosts/common/configs/user/console/tree/default.nix index 0f10337..9d961b3 100644 --- a/hosts/common/configs/user/console/tree/default.nix +++ b/hosts/common/configs/user/console/tree/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ tree ]; diff --git a/hosts/common/configs/user/console/wget/default.nix b/hosts/common/configs/user/console/wget/default.nix index 8276048..c470cb6 100644 --- a/hosts/common/configs/user/console/wget/default.nix +++ b/hosts/common/configs/user/console/wget/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ wget ]; diff --git a/hosts/common/configs/user/console/xdg/default.nix b/hosts/common/configs/user/console/xdg/default.nix index 7a19fe6..203abef 100644 --- a/hosts/common/configs/user/console/xdg/default.nix +++ b/hosts/common/configs/user/console/xdg/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: { environment.persistence."/persist/user" = { diff --git a/hosts/common/configs/user/console/yazi/default.nix b/hosts/common/configs/user/console/yazi/default.nix index 01fc646..0dfc84f 100644 --- a/hosts/common/configs/user/console/yazi/default.nix +++ b/hosts/common/configs/user/console/yazi/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/console/yt-dlp/default.nix b/hosts/common/configs/user/console/yt-dlp/default.nix index 62a310e..970aed9 100644 --- a/hosts/common/configs/user/console/yt-dlp/default.nix +++ b/hosts/common/configs/user/console/yt-dlp/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, ... }: { home-manager.users.${user}.programs.yt-dlp = { diff --git a/hosts/common/configs/user/console/zoxide/default.nix b/hosts/common/configs/user/console/zoxide/default.nix index 1108859..661c142 100644 --- a/hosts/common/configs/user/console/zoxide/default.nix +++ b/hosts/common/configs/user/console/zoxide/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { environment.persistence."/persist/state"."${home}/.local/share/zoxide" = { }; diff --git a/hosts/common/configs/user/console/zsh/default.nix b/hosts/common/configs/user/console/zsh/default.nix index 5109c83..761110e 100644 --- a/hosts/common/configs/user/console/zsh/default.nix +++ b/hosts/common/configs/user/console/zsh/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: { environment = { diff --git a/hosts/common/configs/user/default.nix b/hosts/common/configs/user/default.nix index 483dfed..6bf20e1 100644 --- a/hosts/common/configs/user/default.nix +++ b/hosts/common/configs/user/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { imports = [ ./options.nix ]; diff --git a/hosts/common/configs/user/gui/astal/default.nix b/hosts/common/configs/user/gui/astal/default.nix index b1b9b4b..e2f25f3 100644 --- a/hosts/common/configs/user/gui/astal/default.nix +++ b/hosts/common/configs/user/gui/astal/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/bluetooth/default.nix b/hosts/common/configs/user/gui/bluetooth/default.nix index cb01a85..5e5bca0 100644 --- a/hosts/common/configs/user/gui/bluetooth/default.nix +++ b/hosts/common/configs/user/gui/bluetooth/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/brightnessctl/default.nix b/hosts/common/configs/user/gui/brightnessctl/default.nix index 1f023ca..3941701 100644 --- a/hosts/common/configs/user/gui/brightnessctl/default.nix +++ b/hosts/common/configs/user/gui/brightnessctl/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { users.users.${user}.extraGroups = [ diff --git a/hosts/common/configs/user/gui/btop/default.nix b/hosts/common/configs/user/gui/btop/default.nix index ab81f86..550e7cf 100644 --- a/hosts/common/configs/user/gui/btop/default.nix +++ b/hosts/common/configs/user/gui/btop/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/clipbook/default.nix b/hosts/common/configs/user/gui/clipbook/default.nix index 3949265..a4e47a8 100644 --- a/hosts/common/configs/user/gui/clipbook/default.nix +++ b/hosts/common/configs/user/gui/clipbook/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/cliphist/default.nix b/hosts/common/configs/user/gui/cliphist/default.nix index cfe2c80..c89f8ba 100644 --- a/hosts/common/configs/user/gui/cliphist/default.nix +++ b/hosts/common/configs/user/gui/cliphist/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/darktable/default.nix b/hosts/common/configs/user/gui/darktable/default.nix index 5ea11a7..aab2c89 100644 --- a/hosts/common/configs/user/gui/darktable/default.nix +++ b/hosts/common/configs/user/gui/darktable/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/common/configs/user/gui/discord/default.nix b/hosts/common/configs/user/gui/discord/default.nix index 0269221..56380cb 100644 --- a/hosts/common/configs/user/gui/discord/default.nix +++ b/hosts/common/configs/user/gui/discord/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { environment.persistence."/persist/state"."${home}/.config/vesktop" = { }; diff --git a/hosts/common/configs/user/gui/emoji/default.nix b/hosts/common/configs/user/gui/emoji/default.nix index 93dc302..0c04e4a 100644 --- a/hosts/common/configs/user/gui/emoji/default.nix +++ b/hosts/common/configs/user/gui/emoji/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/feh/default.nix b/hosts/common/configs/user/gui/feh/default.nix index f60b5f6..78af143 100644 --- a/hosts/common/configs/user/gui/feh/default.nix +++ b/hosts/common/configs/user/gui/feh/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/firefox/default.nix b/hosts/common/configs/user/gui/firefox/default.nix index 8aed0ae..201f44b 100644 --- a/hosts/common/configs/user/gui/firefox/default.nix +++ b/hosts/common/configs/user/gui/firefox/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/gtk/default.nix b/hosts/common/configs/user/gui/gtk/default.nix index 15fa49a..dea4d53 100644 --- a/hosts/common/configs/user/gui/gtk/default.nix +++ b/hosts/common/configs/user/gui/gtk/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/hyprland/default.nix b/hosts/common/configs/user/gui/hyprland/default.nix index fdd8040..35bf0f7 100644 --- a/hosts/common/configs/user/gui/hyprland/default.nix +++ b/hosts/common/configs/user/gui/hyprland/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/hyprpicker/default.nix b/hosts/common/configs/user/gui/hyprpicker/default.nix index 433ad95..0d3bcf3 100644 --- a/hosts/common/configs/user/gui/hyprpicker/default.nix +++ b/hosts/common/configs/user/gui/hyprpicker/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/hyprshot/default.nix b/hosts/common/configs/user/gui/hyprshot/default.nix index 730b3ef..f010a2c 100644 --- a/hosts/common/configs/user/gui/hyprshot/default.nix +++ b/hosts/common/configs/user/gui/hyprshot/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/kitty/default.nix b/hosts/common/configs/user/gui/kitty/default.nix index 4b71b9d..914e46e 100644 --- a/hosts/common/configs/user/gui/kitty/default.nix +++ b/hosts/common/configs/user/gui/kitty/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, @@ -24,8 +21,12 @@ in inherit (hmConfig.theme.font) size; }; + settings = { + confirm_os_window_close = 0; + enable_audio_bell = false; + }; + extraConfig = '' - confirm_os_window_close 0 include theme.conf ''; }; diff --git a/hosts/common/configs/user/gui/libreoffice/default.nix b/hosts/common/configs/user/gui/libreoffice/default.nix index 65e5207..48e16f5 100644 --- a/hosts/common/configs/user/gui/libreoffice/default.nix +++ b/hosts/common/configs/user/gui/libreoffice/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/mpv/default.nix b/hosts/common/configs/user/gui/mpv/default.nix index 1fa408f..b6158e4 100644 --- a/hosts/common/configs/user/gui/mpv/default.nix +++ b/hosts/common/configs/user/gui/mpv/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { nixpkgs.overlays = [ diff --git a/hosts/common/configs/user/gui/networkmanager/default.nix b/hosts/common/configs/user/gui/networkmanager/default.nix index 3e7c780..3e4dbfa 100644 --- a/hosts/common/configs/user/gui/networkmanager/default.nix +++ b/hosts/common/configs/user/gui/networkmanager/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/obs/default.nix b/hosts/common/configs/user/gui/obs/default.nix index 5edc1a3..1e167fc 100644 --- a/hosts/common/configs/user/gui/obs/default.nix +++ b/hosts/common/configs/user/gui/obs/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, ... }: { boot = { diff --git a/hosts/common/configs/user/gui/obsidian/default.nix b/hosts/common/configs/user/gui/obsidian/default.nix index 16e6b63..3f62861 100644 --- a/hosts/common/configs/user/gui/obsidian/default.nix +++ b/hosts/common/configs/user/gui/obsidian/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/pipewire/default.nix b/hosts/common/configs/user/gui/pipewire/default.nix index 2f776e9..1fb64fd 100644 --- a/hosts/common/configs/user/gui/pipewire/default.nix +++ b/hosts/common/configs/user/gui/pipewire/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/qalculate/default.nix b/hosts/common/configs/user/gui/qalculate/default.nix index 073b7d2..889fd40 100644 --- a/hosts/common/configs/user/gui/qalculate/default.nix +++ b/hosts/common/configs/user/gui/qalculate/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, config, diff --git a/hosts/common/configs/user/gui/qt/default.nix b/hosts/common/configs/user/gui/qt/default.nix index 95648d2..9365eb8 100644 --- a/hosts/common/configs/user/gui/qt/default.nix +++ b/hosts/common/configs/user/gui/qt/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/rofi/default.nix b/hosts/common/configs/user/gui/rofi/default.nix index 0536456..67ef5b4 100644 --- a/hosts/common/configs/user/gui/rofi/default.nix +++ b/hosts/common/configs/user/gui/rofi/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/rquickshare/default.nix b/hosts/common/configs/user/gui/rquickshare/default.nix index 3382667..f4d57f8 100644 --- a/hosts/common/configs/user/gui/rquickshare/default.nix +++ b/hosts/common/configs/user/gui/rquickshare/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/spicetify/default.nix b/hosts/common/configs/user/gui/spicetify/default.nix index 12e1ab9..a3c6873 100644 --- a/hosts/common/configs/user/gui/spicetify/default.nix +++ b/hosts/common/configs/user/gui/spicetify/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/common/configs/user/gui/steam/default.nix b/hosts/common/configs/user/gui/steam/default.nix index fb31a22..4ab2401 100644 --- a/hosts/common/configs/user/gui/steam/default.nix +++ b/hosts/common/configs/user/gui/steam/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/swww/default.nix b/hosts/common/configs/user/gui/swww/default.nix index b1aa232..1db52bf 100644 --- a/hosts/common/configs/user/gui/swww/default.nix +++ b/hosts/common/configs/user/gui/swww/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/theme/default.nix b/hosts/common/configs/user/gui/theme/default.nix index 058d7b9..e1a6e08 100644 --- a/hosts/common/configs/user/gui/theme/default.nix +++ b/hosts/common/configs/user/gui/theme/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/common/configs/user/gui/theme/options.nix b/hosts/common/configs/user/gui/theme/options.nix index cd0b830..f8899d0 100644 --- a/hosts/common/configs/user/gui/theme/options.nix +++ b/hosts/common/configs/user/gui/theme/options.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/common/configs/user/gui/transmission/default.nix b/hosts/common/configs/user/gui/transmission/default.nix index 1948246..074f1ec 100644 --- a/hosts/common/configs/user/gui/transmission/default.nix +++ b/hosts/common/configs/user/gui/transmission/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/vscode/default.nix b/hosts/common/configs/user/gui/vscode/default.nix index 4dc3f68..cbb4637 100644 --- a/hosts/common/configs/user/gui/vscode/default.nix +++ b/hosts/common/configs/user/gui/vscode/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/common/configs/user/gui/wev/default.nix b/hosts/common/configs/user/gui/wev/default.nix index 3eec160..c439936 100644 --- a/hosts/common/configs/user/gui/wev/default.nix +++ b/hosts/common/configs/user/gui/wev/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ wev ]; diff --git a/hosts/common/configs/user/gui/wl-clipboard/default.nix b/hosts/common/configs/user/gui/wl-clipboard/default.nix index 81ec902..40eb083 100644 --- a/hosts/common/configs/user/gui/wl-clipboard/default.nix +++ b/hosts/common/configs/user/gui/wl-clipboard/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ wl-clipboard ]; diff --git a/hosts/common/configs/user/gui/x11/default.nix b/hosts/common/configs/user/gui/x11/default.nix index c5dabd4..3a54c0c 100644 --- a/hosts/common/configs/user/gui/x11/default.nix +++ b/hosts/common/configs/user/gui/x11/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, ... }: { home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/xdg/default.nix b/hosts/common/configs/user/gui/xdg/default.nix index 56aaa55..d23a1f0 100644 --- a/hosts/common/configs/user/gui/xdg/default.nix +++ b/hosts/common/configs/user/gui/xdg/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: { home-manager.users.${user}.xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; diff --git a/hosts/elara/users/nikara/configs/console/c/default.nix b/hosts/elara/users/nikara/configs/console/c/default.nix index 0d1aabb..ddcb95b 100644 --- a/hosts/elara/users/nikara/configs/console/c/default.nix +++ b/hosts/elara/users/nikara/configs/console/c/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.home.packages = with pkgs; [ diff --git a/hosts/elara/users/nikara/configs/console/git/default.nix b/hosts/elara/users/nikara/configs/console/git/default.nix index 7130280..70ac866 100644 --- a/hosts/elara/users/nikara/configs/console/git/default.nix +++ b/hosts/elara/users/nikara/configs/console/git/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/elara/users/nikara/configs/console/go/default.nix b/hosts/elara/users/nikara/configs/console/go/default.nix index c5668d9..5719b44 100644 --- a/hosts/elara/users/nikara/configs/console/go/default.nix +++ b/hosts/elara/users/nikara/configs/console/go/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { environment.persistence."/persist/cache"."${home}/.local/share/go" = { }; diff --git a/hosts/elara/users/nikara/configs/console/gpg/default.nix b/hosts/elara/users/nikara/configs/console/gpg/default.nix index e0f69ea..0253b67 100644 --- a/hosts/elara/users/nikara/configs/console/gpg/default.nix +++ b/hosts/elara/users/nikara/configs/console/gpg/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/elara/users/nikara/configs/console/gradle/default.nix b/hosts/elara/users/nikara/configs/console/gradle/default.nix index 44f6549..32cb316 100644 --- a/hosts/elara/users/nikara/configs/console/gradle/default.nix +++ b/hosts/elara/users/nikara/configs/console/gradle/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/elara/users/nikara/configs/console/java/default.nix b/hosts/elara/users/nikara/configs/console/java/default.nix index 07b2cb7..0e68394 100644 --- a/hosts/elara/users/nikara/configs/console/java/default.nix +++ b/hosts/elara/users/nikara/configs/console/java/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { home-manager.users.${user}.programs.java = { diff --git a/hosts/elara/users/nikara/configs/console/kubernetes/default.nix b/hosts/elara/users/nikara/configs/console/kubernetes/default.nix index 1f1342b..3e07a1e 100644 --- a/hosts/elara/users/nikara/configs/console/kubernetes/default.nix +++ b/hosts/elara/users/nikara/configs/console/kubernetes/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { pkgs, ... }: { nixpkgs.overlays = [ diff --git a/hosts/elara/users/nikara/configs/console/podman/default.nix b/hosts/elara/users/nikara/configs/console/podman/default.nix index d9802be..7cf34cf 100644 --- a/hosts/elara/users/nikara/configs/console/podman/default.nix +++ b/hosts/elara/users/nikara/configs/console/podman/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, lib, diff --git a/hosts/elara/users/nikara/configs/console/sas/default.nix b/hosts/elara/users/nikara/configs/console/sas/default.nix index 73f3472..dc04833 100644 --- a/hosts/elara/users/nikara/configs/console/sas/default.nix +++ b/hosts/elara/users/nikara/configs/console/sas/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.sops.secrets = { diff --git a/hosts/elara/users/nikara/configs/console/ssh/default.nix b/hosts/elara/users/nikara/configs/console/ssh/default.nix index 96773ba..f8a21bd 100644 --- a/hosts/elara/users/nikara/configs/console/ssh/default.nix +++ b/hosts/elara/users/nikara/configs/console/ssh/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/elara/users/nikara/configs/console/viya4-orders-cli/default.nix b/hosts/elara/users/nikara/configs/console/viya4-orders-cli/default.nix index 53583e0..1ec3f84 100644 --- a/hosts/elara/users/nikara/configs/console/viya4-orders-cli/default.nix +++ b/hosts/elara/users/nikara/configs/console/viya4-orders-cli/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/elara/users/nikara/configs/gui/obsidian/default.nix b/hosts/elara/users/nikara/configs/gui/obsidian/default.nix index 2f85941..d9e8daf 100644 --- a/hosts/elara/users/nikara/configs/gui/obsidian/default.nix +++ b/hosts/elara/users/nikara/configs/gui/obsidian/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user} = { diff --git a/hosts/elara/users/nikara/configs/gui/vscode/default.nix b/hosts/elara/users/nikara/configs/gui/vscode/default.nix index 3ec56e9..343e8bf 100644 --- a/hosts/elara/users/nikara/configs/gui/vscode/default.nix +++ b/hosts/elara/users/nikara/configs/gui/vscode/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.vscode.languages = { diff --git a/hosts/elara/users/nikara/default.nix b/hosts/elara/users/nikara/default.nix index 5fc62bd..43d0d44 100644 --- a/hosts/elara/users/nikara/default.nix +++ b/hosts/elara/users/nikara/default.nix @@ -110,7 +110,10 @@ in fullName = "Nick Karaolidis"; description = "Nick Karaolidis"; hashedPasswordFile = config.sops.secrets."${user}-password".path; - extraGroups = [ "wheel" ]; + extraGroups = [ + "wheel" + "networkmanager" + ]; linger = true; uid = lib.strings.toInt (builtins.readFile ./uid); }; diff --git a/hosts/himalia/users/nick/configs/console/git/default.nix b/hosts/himalia/users/nick/configs/console/git/default.nix index 814f17c..d870c6d 100644 --- a/hosts/himalia/users/nick/configs/console/git/default.nix +++ b/hosts/himalia/users/nick/configs/console/git/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/himalia/users/nick/configs/console/gpg/default.nix b/hosts/himalia/users/nick/configs/console/gpg/default.nix index 240ff8c..6100b10 100644 --- a/hosts/himalia/users/nick/configs/console/gpg/default.nix +++ b/hosts/himalia/users/nick/configs/console/gpg/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/himalia/users/nick/configs/console/podman/default.nix b/hosts/himalia/users/nick/configs/console/podman/default.nix index 099957b..eae10c3 100644 --- a/hosts/himalia/users/nick/configs/console/podman/default.nix +++ b/hosts/himalia/users/nick/configs/console/podman/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/himalia/users/nick/configs/console/ssh/default.nix b/hosts/himalia/users/nick/configs/console/ssh/default.nix index 0c5000a..84f8335 100644 --- a/hosts/himalia/users/nick/configs/console/ssh/default.nix +++ b/hosts/himalia/users/nick/configs/console/ssh/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/himalia/users/nick/configs/console/syncthing/default.nix b/hosts/himalia/users/nick/configs/console/syncthing/default.nix index 5816ff8..5b4be96 100644 --- a/hosts/himalia/users/nick/configs/console/syncthing/default.nix +++ b/hosts/himalia/users/nick/configs/console/syncthing/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.services.syncthing.settings.folders = { diff --git a/hosts/himalia/users/nick/configs/gui/obsidian/default.nix b/hosts/himalia/users/nick/configs/gui/obsidian/default.nix index 29e0be3..e8b8714 100644 --- a/hosts/himalia/users/nick/configs/gui/obsidian/default.nix +++ b/hosts/himalia/users/nick/configs/gui/obsidian/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user} = { diff --git a/hosts/himalia/users/nick/configs/gui/vscode/default.nix b/hosts/himalia/users/nick/configs/gui/vscode/default.nix index 866ac6a..05b56d3 100644 --- a/hosts/himalia/users/nick/configs/gui/vscode/default.nix +++ b/hosts/himalia/users/nick/configs/gui/vscode/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.programs.vscode.languages = { diff --git a/hosts/himalia/users/nick/default.nix b/hosts/himalia/users/nick/default.nix index f29493d..4b0255e 100644 --- a/hosts/himalia/users/nick/default.nix +++ b/hosts/himalia/users/nick/default.nix @@ -107,7 +107,10 @@ in fullName = "Nikolaos Karaolidis"; description = "Nikolaos Karaolidis"; hashedPasswordFile = config.sops.secrets."${user}-password".path; - extraGroups = [ "wheel" ]; + extraGroups = [ + "wheel" + "networkmanager" + ]; linger = true; uid = lib.strings.toInt (builtins.readFile ./uid); }; diff --git a/hosts/installer/users/nick/configs/console/git/default.nix b/hosts/installer/users/nick/configs/console/git/default.nix index 814f17c..d870c6d 100644 --- a/hosts/installer/users/nick/configs/console/git/default.nix +++ b/hosts/installer/users/nick/configs/console/git/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/installer/users/nick/configs/console/gpg/default.nix b/hosts/installer/users/nick/configs/console/gpg/default.nix index abea0f3..fef15f0 100644 --- a/hosts/installer/users/nick/configs/console/gpg/default.nix +++ b/hosts/installer/users/nick/configs/console/gpg/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user}.sops.secrets = { diff --git a/hosts/installer/users/nick/configs/console/ssh/default.nix b/hosts/installer/users/nick/configs/console/ssh/default.nix index 9093627..ab586dd 100644 --- a/hosts/installer/users/nick/configs/console/ssh/default.nix +++ b/hosts/installer/users/nick/configs/console/ssh/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { ... }: { home-manager.users.${user} = { diff --git a/hosts/installer/users/nick/default.nix b/hosts/installer/users/nick/default.nix index 7d4e370..e73f23e 100644 --- a/hosts/installer/users/nick/default.nix +++ b/hosts/installer/users/nick/default.nix @@ -52,7 +52,10 @@ in fullName = "Nikolaos Karaolidis"; description = "Nikolaos Karaolidis"; hashedPasswordFile = config.sops.secrets."${user}-password".path; - extraGroups = [ "wheel" ]; + extraGroups = [ + "wheel" + "networkmanager" + ]; linger = true; uid = lib.strings.toInt (builtins.readFile ./uid); }; diff --git a/hosts/jupiter/users/nick/configs/console/btop/default.nix b/hosts/jupiter/users/nick/configs/console/btop/default.nix index 87767d4..64def48 100644 --- a/hosts/jupiter/users/nick/configs/console/btop/default.nix +++ b/hosts/jupiter/users/nick/configs/console/btop/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, ... }: { home-manager.users.${user}.programs.btop.settings.disks_filter = diff --git a/hosts/jupiter/users/nick/configs/console/podman/default.nix b/hosts/jupiter/users/nick/configs/console/podman/default.nix index 0fb3755..8805a48 100644 --- a/hosts/jupiter/users/nick/configs/console/podman/default.nix +++ b/hosts/jupiter/users/nick/configs/console/podman/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/jupiter/users/nick/default.nix b/hosts/jupiter/users/nick/default.nix index 3426f1c..6a6b319 100644 --- a/hosts/jupiter/users/nick/default.nix +++ b/hosts/jupiter/users/nick/default.nix @@ -52,6 +52,7 @@ in hashedPasswordFile = config.sops.secrets."${user}-password".path; extraGroups = [ "wheel" + "networkmanager" "storage" ]; linger = true; diff --git a/hosts/jupiter/users/storm/configs/console/btop/default.nix b/hosts/jupiter/users/storm/configs/console/btop/default.nix index 87767d4..64def48 100644 --- a/hosts/jupiter/users/storm/configs/console/btop/default.nix +++ b/hosts/jupiter/users/storm/configs/console/btop/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { lib, ... }: { home-manager.users.${user}.programs.btop.settings.disks_filter = diff --git a/hosts/jupiter/users/storm/configs/console/podman/authelia/default.nix b/hosts/jupiter/users/storm/configs/console/podman/authelia/default.nix index fb015d0..9e29238 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/authelia/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/authelia/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -182,18 +179,17 @@ in ]; }; - unitConfig = - let - dependencies = [ - "${containers.authelia-postgresql._serviceName}.service" - "${containers.authelia-redis._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig = { + After = [ + "${containers.authelia-postgresql._serviceName}.service" + "${containers.authelia-redis._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ + "${containers.authelia-postgresql._serviceName}.service" + "${containers.authelia-redis._serviceName}.service" + ]; + }; }; authelia-postgresql = { @@ -208,14 +204,7 @@ in environmentFiles = [ hmConfig.sops.templates.authelia-postgresql-env.path ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; authelia-redis.containerConfig = { diff --git a/hosts/jupiter/users/storm/configs/console/podman/default.nix b/hosts/jupiter/users/storm/configs/console/podman/default.nix index 6ceaecf..52620ca 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; diff --git a/hosts/jupiter/users/storm/configs/console/podman/gitea/default.nix b/hosts/jupiter/users/storm/configs/console/podman/gitea/default.nix index 520b07d..9b9b6d8 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/gitea/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/gitea/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -237,17 +234,13 @@ in ]; }; - unitConfig = - let - dependencies = [ - "${containers.gitea-postgresql._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig = { + After = [ + "${containers.gitea-postgresql._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ "${containers.gitea-postgresql._serviceName}.service" ]; + }; }; gitea-postgresql = { @@ -262,14 +255,7 @@ in environmentFiles = [ hmConfig.sops.templates.gitea-postgresql-env.path ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; authelia.containerConfig.volumes = [ diff --git a/hosts/jupiter/users/storm/configs/console/podman/grafana/default.nix b/hosts/jupiter/users/storm/configs/console/podman/grafana/default.nix index 9afdd18..7e73dd7 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/grafana/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/grafana/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -139,14 +136,7 @@ in ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; grafana-image-renderer.containerConfig = { diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/arr/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/default.nix new file mode 100644 index 0000000..4310ff1 --- /dev/null +++ b/hosts/jupiter/users/storm/configs/console/podman/media/arr/default.nix @@ -0,0 +1,146 @@ +{ user, home }: +{ + config, + inputs, + pkgs, + system, + ... +}: +let + selfPkgs = inputs.self.packages.${system}; + hmConfig = config.home-manager.users.${user}; + inherit (hmConfig.virtualisation.quadlet) containers volumes networks; + + mkApp = type: name: shortName: urlBase: mediaFolderBase: { + inherit + type + name + shortName + urlBase + mediaFolderBase + ; + }; + + arrs = [ + (mkApp "radarr" "Radarr" "radarr" "/manage/films" "/films") + (mkApp "radarr" "Radarr (UHD)" "radarr-uhd" "/manage/films/uhd" "/films") + (mkApp "radarr" "Radarr (Anime)" "radarr-anime" "/manage/anime/films" "/anime/films") + (mkApp "sonarr" "Sonarr" "sonarr" "/manage/shows" "/shows") + (mkApp "sonarr" "Sonarr (UHD)" "sonarr-uhd" "/manage/shows/uhd" "/shows") + (mkApp "sonarr" "Sonarr (Anime)" "sonarr-anime" "/manage/anime/shows" "/anime/shows") + ]; + + arrMapping = { + radarr = { + port = 7878; + prowlarr = { + implementation = "Radarr"; + configContract = "RadarrSettings"; + }; + }; + + sonarr = { + port = 8989; + prowlarr = { + implementation = "Sonarr"; + configContract = "SonarrSettings"; + }; + }; + }; +in +{ + imports = [ + (import ./prowlarr { + inherit + user + home + arrs + arrMapping + ; + }) + (import ./recyclarr { + inherit + user + home + arrs + arrMapping + ; + }) + ]; + + home-manager.users.${user} = { + sops = { + secrets = builtins.listToAttrs ( + builtins.map (arr: { + name = "${arr.shortName}/apiKey"; + value.sopsFile = ../../../../../../../secrets/secrets.yaml; + }) arrs + ); + + templates = builtins.listToAttrs ( + builtins.map (arr: { + name = "${arr.shortName}-env"; + value.content = '' + API_KEY=${hmConfig.sops.placeholder."${arr.shortName}/apiKey"} + ''; + }) arrs + ); + }; + + virtualisation.quadlet = { + volumes = builtins.listToAttrs ( + builtins.map (arr: { + name = arr.shortName; + value = { }; + }) arrs + ); + + containers = builtins.listToAttrs ( + builtins.map (arr: { + name = arr.shortName; + value = { + containerConfig = { + image = "docker-archive:${selfPkgs."docker-${arr.type}"}"; + networks = [ + networks.media.ref + networks.transmission.ref + networks.traefik.ref + ]; + volumes = + let + setup = pkgs.writeTextFile { + name = "setup.sh"; + executable = true; + text = builtins.readFile ./${arr.type}/setup.sh; + }; + in + [ + "${setup}:/etc/${arr.type}/setup.sh:ro" + "${volumes.${arr.shortName}.ref}:/var/lib/${arr.type}" + "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" + "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" + ]; + environments = { + INSTANCE_NAME = arr.name; + URL_BASE = arr.urlBase; + ROOT_FOLDER = "/var/lib/media${arr.mediaFolderBase}"; + DOWNLOAD_CATEGORY = arr.shortName; + }; + environmentFiles = [ hmConfig.sops.templates."${arr.shortName}-env".path ]; + labels = [ + "traefik.enable=true" + "traefik.http.routers.${arr.shortName}.rule=Host(`media.karaolidis.com`) && PathPrefix(`${arr.urlBase}`)" + "traefik.http.routers.${arr.shortName}.middlewares=authelia@docker" + ]; + }; + + unitConfig.After = [ + "${containers.transmission._serviceName}.service" + "sops-nix.service" + ]; + }; + }) arrs + ); + }; + }; +} diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/default.nix new file mode 100644 index 0000000..3289d51 --- /dev/null +++ b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/default.nix @@ -0,0 +1,121 @@ +{ + user, + home, + arrs, + arrMapping, +}: +{ + config, + inputs, + pkgs, + system, + ... +}: +let + selfPkgs = inputs.self.packages.${system}; + hmConfig = config.home-manager.users.${user}; + inherit (hmConfig.virtualisation.quadlet) containers volumes networks; +in +{ + home-manager.users.${user} = { + sops = { + secrets."prowlarr/apiKey".sopsFile = ../../../../../../../../secrets/secrets.yaml; + + templates = + { + prowlarr-env.content = '' + API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"} + ''; + } + // builtins.listToAttrs ( + builtins.map (arr: { + name = "prowlarr-${arr.shortName}"; + value.content = builtins.readFile ( + (pkgs.formats.json { }).generate "${arr.shortName}.json" { + enable = true; + name = arr.name; + inherit (arrMapping.${arr.type}.prowlarr) implementation configContract; + syncLevel = "fullSync"; + fields = [ + { + name = "prowlarrUrl"; + value = "http://prowlarr:9696"; + } + { + name = "baseUrl"; + value = "http://${arr.shortName}:${builtins.toString arrMapping.${arr.type}.port}"; + } + { + name = "apiKey"; + value = hmConfig.sops.placeholder."${arr.shortName}/apiKey"; + } + ]; + } + ); + }) arrs + ); + }; + + virtualisation.quadlet = { + networks.flaresolverr = { }; + + volumes.prowlarr = { }; + + containers = ( + let + arrServices = builtins.map (arr: "${containers.${arr.shortName}._serviceName}.service") arrs; + in + { + flaresolverr.containerConfig = { + image = "docker-archive:${selfPkgs.docker-flaresolverr}"; + networks = [ networks.flaresolverr.ref ]; + }; + + prowlarr = { + containerConfig = { + image = "docker-archive:${selfPkgs.docker-prowlarr}"; + networks = [ + networks.media.ref + networks.transmission.ref + networks.flaresolverr.ref + networks.traefik.ref + ]; + volumes = + let + setup = pkgs.writeTextFile { + name = "setup.sh"; + executable = true; + text = builtins.readFile ./setup.sh; + }; + in + [ + "${setup}:/etc/prowlarr/setup.sh:ro" + "${./indexers}:/etc/prowlarr/indexers:ro" + "${volumes.prowlarr.ref}:/var/lib/prowlarr" + ] + ++ builtins.map ( + arr: + "${ + hmConfig.sops.templates."prowlarr-${arr.shortName}".path + }:/etc/prowlarr/apps/${arr.shortName}.json:ro" + ) arrs; + environments.URL_BASE = "/manage/indexers"; + environmentFiles = [ hmConfig.sops.templates.prowlarr-env.path ]; + labels = [ + "traefik.enable=true" + "traefik.http.routers.prowlarr.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/indexers`)" + "traefik.http.routers.prowlarr.middlewares=authelia@docker" + ]; + }; + + unitConfig.After = [ + "${containers.transmission._serviceName}.service" + "${containers.flaresolverr._serviceName}.service" + "sops-nix.service" + ] ++ arrServices; + }; + } + ); + }; + }; +} diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/1337x.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/1337x.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/1337x.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/1337x.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Internet Archive.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Internet Archive.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Internet Archive.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Internet Archive.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/LimeTorrents.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/LimeTorrents.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/LimeTorrents.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/LimeTorrents.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Nyaa.si.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Nyaa.si.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Nyaa.si.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Nyaa.si.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/The Pirate Bay.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/The Pirate Bay.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/The Pirate Bay.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/The Pirate Bay.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/TheRARBG.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/TheRARBG.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/TheRARBG.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/TheRARBG.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Torlock.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Torlock.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Torlock.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Torlock.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Torrent Download.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Torrent Download.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Torrent Download.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Torrent Download.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Torrent Downloads.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Torrent Downloads.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/Torrent Downloads.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/Torrent Downloads.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/YourBittorent.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/YourBittorent.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/YourBittorent.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/YourBittorent.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/kickasstorrents.to.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/kickasstorrents.to.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/kickasstorrents.to.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/kickasstorrents.to.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/kickasstorrents.ws.json b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/kickasstorrents.ws.json similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/indexers/kickasstorrents.ws.json rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/indexers/kickasstorrents.ws.json diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/setup.sh b/hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/setup.sh similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/prowlarr/setup.sh rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/prowlarr/setup.sh diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/radarr/setup.sh b/hosts/jupiter/users/storm/configs/console/podman/media/arr/radarr/setup.sh similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/radarr/setup.sh rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/radarr/setup.sh diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/radarr-anime.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/radarr-anime.nix similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/radarr-anime.nix rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/radarr-anime.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/radarr-uhd.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/radarr-uhd.nix similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/radarr-uhd.nix rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/radarr-uhd.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/radarr.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/radarr.nix similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/radarr.nix rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/radarr.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/sonarr-anime.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/sonarr-anime.nix similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/sonarr-anime.nix rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/sonarr-anime.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/sonarr-uhd.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/sonarr-uhd.nix similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/sonarr-uhd.nix rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/sonarr-uhd.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/sonarr.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/sonarr.nix similarity index 100% rename from hosts/jupiter/users/storm/configs/console/podman/media/recyclarr/sonarr.nix rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/apps/sonarr.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/default.nix new file mode 100644 index 0000000..d3f238b --- /dev/null +++ b/hosts/jupiter/users/storm/configs/console/podman/media/arr/recyclarr/default.nix @@ -0,0 +1,60 @@ +{ + user, + home, + arrs, + arrMapping, +}: +{ + config, + inputs, + pkgs, + system, + ... +}: +let + selfPkgs = inputs.self.packages.${system}; + hmConfig = config.home-manager.users.${user}; + inherit (hmConfig.virtualisation.quadlet) containers networks; +in +{ + home-manager.users.${user} = { + sops.templates = builtins.listToAttrs ( + builtins.map (arr: { + name = "recyclarr-${arr.shortName}"; + value.content = builtins.readFile ( + (pkgs.formats.yaml { }).generate "${arr.shortName}.yaml" ( + import ./apps/${arr.shortName}.nix { + base_url = "http://${arr.shortName}:${ + builtins.toString arrMapping.${arr.type}.port + }${arr.urlBase}/"; + api_key = hmConfig.sops.placeholder."${arr.shortName}/apiKey"; + } + ) + ); + }) arrs + ); + + virtualisation.quadlet.containers = ( + let + arrServices = builtins.map (arr: "${containers.${arr.shortName}._serviceName}.service") arrs; + in + { + # FIXME: https://recyclarr.dev/wiki/behavior/quality-profiles/#language + recyclarr = { + containerConfig = { + image = "docker-archive:${selfPkgs.docker-recyclarr}"; + networks = [ networks.media.ref ]; + volumes = builtins.map ( + arr: + "${ + hmConfig.sops.templates."recyclarr-${arr.shortName}".path + }:/var/lib/recyclarr/configs/${arr.shortName}.yaml:ro" + ) arrs; + }; + + unitConfig.After = [ "sops-nix.service" ] ++ arrServices; + }; + } + ); + }; +} diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/sonarr/setup.sh b/hosts/jupiter/users/storm/configs/console/podman/media/arr/sonarr/setup.sh similarity index 92% rename from hosts/jupiter/users/storm/configs/console/podman/media/sonarr/setup.sh rename to hosts/jupiter/users/storm/configs/console/podman/media/arr/sonarr/setup.sh index c2260a6..34f8329 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/sonarr/setup.sh +++ b/hosts/jupiter/users/storm/configs/console/podman/media/arr/sonarr/setup.sh @@ -5,7 +5,7 @@ DOWNLOAD_CATEGORY="${DOWNLOAD_CATEGORY:-sonarr}" mkdir -p "/var/lib/transmission/$DOWNLOAD_CATEGORY" { - curl -sf --retry 10 "$HOST/api/v3/downloadclient?forceSave=true" \ + curl -sf --retry 5 "$HOST/api/v3/downloadclient?forceSave=true" \ -X POST \ -H 'Content-Type: application/json' \ -H "X-Api-Key: $API_KEY" \ diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/default.nix index b321d35..ed8bab9 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/media/default.nix @@ -1,59 +1,11 @@ +{ user, home }: +{ ... }: { - user ? throw "user argument is required", - home ? throw "home argument is required", -}: -{ - config, - inputs, - pkgs, - system, - ... -}: -let - selfPkgs = inputs.self.packages.${system}; - hmConfig = config.home-manager.users.${user}; - inherit (hmConfig.virtualisation.quadlet) containers volumes networks; - - jellyfinAutheliaClientId = "59TRpNutxEeRRCAZbDsK7rsnrA5NC69HAdAO45CEfc740xl4hgIacDy2u03oiFc89Exb67udBQvmfwxgeAQtJPiNAJxA5OzGmdQf"; - - mkApp = type: name: shortName: urlBase: mediaFolderBase: { - inherit - type - name - shortName - urlBase - mediaFolderBase - ; - }; - - arrs = [ - (mkApp "radarr" "Radarr" "radarr" "/manage/films" "/films") - (mkApp "radarr" "Radarr (UHD)" "radarr-uhd" "/manage/films/uhd" "/films") - (mkApp "radarr" "Radarr (Anime)" "radarr-anime" "/manage/anime/films" "/anime/films") - (mkApp "sonarr" "Sonarr" "sonarr" "/manage/shows" "/shows") - (mkApp "sonarr" "Sonarr (UHD)" "sonarr-uhd" "/manage/shows/uhd" "/shows") - (mkApp "sonarr" "Sonarr (Anime)" "sonarr-anime" "/manage/anime/shows" "/anime/shows") + imports = [ + (import ./jellyfin { inherit user home; }) + (import ./arr { inherit user home; }) ]; - arrMapping = { - radarr = { - port = 7878; - prowlarr = { - implementation = "Radarr"; - configContract = "RadarrSettings"; - }; - }; - - sonarr = { - port = 8989; - prowlarr = { - implementation = "Sonarr"; - configContract = "SonarrSettings"; - }; - }; - }; -in -{ home-manager.users.${user} = { systemd.user.tmpfiles.rules = [ "d /mnt/storage/private/storm/containers/storage/volumes/media/_data 700 storm storm" @@ -63,353 +15,6 @@ in "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime/shows 755 storm storm" ]; - sops = { - secrets = - { - "jellyfin/admin".sopsFile = ../../../../../../secrets/secrets.yaml; - "jellyfin/authelia/password".sopsFile = ../../../../../../secrets/secrets.yaml; - "jellyfin/authelia/digest".sopsFile = ../../../../../../secrets/secrets.yaml; - - "prowlarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; - } - // builtins.listToAttrs ( - builtins.map (arr: { - name = "${arr.shortName}/apiKey"; - value.sopsFile = ../../../../../../secrets/secrets.yaml; - }) arrs - ); - - templates = - { - jellyfin-env.content = '' - JELLYFIN_ADMIN_PASSWORD=${hmConfig.sops.placeholder."jellyfin/admin"} - JELLYFIN_OIDC_SECRET=${hmConfig.sops.placeholder."jellyfin/authelia/password"} - ''; - - authelia-jellyfin.content = builtins.readFile ( - (pkgs.formats.yaml { }).generate "jellyfin.yaml" { - identity_providers.oidc = { - authorization_policies.jellyfin = { - default_policy = "deny"; - rules = [ - { - policy = "one_factor"; - subject = "group:jellyfin"; - } - ]; - }; - - clients = [ - { - client_id = jellyfinAutheliaClientId; - client_name = "Jellyfin"; - client_secret = hmConfig.sops.placeholder."jellyfin/authelia/digest"; - redirect_uris = [ "https://media.karaolidis.com/sso/OID/redirect/authelia" ]; - authorization_policy = "jellyfin"; - require_pkce = true; - pkce_challenge_method = "S256"; - scopes = [ - "openid" - "profile" - "groups" - ]; - token_endpoint_auth_method = "client_secret_post"; - } - ]; - }; - } - ); - - prowlarr-env.content = '' - API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"} - ''; - } - // builtins.listToAttrs ( - builtins.map (arr: { - name = "${arr.shortName}-env"; - value.content = '' - API_KEY=${hmConfig.sops.placeholder."${arr.shortName}/apiKey"} - ''; - }) arrs - ) - // builtins.listToAttrs ( - builtins.map (arr: { - name = "prowlarr-${arr.shortName}"; - value.content = builtins.readFile ( - (pkgs.formats.json { }).generate "${arr.shortName}.json" { - enable = true; - name = arr.name; - inherit (arrMapping.${arr.type}.prowlarr) implementation configContract; - syncLevel = "fullSync"; - fields = [ - { - name = "prowlarrUrl"; - value = "http://prowlarr:9696"; - } - { - name = "baseUrl"; - value = "http://${arr.shortName}:${builtins.toString arrMapping.${arr.type}.port}"; - } - { - name = "apiKey"; - value = hmConfig.sops.placeholder."${arr.shortName}/apiKey"; - } - ]; - } - ); - }) arrs - ) - // builtins.listToAttrs ( - builtins.map (arr: { - name = "recyclarr-${arr.shortName}"; - value.content = builtins.readFile ( - (pkgs.formats.yaml { }).generate "${arr.shortName}.yaml" ( - import ./recyclarr/${arr.shortName}.nix { - base_url = "http://${arr.shortName}:${ - builtins.toString arrMapping.${arr.type}.port - }${arr.urlBase}/"; - api_key = hmConfig.sops.placeholder."${arr.shortName}/apiKey"; - } - ) - ); - }) arrs - ); - }; - - virtualisation.quadlet = { - networks = { - media = { }; - jellyfin = { }; - flaresolverr = { }; - }; - - volumes = - { - jellyfin-config = { }; - jellyfin-data = { }; - jellyfin-log = { }; - jellyfin-cache = { }; - - prowlarr = { }; - } - // builtins.listToAttrs ( - builtins.map (arr: { - name = arr.shortName; - value = { }; - }) arrs - ); - - containers = - { - jellyfin = { - containerConfig = { - image = "docker-archive:${selfPkgs.docker-jellyfin}"; - networks = [ - networks.jellyfin.ref - networks.traefik.ref - ]; - volumes = - let - setup = pkgs.writeTextFile { - name = "setup.sh"; - executable = true; - text = builtins.readFile ./jellyfin/setup.sh; - }; - in - [ - "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" - "${setup}:/etc/jellyfin/setup.sh:ro" - "${./jellyfin/libraries}:/etc/jellyfin/libraries:ro" - "${volumes.jellyfin-config.ref}:/etc/jellyfin" - "${volumes.jellyfin-data.ref}:/var/lib/jellyfin" - "${volumes.jellyfin-log.ref}:/var/log/jellyfin" - "${volumes.jellyfin-cache.ref}:/tmp/jellyfin" - ]; - environments.JELLYFIN_OIDC_CLIENT_ID = jellyfinAutheliaClientId; - environmentFiles = [ hmConfig.sops.templates.jellyfin-env.path ]; - labels = [ - "traefik.enable=true" - "traefik.http.routers.jellyfin.rule=Host(`media.karaolidis.com`)" - ]; - podmanArgs = [ "--cdi-spec-dir=/run/cdi" ]; - devices = [ "nvidia.com/gpu=all" ]; - }; - - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; - }; - } - // ( - let - arrServices = builtins.map (arr: "${containers.${arr.shortName}._serviceName}.service") arrs; - in - { - flaresolverr.containerConfig = { - image = "docker-archive:${selfPkgs.docker-flaresolverr}"; - networks = [ networks.flaresolverr.ref ]; - }; - - prowlarr = { - containerConfig = { - image = "docker-archive:${selfPkgs.docker-prowlarr}"; - networks = [ - networks.media.ref - networks.transmission.ref - networks.flaresolverr.ref - networks.traefik.ref - ]; - volumes = - let - setup = pkgs.writeTextFile { - name = "setup.sh"; - executable = true; - text = builtins.readFile ./prowlarr/setup.sh; - }; - in - [ - "${setup}:/etc/prowlarr/setup.sh:ro" - "${./prowlarr/indexers}:/etc/prowlarr/indexers:ro" - "${volumes.prowlarr.ref}:/var/lib/prowlarr" - ] - ++ builtins.map ( - arr: - "${ - hmConfig.sops.templates."prowlarr-${arr.shortName}".path - }:/etc/prowlarr/apps/${arr.shortName}.json:ro" - ) arrs; - environments.URL_BASE = "/manage/indexers"; - environmentFiles = [ hmConfig.sops.templates.prowlarr-env.path ]; - labels = [ - "traefik.enable=true" - "traefik.http.routers.prowlarr.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/indexers`)" - "traefik.http.routers.prowlarr.middlewares=authelia@docker" - ]; - }; - - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = - dependencies - ++ [ - "${containers.transmission._serviceName}.service" - "${containers.flaresolverr._serviceName}.service" - ] - ++ arrServices; - Requires = dependencies; - }; - }; - - # FIXME: https://recyclarr.dev/wiki/behavior/quality-profiles/#language - recyclarr = { - containerConfig = { - image = "docker-archive:${selfPkgs.docker-recyclarr}"; - networks = [ networks.media.ref ]; - volumes = builtins.map ( - arr: - "${ - hmConfig.sops.templates."recyclarr-${arr.shortName}".path - }:/var/lib/recyclarr/configs/${arr.shortName}.yaml:ro" - ) arrs; - }; - - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies ++ arrServices; - Requires = dependencies; - }; - }; - } - ) - // builtins.listToAttrs ( - builtins.map (arr: { - name = arr.shortName; - value = { - containerConfig = { - image = "docker-archive:${selfPkgs."docker-${arr.type}"}"; - networks = [ - networks.media.ref - networks.transmission.ref - networks.traefik.ref - ]; - volumes = - let - setup = pkgs.writeTextFile { - name = "setup.sh"; - executable = true; - text = builtins.readFile ./${arr.type}/setup.sh; - }; - in - [ - "${setup}:/etc/${arr.type}/setup.sh:ro" - "${volumes.${arr.shortName}.ref}:/var/lib/${arr.type}" - "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" - "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" - ]; - environments = { - INSTANCE_NAME = arr.name; - URL_BASE = arr.urlBase; - ROOT_FOLDER = "/var/lib/media${arr.mediaFolderBase}"; - DOWNLOAD_CATEGORY = arr.shortName; - }; - environmentFiles = [ hmConfig.sops.templates."${arr.shortName}-env".path ]; - labels = [ - "traefik.enable=true" - "traefik.http.routers.${arr.shortName}.rule=Host(`media.karaolidis.com`) && PathPrefix(`${arr.urlBase}`)" - "traefik.http.routers.${arr.shortName}.middlewares=authelia@docker" - ]; - }; - - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies ++ [ "${containers.transmission._serviceName}.service" ]; - Requires = dependencies; - }; - }; - }) arrs - ) - // { - authelia.containerConfig.volumes = - let - mediaConfig = (pkgs.formats.yaml { }).generate "media.yaml" { - access_control.rules = [ - { - domain = "media.karaolidis.com"; - policy = "one_factor"; - resources = [ "^/manage([/?].*)?$" ]; - subject = [ "group:media" ]; - } - { - domain = "media.karaolidis.com"; - policy = "deny"; - resources = [ "^/manage([/?].*)?$" ]; - } - { - domain = "media.karaolidis.com"; - policy = "bypass"; - } - ]; - }; - in - [ - "${mediaConfig}:/etc/authelia/conf.d/media.yaml:ro" - "${hmConfig.sops.templates.authelia-jellyfin.path}:/etc/authelia/conf.d/jellyfin.yaml:ro" - ]; - }; - }; + virtualisation.quadlet.networks.media = { }; }; } diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix new file mode 100644 index 0000000..101c431 --- /dev/null +++ b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix @@ -0,0 +1,144 @@ +{ user, home }: +{ + config, + inputs, + pkgs, + system, + ... +}: +let + selfPkgs = inputs.self.packages.${system}; + hmConfig = config.home-manager.users.${user}; + inherit (hmConfig.virtualisation.quadlet) volumes networks; + + jellyfinAutheliaClientId = "59TRpNutxEeRRCAZbDsK7rsnrA5NC69HAdAO45CEfc740xl4hgIacDy2u03oiFc89Exb67udBQvmfwxgeAQtJPiNAJxA5OzGmdQf"; +in +{ + home-manager.users.${user} = { + sops = { + secrets = { + "jellyfin/admin".sopsFile = ../../../../../../../secrets/secrets.yaml; + "jellyfin/authelia/password".sopsFile = ../../../../../../../secrets/secrets.yaml; + "jellyfin/authelia/digest".sopsFile = ../../../../../../../secrets/secrets.yaml; + }; + + templates = { + jellyfin-env.content = '' + JELLYFIN_ADMIN_PASSWORD=${hmConfig.sops.placeholder."jellyfin/admin"} + JELLYFIN_OIDC_SECRET=${hmConfig.sops.placeholder."jellyfin/authelia/password"} + ''; + + authelia-jellyfin.content = builtins.readFile ( + (pkgs.formats.yaml { }).generate "jellyfin.yaml" { + identity_providers.oidc = { + authorization_policies.jellyfin = { + default_policy = "deny"; + rules = [ + { + policy = "one_factor"; + subject = "group:jellyfin"; + } + ]; + }; + + clients = [ + { + client_id = jellyfinAutheliaClientId; + client_name = "Jellyfin"; + client_secret = hmConfig.sops.placeholder."jellyfin/authelia/digest"; + redirect_uris = [ "https://media.karaolidis.com/sso/OID/redirect/authelia" ]; + authorization_policy = "jellyfin"; + require_pkce = true; + pkce_challenge_method = "S256"; + scopes = [ + "openid" + "profile" + "groups" + ]; + token_endpoint_auth_method = "client_secret_post"; + } + ]; + }; + } + ); + }; + }; + + virtualisation.quadlet = { + networks.jellyfin = { }; + + volumes = { + jellyfin-config = { }; + jellyfin-data = { }; + jellyfin-log = { }; + jellyfin-cache = { }; + }; + + containers = { + jellyfin = { + containerConfig = { + image = "docker-archive:${selfPkgs.docker-jellyfin}"; + networks = [ + networks.jellyfin.ref + networks.traefik.ref + ]; + volumes = + let + setup = pkgs.writeTextFile { + name = "setup.sh"; + executable = true; + text = builtins.readFile ./setup.sh; + }; + in + [ + "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" + "${setup}:/etc/jellyfin/setup.sh:ro" + "${./libraries}:/etc/jellyfin/libraries:ro" + "${volumes.jellyfin-config.ref}:/etc/jellyfin" + "${volumes.jellyfin-data.ref}:/var/lib/jellyfin" + "${volumes.jellyfin-log.ref}:/var/log/jellyfin" + "${volumes.jellyfin-cache.ref}:/tmp/jellyfin" + ]; + environments.JELLYFIN_OIDC_CLIENT_ID = jellyfinAutheliaClientId; + environmentFiles = [ hmConfig.sops.templates.jellyfin-env.path ]; + labels = [ + "traefik.enable=true" + "traefik.http.routers.jellyfin.rule=Host(`media.karaolidis.com`)" + ]; + podmanArgs = [ "--cdi-spec-dir=/run/cdi" ]; + devices = [ "nvidia.com/gpu=all" ]; + }; + + unitConfig.After = [ "sops-nix.service" ]; + }; + + authelia.containerConfig.volumes = + let + mediaConfig = (pkgs.formats.yaml { }).generate "media.yaml" { + access_control.rules = [ + { + domain = "media.karaolidis.com"; + policy = "one_factor"; + resources = [ "^/manage([/?].*)?$" ]; + subject = [ "group:media" ]; + } + { + domain = "media.karaolidis.com"; + policy = "deny"; + resources = [ "^/manage([/?].*)?$" ]; + } + { + domain = "media.karaolidis.com"; + policy = "bypass"; + } + ]; + }; + in + [ + "${mediaConfig}:/etc/authelia/conf.d/media.yaml:ro" + "${hmConfig.sops.templates.authelia-jellyfin.path}:/etc/authelia/conf.d/jellyfin.yaml:ro" + ]; + }; + }; + }; +} diff --git a/hosts/jupiter/users/storm/configs/console/podman/nextcloud/default.nix b/hosts/jupiter/users/storm/configs/console/podman/nextcloud/default.nix index f713c84..642d2f0 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/nextcloud/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/nextcloud/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -201,17 +198,13 @@ in ]; }; - unitConfig = - let - dependencies = [ - "${containers.nextcloud-postgresql._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig = { + After = [ + "${containers.nextcloud-postgresql._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ "${containers.nextcloud-postgresql._serviceName}.service" ]; + }; }; nextcloud-postgresql = { @@ -226,14 +219,7 @@ in environmentFiles = [ hmConfig.sops.templates.nextcloud-postgresql-env.path ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; authelia.containerConfig.volumes = [ diff --git a/hosts/jupiter/users/storm/configs/console/podman/ntfy/default.nix b/hosts/jupiter/users/storm/configs/console/podman/ntfy/default.nix index 8175a65..9795d3b 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/ntfy/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/ntfy/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -119,14 +116,7 @@ in ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; prometheus.containerConfig.volumes = diff --git a/hosts/jupiter/users/storm/configs/console/podman/outline/default.nix b/hosts/jupiter/users/storm/configs/console/podman/outline/default.nix index 102eb2b..5b4e5dd 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/outline/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/outline/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -131,18 +128,17 @@ in ]; }; - unitConfig = - let - dependencies = [ - "${containers.outline-postgresql._serviceName}.service" - "${containers.outline-redis._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig = { + After = [ + "${containers.outline-postgresql._serviceName}.service" + "${containers.outline-redis._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ + "${containers.outline-postgresql._serviceName}.service" + "${containers.outline-redis._serviceName}.service" + ]; + }; }; outline-postgresql = { @@ -157,14 +153,7 @@ in environmentFiles = [ hmConfig.sops.templates.outline-postgresql-env.path ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; outline-redis.containerConfig = { diff --git a/hosts/jupiter/users/storm/configs/console/podman/prometheus/default.nix b/hosts/jupiter/users/storm/configs/console/podman/prometheus/default.nix index bd2b769..86023ee 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/prometheus/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/prometheus/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/jupiter/users/storm/configs/console/podman/shlink/default.nix b/hosts/jupiter/users/storm/configs/console/podman/shlink/default.nix index 1958b43..0caccfb 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/shlink/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/shlink/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -80,17 +77,13 @@ in ]; }; - unitConfig = - let - dependencies = [ - "${containers.shlink-postgresql._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig = { + After = [ + "${containers.shlink-postgresql._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ "${containers.shlink-postgresql._serviceName}.service" ]; + }; }; shlink-web-client = { @@ -111,14 +104,7 @@ in ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; shlink-postgresql = { @@ -133,14 +119,7 @@ in environmentFiles = [ hmConfig.sops.templates.shlink-postgresql-env.path ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; authelia.containerConfig.volumes = diff --git a/hosts/jupiter/users/storm/configs/console/podman/sish/default.nix b/hosts/jupiter/users/storm/configs/console/podman/sish/default.nix index c1001d3..3068e0b 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/sish/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/sish/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -65,14 +62,7 @@ in ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; }; }; diff --git a/hosts/jupiter/users/storm/configs/console/podman/traefik/default.nix b/hosts/jupiter/users/storm/configs/console/podman/traefik/default.nix index a9370e8..94e60a2 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/traefik/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/traefik/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -118,20 +115,18 @@ in "traefik-https.socket" ]; - unitConfig = - let - dependencies = [ - "traefik-http.socket" - "traefik-https.socket" - "${containers.authelia._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; - + unitConfig = { + After = [ + "traefik-http.socket" + "traefik-https.socket" + "${containers.authelia._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ + "traefik-http.socket" + "traefik-https.socket" + ]; + }; }; authelia.containerConfig.volumes = diff --git a/hosts/jupiter/users/storm/configs/console/podman/transmission/default.nix b/hosts/jupiter/users/storm/configs/console/podman/transmission/default.nix index 5a20b18..c2a51a9 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/transmission/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/transmission/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -61,14 +58,7 @@ in ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; authelia.containerConfig.volumes = diff --git a/hosts/jupiter/users/storm/configs/console/podman/vaultwarden/default.nix b/hosts/jupiter/users/storm/configs/console/podman/vaultwarden/default.nix index ca00758..6dd12a7 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/vaultwarden/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/vaultwarden/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, @@ -123,17 +120,13 @@ in ]; }; - unitConfig = - let - dependencies = [ - "${containers.vaultwarden-postgresql._serviceName}.service" - "sops-nix.service" - ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig = { + After = [ + "${containers.vaultwarden-postgresql._serviceName}.service" + "sops-nix.service" + ]; + Requires = [ "${containers.vaultwarden-postgresql._serviceName}.service" ]; + }; }; vaultwarden-postgresql = { @@ -148,14 +141,7 @@ in environmentFiles = [ hmConfig.sops.templates.vaultwarden-postgresql-env.path ]; }; - unitConfig = - let - dependencies = [ "sops-nix.service" ]; - in - { - After = dependencies; - Requires = dependencies; - }; + unitConfig.After = [ "sops-nix.service" ]; }; authelia.containerConfig.volumes = [ diff --git a/hosts/jupiter/users/storm/configs/console/podman/whoami/default.nix b/hosts/jupiter/users/storm/configs/console/podman/whoami/default.nix index ffebad5..a0585aa 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/whoami/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/whoami/default.nix @@ -1,7 +1,4 @@ -{ - user ? throw "user argument is required", - home ? throw "home argument is required", -}: +{ user, home }: { config, inputs, diff --git a/hosts/jupiter/users/storm/default.nix b/hosts/jupiter/users/storm/default.nix index 018d934..fcef55f 100644 --- a/hosts/jupiter/users/storm/default.nix +++ b/hosts/jupiter/users/storm/default.nix @@ -40,6 +40,7 @@ in hashedPasswordFile = config.sops.secrets."${user}-password".path; extraGroups = [ "wheel" + "networkmanager" "storage" ]; linger = true; diff --git a/packages/darktable/lua-scripts/default.nix b/packages/darktable/lua-scripts/default.nix index a6dadb7..a4d2362 100644 --- a/packages/darktable/lua-scripts/default.nix +++ b/packages/darktable/lua-scripts/default.nix @@ -2,13 +2,13 @@ # AUTO-UPDATE: nix-update --flake --version=branch=master darktable-lua-scripts pkgs.stdenv.mkDerivation rec { pname = "lua-scripts"; - version = "release-2.0.0-unstable-2025-06-01"; + version = "release-2.0.0-unstable-2025-07-05"; src = pkgs.fetchFromGitHub { owner = "darktable-org"; repo = pname; - rev = "453d744b6938f1bab652bae9745731bfe413d90b"; - hash = "sha256-gTbp7cExUnh4CVviaiYZ1eqVhlXwzX/DHKIFgWJe+UE="; + rev = "aed3275943f218e559c58b98579ceafb02e220da"; + hash = "sha256-vRE0kxqbjdjwU+S0Eu44ctYulYPgD0XsrTsz1ESq6t0="; }; installPhase = '' diff --git a/packages/default.nix b/packages/default.nix index 8fa33a3..77e57d9 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -92,6 +92,5 @@ ssh-known-hosts-sas-gitlab = import ./ssh/known-hosts/sas/gitlab { inherit pkgs inputs system; }; sas-cacert = import ./sas/cacert { inherit pkgs; }; - viya4-ark = import ./sas/viya4-ark { inherit pkgs; }; viya4-orders-cli = import ./sas/viya4-orders-cli { inherit pkgs; }; } diff --git a/packages/jellyfin/plugins/intro-skipper/default.nix b/packages/jellyfin/plugins/intro-skipper/default.nix index 5f71003..dd801ed 100644 --- a/packages/jellyfin/plugins/intro-skipper/default.nix +++ b/packages/jellyfin/plugins/intro-skipper/default.nix @@ -2,17 +2,17 @@ # AUTO-UPDATE: nix-update --flake jellyfin-plugin-intro-skipper pkgs.stdenv.mkDerivation rec { pname = "intro-skipper"; - version = "1.10.10.20"; + version = "10.11/v1.10.11.2"; src = let - parts = pkgs.lib.strings.splitString "." version; - major = pkgs.lib.lists.take 2 (pkgs.lib.lists.drop 1 parts); - merged = pkgs.lib.strings.concatStringsSep "." major; + parts = pkgs.lib.strings.splitString "/" version; + major = builtins.elemAt parts 0; + full = builtins.elemAt parts 1; in pkgs.fetchzip { - url = "https://github.com/intro-skipper/intro-skipper/releases/download/${merged}/v${version}/intro-skipper-v${version}.zip"; - sha256 = "sha256-RlrZkE8108Uj5V90+jw2o5fXb+K+9/hoDcEaSkKLDGg="; + url = "https://github.com/intro-skipper/intro-skipper/releases/download/${major}/${full}/intro-skipper-${full}.zip"; + sha256 = "sha256-3orE9jw2LoejeNYltIju1jtxjkHYd/CydDxAxKYcp5U="; stripRoot = false; }; diff --git a/packages/linux-firmware-latest/default.nix b/packages/linux-firmware-latest/default.nix index 35c857c..973e973 100644 --- a/packages/linux-firmware-latest/default.nix +++ b/packages/linux-firmware-latest/default.nix @@ -2,13 +2,13 @@ # AUTO-UPDATE: nix-update --flake --version=branch=main linux-firmware-latest pkgs.stdenvNoCC.mkDerivation rec { pname = "linux-firmware"; - version = "20250627-unstable-2025-06-30"; + version = "20250708-unstable-2025-07-08"; src = pkgs.fetchFromGitLab { owner = "kernel-firmware"; repo = pname; - rev = "e2dad11e8d4b169fdeac476d694d6ef8f2d3b5bf"; - hash = "sha256-iCDpWmTV++Cftv8BizWXDAY9xvgqa3ORM41znZ5RbSM="; + rev = "99d64b4f788c16e81b6550ef94f43c6b91cfad2d"; + hash = "sha256-TJ97A9I0ipsqgg7ex3pAQgdhDJcLbkNCvuLppt9a07o="; }; postUnpack = '' diff --git a/packages/prometheus-podman-exporter/default.nix b/packages/prometheus-podman-exporter/default.nix index d2b0fb5..6eaec17 100644 --- a/packages/prometheus-podman-exporter/default.nix +++ b/packages/prometheus-podman-exporter/default.nix @@ -2,13 +2,13 @@ # AUTO-UPDATE: nix-update --flake prometheus-podman-exporter pkgs.buildGoModule rec { pname = "prometheus-podman-exporter"; - version = "1.17.1"; + version = "1.17.2"; src = pkgs.fetchFromGitHub { owner = "containers"; repo = "prometheus-podman-exporter"; rev = "v${version}"; - hash = "sha256-5+1rGe9xv0ZVkmLr7pCteuN1DA+oozi/GSyQlQikrWA="; + hash = "sha256-TlQQbeYcCTZKF6DUKM+UE8iU9KC5tLpCtee62sNbW8s="; }; vendorHash = null; diff --git a/packages/sas/viya4-ark/default.nix b/packages/sas/viya4-ark/default.nix deleted file mode 100644 index 3454fd6..0000000 --- a/packages/sas/viya4-ark/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ pkgs, ... }: -# AUTO-UPDATE: nix-update --flake viya4-ark -pkgs.python3Packages.buildPythonPackage rec { - pname = "viya4-ark"; - version = "2.1.0"; - - src = pkgs.fetchFromGitHub { - owner = "sassoftware"; - repo = "viya4-ark"; - rev = version; - hash = "sha256-avJC7BHVzhwGK5KtLu82IgRzjDGCzcdca1eP1T5ED0M="; - }; - - patches = [ - ./fix-setup.patch - ./remove-kubeconfig-check.patch - ]; - - propagatedBuildInputs = with pkgs.python3Packages; [ - jinja2 - pint - requests - pyyaml - ldap3 - semantic-version - ]; -} diff --git a/packages/sas/viya4-ark/fix-setup.patch b/packages/sas/viya4-ark/fix-setup.patch deleted file mode 100644 index cbcc269..0000000 --- a/packages/sas/viya4-ark/fix-setup.patch +++ /dev/null @@ -1,364 +0,0 @@ -diff --git a/.gitignore b/.gitignore -index 07ae204..28e5e8a 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -11,6 +11,8 @@ - *.pyo - *.sa - *.so -+*.eggs -+*.__pycache__/ - - # Logs and databases # - ###################### -@@ -43,4 +45,4 @@ Thumbs.db - /bin/ - build - docker --/**/.pytest_cache/ -\ No newline at end of file -+/**/.pytest_cache/ -diff --git a/deployment_report/templates/__init__.py b/deployment_report/templates/__init__.py -new file mode 100644 -index 0000000..e69de29 -diff --git a/ldap_validator/library/__init__.py b/ldap_validator/library/__init__.py -new file mode 100644 -index 0000000..e69de29 -diff --git a/ldap_validator/library/utils/__init__.py b/ldap_validator/library/utils/__init__.py -new file mode 100644 -index 0000000..e69de29 -diff --git a/pre_install_report/templates/__init__.py b/pre_install_report/templates/__init__.py -new file mode 100644 -index 0000000..e69de29 -diff --git a/setup.cfg b/setup.cfg -index 1c80cb2..4ffdef1 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -2,7 +2,11 @@ - name = viya4-ark - author = SAS Institute Inc. - summary = The SAS Viya Administration Resource Kit (SAS Viya ARK) provides tools and utilities to help SAS customers prepare for and gather information about a SAS Viya platform deployment. --description-file = README.md --description-content-type = text/markdown --home-page = https://github.com/sassoftware/viya4-ark -+description_file = README.md -+description_content_type = text/markdown -+home_page = https://github.com/sassoftware/viya4-ark - license = Apache-2.0 -+ -+[options.entry_points] -+console_scripts = -+ viya4-ark = viya4_ark:main -diff --git a/setup.py b/setup.py -index d3dd4f5..05cbeb7 100644 ---- a/setup.py -+++ b/setup.py -@@ -14,10 +14,14 @@ - - from setuptools import find_packages, setup - -+packages = find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]) -+ - setup( -- setup_requires=["pbr"], -- pbr=True, -- licenses_files=["LICENSE"], -- packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]), -+ setup_requires=[], -+ license_files=["LICENSE"], -+ py_modules=["viya4_ark"], -+ packages=packages, -+ include_package_data=True, -+ package_data={package: ["*"] for package in packages}, - python_requires=">=3.6", - ) -diff --git a/viya-ark.py b/viya-ark.py -deleted file mode 100644 -index 7626a89..0000000 ---- a/viya-ark.py -+++ /dev/null -@@ -1,139 +0,0 @@ --#################################################################### --# ### viya-ark.py ### --#################################################################### --# ### Author: SAS Institute Inc. ### --#################################################################### --# ### --# Copyright (c) 2020, SAS Institute Inc., Cary, NC, USA. ### --# All Rights Reserved. ### --# SPDX-License-Identifier: Apache-2.0 ### --# ### --#################################################################### -- --import importlib --import inspect --import os --import pkgutil --import sys -- --from viya_ark_library.command import Command -- --# command line options # --_HELP_SHORT_OPT_ = "h" --_HELP_LONG_OPT_ = "help" -- --# return codes # --_SUCCESS_RC_ = 0 --_BAD_OPT_RC_ = 1 -- -- --################ --# Main # --################ --def main(argv: list): -- """ -- The main executable method for the viya-ark launcher script. -- -- :param argv: The list of arguments passed at invocation. -- """ -- try: -- # get the requested command value # -- command_name = argv[0] -- -- # print the usage and exit, if requested # -- if command_name in (f"-{_HELP_SHORT_OPT_}", f"--{_HELP_LONG_OPT_}"): -- usage(_SUCCESS_RC_) -- -- # convert any dashes in the given command to underscores to align with Pythonic package/module standards # -- command_module_name = command_name.replace("-", "_") -- -- # attempt to import the requested command module # -- imported_module = None -- try: -- imported_module = importlib.import_module(f"{command_module_name}.{command_module_name}") -- except ModuleNotFoundError: -- print() -- print(f"ERROR: Command [{command_name}] not found.") -- usage(_BAD_OPT_RC_) -- -- # find any attributes in the module that implement the Command class using reflection # -- command = None -- for attribute_name in dir(imported_module): -- # get the current module attribute by name # -- attribute = getattr(imported_module, attribute_name) -- -- # if the attribute is: # -- # (1) a class -AND- # -- # (2) a subclass of Command -AND- # -- # (3) not abstract # -- # then the attribute defines a command for the project. # -- if inspect.isclass(attribute) and issubclass(attribute, Command) and not inspect.isabstract(attribute): -- command = attribute -- # the Command implementation was found, the loop can break # -- break -- -- if command is not None: -- # call the Command's run() method to delegate execution to the module, pass all relevant arguments # -- command.run(argv[1:]) -- else: -- # if a Command implementation wasn't found, print the usage message # -- print() -- print(f"ERROR: Command [{command_name}] not found.") -- usage(_BAD_OPT_RC_) -- -- except IndexError: -- # if the launcher script wasn't given enough args, print the usage # -- print() -- print("ERROR: A command must be provided.") -- usage(_BAD_OPT_RC_) -- -- --################# --# Usage # --################# --def usage(exit_code: int): -- """ -- Prints the usage statement for the viya-ark launcher script and exits with the provided exit_code. -- -- :param exit_code: The code to return upon exit. -- """ -- commands = list() -- -- # walk through all packages parallel to this script # -- paths = [os.path.realpath(os.path.dirname(__file__))] -- for importer, name, is_package in pkgutil.walk_packages(path=paths): -- # skip any objects that are packages (i.e. not modules) # -- if not is_package: -- # import the current module # -- try: -- importlib.import_module(name) -- except ModuleNotFoundError as e: -- # ignore any issues importing pytest, raise any other module import errors -- if e.name != "pytest": -- raise e -- -- for subclass in Command.__subclasses__(): -- # create a tuple of command details by calling the command_name() and command_desc() methods # -- command_details = (subclass().command_name(), subclass().command_desc()) -- # add the command details to the list of discovered commands # -- commands.append(command_details) -- -- # print the commands as well as the static help command to stdout # -- print() -- print(f"Usage: {os.path.basename(__file__)} [options]") -- print() -- print("Commands:") -- for command in commands: -- print(" {:<30} {}".format(command[0], command[1])) -- help_cmd_display = f"-{_HELP_SHORT_OPT_}, --{_HELP_LONG_OPT_}" -- print(" {:<30} {}".format(help_cmd_display, "Display usage for viya-ark.")) -- print() -- -- sys.exit(exit_code) -- -- --################## --# __main__ # --################## --if __name__ == "__main__": -- main(sys.argv[1:]) -diff --git a/viya4_ark.py b/viya4_ark.py -new file mode 100644 -index 0000000..1af3b79 ---- /dev/null -+++ b/viya4_ark.py -@@ -0,0 +1,136 @@ -+#################################################################### -+# ### main.py ### -+#################################################################### -+# ### Author: SAS Institute Inc. ### -+#################################################################### -+# ### -+# Copyright (c) 2020, SAS Institute Inc., Cary, NC, USA. ### -+# All Rights Reserved. ### -+# SPDX-License-Identifier: Apache-2.0 ### -+# ### -+#################################################################### -+ -+import importlib -+import inspect -+import os -+import pkgutil -+import sys -+ -+from viya_ark_library.command import Command -+ -+# command line options # -+_HELP_SHORT_OPT_ = "h" -+_HELP_LONG_OPT_ = "help" -+ -+# return codes # -+_SUCCESS_RC_ = 0 -+_BAD_OPT_RC_ = 1 -+ -+ -+################ -+# Main # -+################ -+def main(): -+ """ -+ The main executable method for the viya-ark launcher script. -+ """ -+ argv = sys.argv[1:] -+ -+ if len(argv) == 0: -+ print("ERROR: A command must be provided.") -+ usage(_BAD_OPT_RC_) -+ -+ command_name = argv[0] -+ -+ # print the usage and exit, if requested # -+ if command_name in (f"-{_HELP_SHORT_OPT_}", f"--{_HELP_LONG_OPT_}"): -+ usage(_SUCCESS_RC_) -+ -+ # convert any dashes in the given command to underscores to align with Pythonic package/module standards # -+ command_module_name = command_name.replace("-", "_") -+ -+ # attempt to import the requested command module # -+ imported_module = None -+ try: -+ imported_module = importlib.import_module(f"{command_module_name}.{command_module_name}") -+ except ModuleNotFoundError: -+ print() -+ print(f"ERROR: Command [{command_name}] not found.") -+ usage(_BAD_OPT_RC_) -+ -+ # find any attributes in the module that implement the Command class using reflection # -+ command = None -+ for attribute_name in dir(imported_module): -+ # get the current module attribute by name # -+ attribute = getattr(imported_module, attribute_name) -+ -+ # if the attribute is: # -+ # (1) a class -AND- # -+ # (2) a subclass of Command -AND- # -+ # (3) not abstract # -+ # then the attribute defines a command for the project. # -+ if inspect.isclass(attribute) and issubclass(attribute, Command) and not inspect.isabstract(attribute): -+ command = attribute -+ # the Command implementation was found, the loop can break # -+ break -+ -+ if command is not None: -+ # call the Command's run() method to delegate execution to the module, pass all relevant arguments # -+ command.run(argv[1:]) -+ else: -+ # if a Command implementation wasn't found, print the usage message # -+ print() -+ print(f"ERROR: Command [{command_name}] not found.") -+ usage(_BAD_OPT_RC_) -+ -+ -+################# -+# Usage # -+################# -+def usage(exit_code: int): -+ """ -+ Prints the usage statement for the viya-ark launcher script and exits with the provided exit_code. -+ -+ :param exit_code: The code to return upon exit. -+ """ -+ commands = list() -+ -+ # walk through all packages parallel to this script # -+ paths = [os.path.realpath(os.path.dirname(__file__))] -+ for importer, name, is_package in pkgutil.walk_packages(path=paths): -+ # skip any objects that are packages (i.e. not modules) # -+ if is_package: -+ continue -+ -+ try: -+ importlib.import_module(name) -+ except ModuleNotFoundError as e: -+ # ignore any issues importing pytest, raise any other module import errors -+ if e.name != "pytest": -+ raise e -+ -+ for subclass in Command.__subclasses__(): -+ # create a tuple of command details by calling the command_name() and command_desc() methods # -+ command_details = (subclass().command_name(), subclass().command_desc()) -+ # add the command details to the list of discovered commands # -+ commands.append(command_details) -+ -+ # print the commands as well as the static help command to stdout # -+ print() -+ print(f"Usage: {os.path.basename(__file__)} [options]") -+ print() -+ print("Commands:") -+ for command in commands: -+ print(" {:<30} {}".format(command[0], command[1])) -+ help_cmd_display = f"-{_HELP_SHORT_OPT_}, --{_HELP_LONG_OPT_}" -+ print(" {:<30} {}".format(help_cmd_display, "Display usage for viya-ark.")) -+ print() -+ -+ sys.exit(exit_code) -+ -+ -+################## -+# __main__ # -+################## -+if __name__ == "__main__": -+ main() -diff --git a/viya_ark_library/templates/__init__.py b/viya_ark_library/templates/__init__.py -new file mode 100644 -index 0000000..e69de29 diff --git a/packages/sas/viya4-ark/remove-kubeconfig-check.patch b/packages/sas/viya4-ark/remove-kubeconfig-check.patch deleted file mode 100644 index c25c8fb..0000000 --- a/packages/sas/viya4-ark/remove-kubeconfig-check.patch +++ /dev/null @@ -1,96 +0,0 @@ -diff --git a/pre_install_report/library/pre_install_check.py b/pre_install_report/library/pre_install_check.py -index 31b66d8..88a2d96 100644 ---- a/pre_install_report/library/pre_install_check.py -+++ b/pre_install_report/library/pre_install_check.py -@@ -218,21 +218,6 @@ class ViyaPreInstallCheck(): - output_dir) - return - -- def _read_environment_var(self, env_var): -- """ -- This method verifies that the KUBECONFIG environment variable is set. -- -- :param env_var: Environment variable to check -- """ -- try: -- value_env_var = os.environ[env_var] -- except Exception: -- self.logger.exception("CalledProcessorError") -- print(viya_messages.KUBECONF_ERROR) -- sys.exit(viya_messages.BAD_ENV_RC_) -- -- return value_env_var -- - def _get_nested_info(self, nested_nodes, extracted_nodes, search_key): - - try: -diff --git a/pre_install_report/pre_install_report.py b/pre_install_report/pre_install_report.py -index 1379c43..54fbc7e 100644 ---- a/pre_install_report/pre_install_report.py -+++ b/pre_install_report/pre_install_report.py -@@ -74,24 +74,6 @@ def _read_config_file(filename): - sys.exit(viya_messages.SET_LIMTS_ERROR_RC_) - - --def read_environment_var(env_var): -- """ -- This method verifies that the KUBECONFIG environment variable is set. -- -- :param env_var: Environment variable to check -- """ -- try: -- value_env_var = os.environ[env_var] -- # Check if specified file exists -- if not os.path.exists(value_env_var): -- print(viya_messages.KUBECONF_FILE_ERROR.format(value_env_var)) -- sys.exit(viya_messages.BAD_ENV_RC_) -- except Exception: -- print(viya_messages.KUBECONF_ERROR) -- sys.exit(viya_messages.BAD_ENV_RC_) -- return value_env_var -- -- - class PreInstallReportCommand(Command): - """ - Command implementation for the pre-install command to register -@@ -198,7 +180,6 @@ def main(argv): - - sas_logger = ViyaARKLogger(report_log_path, logging_level=logging_level, logger_name="pre_install_logger") - logger = sas_logger.get_logger() -- read_environment_var('KUBECONFIG') - - try: - kubectl = Kubectl(namespace=name_space) -diff --git a/pre_install_report/test/test_pre_install_report.py b/pre_install_report/test/test_pre_install_report.py -index ed805ec..f93ec58 100644 ---- a/pre_install_report/test/test_pre_install_report.py -+++ b/pre_install_report/test/test_pre_install_report.py -@@ -25,7 +25,6 @@ from pre_install_report.library.pre_install_check import ViyaPreInstallCheck - from pre_install_report.library.pre_install_check_permissions import PreCheckPermissions - from viya_ark_library.jinja2.sas_jinja2 import Jinja2TemplateRenderer - from viya_ark_library.logging import ViyaARKLogger --from pre_install_report.pre_install_report import read_environment_var - from pre_install_report.library.utils import viya_messages - - _SUCCESS_RC_ = 0 -@@ -548,20 +547,6 @@ def test_get_calculated_aggregate_memory(): - assert str(round(total_calc_memoryGi.to('Gi'), 13)) == '62.5229606628418 Gi' - - --def test_kubconfig_file(): -- old_kubeconfig = os.environ.get('KUBECONFIG') # /Users/cat/doc -- os.environ['KUBECONFIG'] = 'blah_nonexistentfile_blah' -- new_kubeconfig = os.environ.get('KUBECONFIG') # /Users/cat/doc -- assert new_kubeconfig == 'blah_nonexistentfile_blah' -- try: -- read_environment_var('KUBECONFIG') -- except SystemExit as exc: -- assert exc.code == viya_messages.BAD_ENV_RC_ -- pass -- finally: -- os.environ['KUBECONFIG'] = str(old_kubeconfig) -- -- - def test_validated_k8s_server_version(): - - vpc = createViyaPreInstallCheck(viya_k8s_version_min, diff --git a/submodules/home-manager b/submodules/home-manager index 7689125..444d7a1 160000 --- a/submodules/home-manager +++ b/submodules/home-manager @@ -1 +1 @@ -Subproject commit 7689125c6ee26f606a0402790c5bc6f1803b48cf +Subproject commit 444d7a18b87260772c5293a10f998d3da67e5f44 diff --git a/submodules/nixpkgs b/submodules/nixpkgs index 066db05..5b6fdd0 160000 --- a/submodules/nixpkgs +++ b/submodules/nixpkgs @@ -1 +1 @@ -Subproject commit 066db057b67632761397b46f4803a927aa9e2d80 +Subproject commit 5b6fdd0939385dff89d6cfc5d2e125a392f7a107