Removed comments and format
This commit is contained in:
parent
8b25f46384
commit
e0a09e90a7
7 changed files with 85 additions and 305 deletions
|
|
@ -1,8 +1,7 @@
|
||||||
{
|
{ config
|
||||||
config,
|
, pkgs
|
||||||
pkgs,
|
, lib
|
||||||
lib,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
my = {
|
my = {
|
||||||
|
|
|
||||||
|
|
@ -49,13 +49,13 @@
|
||||||
audio.enable = false;
|
audio.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
utils.commons.enable = true;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Vedi https://github.com/TLATER/dotfiles/blob/f989a86890f27f6b089e9d74b7e8356ec8e5683d/home-config/hosts/yui.nix
|
# 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";
|
# 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
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It's perfectly fine and recommended to leave
|
# on your system were taken. It's perfectly fine and recommended to leave
|
||||||
|
|
|
||||||
42
hosts/default.nix
Normal file
42
hosts/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./download-pod.nix
|
./download-pod.nix
|
||||||
./download-pod-old.nix
|
|
||||||
./nextcloud-podman.nix
|
./nextcloud-podman.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -72,57 +72,6 @@ in
|
||||||
|
|
||||||
virtualisation.oci-containers.containers = enabledContainers containers;
|
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 {
|
services.caddy = lib.mkIf cfg.proxy.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableReload = false;
|
enableReload = false;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
{
|
{ config
|
||||||
config,
|
, lib
|
||||||
lib,
|
, pkgs
|
||||||
pkgs,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
@ -10,35 +9,6 @@ with lib;
|
||||||
let
|
let
|
||||||
cfg = config.my.virtualisation.podmanPods;
|
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;
|
containerDefinition = config.virtualisation.oci-containers.containers.type.getSubOptions;
|
||||||
|
|
||||||
# Add our enable option
|
# Add our enable option
|
||||||
|
|
@ -104,12 +74,6 @@ let
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# enabledContainers = lib.flatten (
|
|
||||||
# mapAttrs (
|
|
||||||
# podName: podConfig: filterAttrs (name: value: value.enable or true) podConfig.containers
|
|
||||||
# ) cfg
|
|
||||||
# );
|
|
||||||
|
|
||||||
# flattenPodContainers =
|
# flattenPodContainers =
|
||||||
# pods:
|
# pods:
|
||||||
# mapAttrs' (
|
# mapAttrs' (
|
||||||
|
|
@ -140,14 +104,6 @@ in
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.jq ];
|
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
|
# virtualisation.oci-containers.containers = listToAttrs (flatten (mapAttrsToList
|
||||||
# (podName: podDef:
|
# (podName: podDef:
|
||||||
# mapAttrs
|
# mapAttrs
|
||||||
|
|
@ -162,56 +118,45 @@ in
|
||||||
# )
|
# )
|
||||||
# cfg));
|
# 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 (
|
networking.firewall.allowedTCPPorts = flatten (
|
||||||
mapAttrsToList (
|
mapAttrsToList
|
||||||
name: podDef: map (portMapping: lib.toInt (lib.head (lib.splitString ":" portMapping))) podDef.ports
|
(
|
||||||
) cfg
|
name: podDef: map (portMapping: lib.toInt (lib.head (lib.splitString ":" portMapping))) podDef.ports
|
||||||
|
)
|
||||||
|
cfg
|
||||||
);
|
);
|
||||||
|
|
||||||
systemd.services =
|
systemd.services =
|
||||||
let
|
let
|
||||||
podServices = mapAttrs' (
|
podServices = mapAttrs'
|
||||||
name: podDef:
|
(
|
||||||
nameValuePair "podman-pod-${name}" {
|
name: podDef:
|
||||||
description = "Manage Podman pod: ${name}";
|
nameValuePair "podman-pod-${name}" {
|
||||||
serviceConfig = {
|
description = "Manage Podman pod: ${name}";
|
||||||
Type = "oneshot";
|
serviceConfig = {
|
||||||
ExecStart = "${createPodScript name podDef}";
|
Type = "oneshot";
|
||||||
};
|
ExecStart = "${createPodScript name podDef}";
|
||||||
path = [
|
};
|
||||||
pkgs.jq
|
path = [
|
||||||
pkgs.podman
|
pkgs.jq
|
||||||
];
|
pkgs.podman
|
||||||
after = [ "network.target" ];
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
after = [ "network.target" ];
|
||||||
}
|
wantedBy = [ "multi-user.target" ];
|
||||||
) cfg;
|
}
|
||||||
|
)
|
||||||
|
cfg;
|
||||||
|
|
||||||
containerServices = mapAttrs' (
|
containerServices = mapAttrs'
|
||||||
name: container:
|
(
|
||||||
nameValuePair "podman-${name}" {
|
name: container:
|
||||||
after = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
|
nameValuePair "podman-${name}" {
|
||||||
requires = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
|
after = [ "podman-pod-${lib.head (lib.splitString "-" name)}.service" ];
|
||||||
partOf = [ "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;
|
}
|
||||||
|
)
|
||||||
|
config.containers;
|
||||||
in
|
in
|
||||||
podServices // containerServices;
|
podServices // containerServices;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue