4 Commits

Author SHA1 Message Date
e6dbed2e17 enable caddy logfile 2023-03-12 13:24:25 +00:00
86076f0844 add arr services 2023-03-12 13:24:16 +00:00
2aea76c0e3 switch mpv to managed settings 2023-03-11 14:14:45 -05:00
42a5ad40de add heroic game launcher 2023-03-11 14:14:25 -05:00
15 changed files with 106 additions and 16 deletions

View File

@ -42,6 +42,7 @@ nixpkgs.lib.nixosSystem {
streamServer = "stream.masu.rs"; streamServer = "stream.masu.rs";
nextcloudServer = "cloud.masu.rs"; nextcloudServer = "cloud.masu.rs";
bookServer = "books.masu.rs"; bookServer = "books.masu.rs";
arrServer = "download.masu.rs";
samba.enable = true; samba.enable = true;
backup.s3 = { backup.s3 = {

View File

@ -11,7 +11,7 @@
config = lib.mkIf config = lib.mkIf
(config.gui.enable && config._1password.enable && pkgs.stdenv.isLinux) { (config.gui.enable && config._1password.enable && pkgs.stdenv.isLinux) {
unfreePackages = with pkgs; [ _1password _1password-gui ]; unfreePackages = [ "1password" "_1password-gui" ];
home-manager.users.${config.user} = { home-manager.users.${config.user} = {
home.packages = with pkgs; [ _1password-gui ]; home.packages = with pkgs; [ _1password-gui ];
}; };

View File

@ -10,7 +10,7 @@
}; };
config = lib.mkIf (config.gui.enable && config.discord.enable) { config = lib.mkIf (config.gui.enable && config.discord.enable) {
unfreePackages = [ pkgs.discord ]; unfreePackages = [ "discord" ];
home-manager.users.${config.user} = { home-manager.users.${config.user} = {
home.packages = with pkgs; [ discord ]; home.packages = with pkgs; [ discord ];
xdg.configFile."discord/settings.json".text = '' xdg.configFile."discord/settings.json".text = ''

View File

@ -13,9 +13,9 @@
config = lib.mkIf (config.gui.enable && config.firefox.enable) { config = lib.mkIf (config.gui.enable && config.firefox.enable) {
unfreePackages = with pkgs.nur.repos.rycee.firefox-addons; [ unfreePackages = [
(lib.mkIf config._1password.enable onepassword-password-manager) (lib.mkIf config._1password.enable "onepassword-password-manager")
okta-browser-plugin "okta-browser-plugin"
]; ];
home-manager.users.${config.user} = { home-manager.users.${config.user} = {

View File

@ -12,12 +12,19 @@
config = lib.mkIf (config.gui.enable && config.media.enable) { config = lib.mkIf (config.gui.enable && config.media.enable) {
home-manager.users.${config.user} = { home-manager.users.${config.user} = {
home.packages = with pkgs; [ home.packages = with pkgs; [
mpv # Video viewer
sxiv # Image viewer sxiv # Image viewer
mupdf # PDF viewer mupdf # PDF viewer
zathura # PDF viewer zathura # PDF viewer
]; ];
# Video player
programs.mpv = {
enable = true;
bindings = { };
config = { image-display-duration = 2; };
scripts = [ pkgs.mpvScripts.autoload ];
};
# Set default for opening PDFs # Set default for opening PDFs
xdg.mimeApps = { xdg.mimeApps = {
associations.added = { associations.added = {

View File

@ -10,7 +10,7 @@
}; };
config = lib.mkIf (config.gui.enable && config.obsidian.enable) { config = lib.mkIf (config.gui.enable && config.obsidian.enable) {
unfreePackages = [ pkgs.obsidian ]; unfreePackages = [ "obsidian" ];
home-manager.users.${config.user} = { home-manager.users.${config.user} = {
home.packages = with pkgs; [ obsidian ]; home.packages = with pkgs; [ obsidian ];
}; };

View File

@ -10,7 +10,7 @@
}; };
config = lib.mkIf (config.gui.enable && config.slack.enable) { config = lib.mkIf (config.gui.enable && config.slack.enable) {
unfreePackages = [ pkgs.slack ]; unfreePackages = [ "slack" ];
home-manager.users.${config.user} = { home-manager.users.${config.user} = {
home.packages = with pkgs; [ slack ]; home.packages = with pkgs; [ slack ];
}; };

View File

@ -68,7 +68,7 @@
description = "Link to dotfiles repository."; description = "Link to dotfiles repository.";
}; };
unfreePackages = lib.mkOption { unfreePackages = lib.mkOption {
type = lib.types.listOf lib.types.package; type = lib.types.listOf lib.types.str;
description = "List of unfree packages to allow."; description = "List of unfree packages to allow.";
default = [ ]; default = [ ];
}; };
@ -113,10 +113,8 @@
# Allow specified unfree packages (identified elsewhere) # Allow specified unfree packages (identified elsewhere)
# Retrieves package object based on string name # Retrieves package object based on string name
# Idea: https://discourse.nixos.org/t/how-to-use-packages-directly-in-allowunfreepredicate/22455/6
nixpkgs.config.allowUnfreePredicate = pkg: nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (pkg.name or (builtins.parseDrvName pkg.pname).name) builtins.elem (lib.getName pkg) config.unfreePackages;
(map lib.getName config.unfreePackages);
# Pin a state version to prevent warnings # Pin a state version to prevent warnings
home-manager.users.${config.user}.home.stateVersion = stateVersion; home-manager.users.${config.user}.home.stateVersion = stateVersion;

View File

@ -10,8 +10,8 @@ in {
config = lib.mkIf config.gaming.legendary.enable { config = lib.mkIf config.gaming.legendary.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
legendary-gl legendary-gl
rare # GUI for Legendary (not working)
wineWowPackages.stable # 32-bit and 64-bit wineWowPackages, see https://nixos.wiki/wiki/Wine wineWowPackages.stable # 32-bit and 64-bit wineWowPackages, see https://nixos.wiki/wiki/Wine
heroic # GUI launcher
]; ];
home-manager.users.${config.user} = { home-manager.users.${config.user} = {

View File

@ -14,7 +14,7 @@ in {
config = lib.mkIf config.gaming.minecraft-server.enable { config = lib.mkIf config.gaming.minecraft-server.enable {
unfreePackages = [ pkgs.minecraft-server ]; unfreePackages = [ "minecraft-server" ];
services.minecraft-server = { services.minecraft-server = {
enable = true; enable = true;

View File

@ -4,7 +4,7 @@
config = lib.mkIf (config.gaming.steam.enable && pkgs.stdenv.isLinux) { config = lib.mkIf (config.gaming.steam.enable && pkgs.stdenv.isLinux) {
hardware.steam-hardware.enable = true; hardware.steam-hardware.enable = true;
unfreePackages = with pkgs; [ steam steamcmd steam-run ]; unfreePackages = [ "steam" "steam-original" "steamcmd" "steam-run" ];
programs.steam = { programs.steam = {
enable = true; enable = true;

View File

@ -0,0 +1,71 @@
{ config, lib, ... }:
{
options = {
arrServer = lib.mkOption {
type = lib.types.str;
description = "Hostname for arr services";
default = null;
};
};
config = lib.mkIf (config.arrServer != null) {
services.sonarr.enable = true;
services.radarr.enable = true;
services.bazarr.enable = true;
services.prowlarr.enable = true;
# Requires updating the base_url config value in each service
# If you try to rewrite the URL, the service won't redirect properly
caddy.routes = [
{
group = "download";
match = [{
host = [ config.arrServer ];
path = [ "/sonarr*" ];
}];
handle = [{
handler = "reverse_proxy";
upstreams = [{ dial = "localhost:8989"; }];
}];
}
{
group = "download";
match = [{
host = [ config.arrServer ];
path = [ "/radarr*" ];
}];
handle = [{
handler = "reverse_proxy";
upstreams = [{ dial = "localhost:7878"; }];
}];
}
{
group = "download";
match = [{
host = [ config.arrServer ];
path = [ "/prowlarr*" ];
}];
handle = [{
handler = "reverse_proxy";
upstreams = [{ dial = "localhost:9696"; }];
}];
}
{
group = "download";
match = [{
host = [ config.arrServer ];
path = [ "/bazarr*" ];
}];
handle = [{
handler = "reverse_proxy";
upstreams = [{ dial = "localhost:6767"; }];
}];
}
];
};
}

View File

@ -24,6 +24,16 @@
listen = [ ":443" ]; listen = [ ":443" ];
routes = config.caddy.routes; routes = config.caddy.routes;
errors.routes = config.caddy.blocks; errors.routes = config.caddy.blocks;
# logs = { }; # Uncomment to collect access logs
};
logging.logs.main = {
encoder = { format = "console"; };
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/caddy.log";
roll = true;
};
level = "INFO";
}; };
}); });

View File

@ -1,6 +1,7 @@
{ ... }: { { ... }: {
imports = [ imports = [
./arr.nix
./backups.nix ./backups.nix
./caddy.nix ./caddy.nix
./calibre.nix ./calibre.nix

View File

@ -41,7 +41,9 @@
}; };
# Create reverse proxy for web UI # Create reverse proxy for web UI
caddy.routes = [{ caddy.routes = lib.mkAfter [{
group =
lib.mkIf (config.arrServer == config.transmissionServer) "download";
match = [{ host = [ config.transmissionServer ]; }]; match = [{ host = [ config.transmissionServer ]; }];
handle = [{ handle = [{
handler = "reverse_proxy"; handler = "reverse_proxy";