Removed comments and format

This commit is contained in:
pazpi 2024-08-27 21:59:21 +02:00
parent 8b25f46384
commit e0a09e90a7
No known key found for this signature in database
GPG key ID: 0942571C4B9966BE
7 changed files with 85 additions and 305 deletions

View file

@ -1,8 +1,7 @@
{
config,
pkgs,
lib,
...
{ config
, pkgs
, lib
, ...
}:
{
my = {

View file

@ -49,13 +49,13 @@
audio.enable = false;
};
utils.commons.enable = true;
};
# Vedi https://github.com/TLATER/dotfiles/blob/f989a86890f27f6b089e9d74b7e8356ec8e5683d/home-config/hosts/yui.nix
# home-manager.users.pazpi = import "${flake-inputs.self}/home-config/hosts/deadbeef.nix";
# flake-inputs.self cartella di partenza dove c'è flake.nix
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave

42
hosts/default.nix Normal file
View file

@ -0,0 +1,42 @@
{ nixpkgs
, home-manager
, nixos-hardware
, agenix
, ...
}:
let
agenixOverlay = final: prev: {
agenix = agenix.packages.${prev.system}.default;
};
pkgs = system: import nixpkgs {
inherit system;
overlays = [ agenixOverlay ];
config.allowUnfree = true;
};
in
{
deadbeef = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
./deadbeef
nixos-hardware.nixosModules.dell-xps-15-9560
home-manager.nixosModules.home-manager
agenix.nixosModules.default
];
specialArgs = {
# inherit nixvim nix-index-database;
};
};
arr = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
./arr
agenix.nixosModules.default
];
specialArgs = {
# inherit nixvim nix-index-database;
};
};
}

View file

@ -1,7 +1,6 @@
{
imports = [
./download-pod.nix
./download-pod-old.nix
./nextcloud-podman.nix
];
}

View file

@ -1,154 +0,0 @@
{
lib,
config,
pkgs,
...
}:
let
cfg = config.my.services.download-pod-old;
in
{
options.my.services.download-pod-old = {
enable = lib.mkEnableOption "Enable download services module";
proxy = {
enable = lib.mkEnableOption "Enable proxy for the services";
hostName = lib.mkOption {
default = "example.com";
type = lib.types.str;
description = ''
Top level hostname
'';
};
serverName = lib.mkOption {
default = "localhost";
type = lib.types.str;
description = ''
Server name where Caddy is
'';
};
};
dataDir = lib.mkOption {
default = "/mnt/data";
type = lib.types.str;
description = ''
Base download dir for stuff
'';
};
};
config = lib.mkIf cfg.enable {
my.virtualisation.podman.enable = true;
systemd.services.pod-download = {
description = "Start podman 'download' pod";
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
requiredBy = [
"podman-jackett.service"
"podman-radarr.service"
"podman-sabnzbd.service"
"podman-sonarr.service"
];
unitConfig = {
RequiresMountsFor = "/run/containers";
};
serviceConfig = {
Type = "oneshot";
ExecStart = "-${pkgs.podman}/bin/podman pod create -p 9117:9117 -p 7878:7878 -p 8080:8080 -p 8989:8989 download";
}; # -p 9117:9117 -p 7878:7878 -p 8080:8080 -p 8989:8989
#--share cgroup,ipc,uts
path = [ pkgs.podman ];
};
virtualisation.oci-containers.containers = {
jackett = {
image = "linuxserver/jackett";
autoStart = true;
user = "1000:100";
ports = [ "9117:9117" ];
extraOptions = [
"--init=true"
"--pod=download"
];
volumes = [
"jackett_config:/config"
"${cfg.dataDir}:/data"
];
};
radarr = {
image = "linuxserver/radarr";
autoStart = true;
user = "1000:100";
ports = [ "7878:7878" ];
extraOptions = [
"--init=true"
"--pod=download"
];
volumes = [
"radarr_config:/config"
"${cfg.dataDir}:/data"
];
};
sabnzbd = {
image = "linuxserver/sabnzbd";
autoStart = true;
user = "1000:100";
ports = [ "8080:8080" ];
extraOptions = [
"--init=true"
"--pod=download"
];
volumes = [
"sabnzbd_config:/config"
"${cfg.dataDir}:/data"
];
};
sonarr = {
image = "linuxserver/sonarr";
autoStart = true;
user = "1000:100";
ports = [ "8989:8989" ];
extraOptions = [
"--init=true"
"--pod=download"
];
volumes = [
"sonarr_config:/config"
"${cfg.dataDir}:/data"
];
};
};
services.caddy = lib.mkIf cfg.proxy.enable {
enable = true;
enableReload = false;
virtualHosts = {
"jackett.${cfg.proxy.hostName}".extraConfig = ''
reverse_proxy http://${cfg.proxy.serverName}:9117
'';
"radarr.${cfg.proxy.hostName}".extraConfig = ''
reverse_proxy http://${cfg.proxy.serverName}:7878
'';
"sabnzbd.${cfg.proxy.hostName}".extraConfig = ''
reverse_proxy http://${cfg.proxy.serverName}:8080
'';
"sonarr.${cfg.proxy.hostName}".extraConfig = ''
reverse_proxy http://${cfg.proxy.serverName}:8989
'';
};
};
};
}

View file

@ -72,57 +72,6 @@ in
virtualisation.oci-containers.containers = enabledContainers containers;
# virtualisation.oci-containers.containers = {
# jackett = {
# image = "linuxserver/jackett";
# autoStart = true;
# extraOptions = [ "--pod=my-pod" ];
# volumes = [
# "jackett_config:/config"
# "jackett_data:/data"
# ];
# };
# radarr = {
# image = "linuxserver/radarr";
# autoStart = true;
# extraOptions = [ "--pod=download" ];
# volumes = [
# "radarr_config:/config"
# "radarr_data:/data"
# ];
# };
# sabnzbd = {
# image = "linuxserver/sabnzbd";
# autoStart = true;
# extraOptions = [ "--pod=download" ];
# volumes = [
# "sabnzbd_config:/config"
# "sabnzbd_data:/data"
# ];
# };
# sonarr = {
# image = "linuxserver/sonarr";
# autoStart = true;
# extraOptions = [ "--pod=download" ];
# volumes = [
# "sonarr_config:/config"
# "sonarr_data:/data"
# ];
# };
# prowlarr = {
# image = "linuxserver/prowlarr";
# autoStart = true;
# extraOptions = [ "--pod=download" ];
# volumes = [ "prowlarr_config:/config" ];
# };
# };
services.caddy = lib.mkIf cfg.proxy.enable {
enable = true;
enableReload = false;

View file

@ -1,8 +1,7 @@
{
config,
lib,
pkgs,
...
{ config
, lib
, pkgs
, ...
}:
with lib;
@ -10,35 +9,6 @@ with lib;
let
cfg = config.my.virtualisation.podmanPods;
# Get the options from the original oci-containers module
# containerOptions = (
# filterAttrs (
# n: v: n != "definition"
# ) config.virtualisation.oci-containers.containers.type.getSubOptions
# );
# containerDefinition = mkOption {
# type = types.attrs;
# description = "The container definition, derived from virtualisation.oci-containers.containers.";
# example = {
# image = "nginx:latest";
# ports = [ "8080:80" ];
# };
# default = { };
# };
# containerDefinition = mkOption {
# type = types.attrs;
# description = "The container definition, derived from virtualisation.oci-containers.containers.";
# example = {
# image = "nginx:latest";
# ports = [ "8080:80" ];
# };
# default = {};
# };
# # config.virtualisation.oci-containers.containers.type.getSubOptions;
containerDefinition = config.virtualisation.oci-containers.containers.type.getSubOptions;
# Add our enable option
@ -104,12 +74,6 @@ let
fi
'';
# enabledContainers = lib.flatten (
# mapAttrs (
# podName: podConfig: filterAttrs (name: value: value.enable or true) podConfig.containers
# ) cfg
# );
# flattenPodContainers =
# pods:
# mapAttrs' (
@ -140,14 +104,6 @@ in
environment.systemPackages = [ pkgs.jq ];
# virtualisation.oci-containers.containers = enabledContainers;
# virtualisation.oci-containers.containers = flattenPodContainers cfg;
# virtualisation.oci-containers.containers = lib.mkMerge (
# map (entry: entry.container) (filter (entry: entry.enable) cfg.containers)
# );
# virtualisation.oci-containers.containers = listToAttrs (flatten (mapAttrsToList
# (podName: podDef:
# mapAttrs
@ -162,56 +118,45 @@ in
# )
# cfg));
# virtualisation.oci-containers.containers = lib.flatten
# (mapAttrs
# (podName: podConfig:
# mapAttrs
# (containerName: containerConfig:
# filterAttrs (attrName: attrValue: attrName != "enable") containerConfig
# )
# (filterAttrs (name: value: value.enable) podConfig.containers)
# )
# (filterAttrs (podName: podConfig: podConfig.enable) cfg)
# );
# mapAttrs
# (name: value:
# filterAttrs (n: v: n != "enable") value
# )
# (filterAttrs (name: value: value.enable) cfg.containers);
networking.firewall.allowedTCPPorts = flatten (
mapAttrsToList (
name: podDef: map (portMapping: lib.toInt (lib.head (lib.splitString ":" portMapping))) podDef.ports
) cfg
mapAttrsToList
(
name: podDef: map (portMapping: lib.toInt (lib.head (lib.splitString ":" portMapping))) podDef.ports
)
cfg
);
systemd.services =
let
podServices = mapAttrs' (
name: podDef:
nameValuePair "podman-pod-${name}" {
description = "Manage Podman pod: ${name}";
serviceConfig = {
Type = "oneshot";
ExecStart = "${createPodScript name podDef}";
};
path = [
pkgs.jq
pkgs.podman
];
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
}
) cfg;
podServices = mapAttrs'
(
name: podDef:
nameValuePair "podman-pod-${name}" {
description = "Manage Podman pod: ${name}";
serviceConfig = {
Type = "oneshot";
ExecStart = "${createPodScript name podDef}";
};
path = [
pkgs.jq
pkgs.podman
];
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
}
)
cfg;
containerServices = mapAttrs' (
name: container:
nameValuePair "podman-${name}" {
after = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
requires = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
partOf = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
}
) config.containers;
containerServices = mapAttrs'
(
name: container:
nameValuePair "podman-${name}" {
after = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
requires = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
partOf = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
}
)
config.containers;
in
podServices // containerServices;