nix fmt with "nixfmt-rfc-style"
This commit is contained in:
parent
4a39b2cbfd
commit
eb9f742b1e
26 changed files with 460 additions and 267 deletions
|
|
@ -23,12 +23,18 @@ in
|
|||
services.podmanPods = {
|
||||
mywebapp = {
|
||||
name = "mywebapp";
|
||||
ports = [ "9090:80" "9443:443" ];
|
||||
ports = [
|
||||
"9090:80"
|
||||
"9443:443"
|
||||
];
|
||||
containers = {
|
||||
webserver = {
|
||||
enable = true;
|
||||
image = "nginx";
|
||||
volumes = [ "aaa:/config" "bbb:/data" ];
|
||||
volumes = [
|
||||
"aaa:/config"
|
||||
"bbb:/data"
|
||||
];
|
||||
};
|
||||
appserver = {
|
||||
image = "my-custom-app:latest";
|
||||
|
|
@ -50,8 +56,6 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
# Extra packages
|
||||
# environment.systemPackages = with pkgs; [ ];
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ config, pkgs, home-manager, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
home-manager,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
|
|
@ -43,8 +48,6 @@
|
|||
|
||||
# podman.enable = true;
|
||||
|
||||
download-pod.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";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,42 +1,60 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"nvme"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"rtsx_pci_sdmmc"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/NixOS";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=root" "compress=zstd" "discard=async" ];
|
||||
options = [
|
||||
"subvol=root"
|
||||
"compress=zstd"
|
||||
"discard=async"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/home" =
|
||||
{
|
||||
fileSystems."/home" = {
|
||||
device = "/dev/disk/by-label/NixOS";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=home" "compress=zstd" "discard=async" ];
|
||||
options = [
|
||||
"subvol=home"
|
||||
"compress=zstd"
|
||||
"discard=async"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/nix" =
|
||||
{
|
||||
fileSystems."/nix" = {
|
||||
device = "/dev/disk/by-label/NixOS";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=nix" "noatime" "discard=async" ];
|
||||
options = [
|
||||
"subvol=nix"
|
||||
"noatime"
|
||||
"discard=async"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/BOOT";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -82,7 +82,10 @@ in
|
|||
"sys-fs-fuse-connections.mount"
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,7 +125,10 @@ in
|
|||
"sys-fs-fuse-connections.mount"
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,10 @@
|
|||
# };
|
||||
|
||||
# Since we don't use DHCP, we need to set our own nameservers.
|
||||
nameservers = [ "1.1.1.1" "1.0.0.1" ];
|
||||
nameservers = [
|
||||
"1.1.1.1"
|
||||
"1.0.0.1"
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.audio;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.btrfsAutoscrub;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -25,7 +25,10 @@ in
|
|||
|
||||
nix = {
|
||||
|
||||
settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
gc = {
|
||||
# Auto delete old generations
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.gnome;
|
||||
in
|
||||
|
|
@ -58,13 +63,15 @@ in
|
|||
];
|
||||
|
||||
# Remove standard Gnome Packages
|
||||
gnome.excludePackages = (with pkgs; [
|
||||
gnome.excludePackages =
|
||||
(with pkgs; [
|
||||
gedit # text editor
|
||||
gnome-photos
|
||||
gnome-tour
|
||||
gnome-connections
|
||||
gnome-photos
|
||||
]) ++ (with pkgs.gnome; [
|
||||
])
|
||||
++ (with pkgs.gnome; [
|
||||
atomix # puzzle game
|
||||
cheese # webcam tool
|
||||
epiphany # web browser
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.plymouth;
|
||||
in
|
||||
|
|
@ -11,7 +16,9 @@ in
|
|||
boot.plymouth = {
|
||||
enable = true;
|
||||
theme = "colorful_loop";
|
||||
themePackages = [ (pkgs.adi1090x-plymouth-themes.override { selected_themes = [ "colorful_loop" ]; }) ];
|
||||
themePackages = [
|
||||
(pkgs.adi1090x-plymouth-themes.override { selected_themes = [ "colorful_loop" ]; })
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.steam;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.mainUser;
|
||||
in
|
||||
|
|
@ -37,14 +42,22 @@ in
|
|||
config = lib.mkIf cfg.enable {
|
||||
users.users.${cfg.userName} = {
|
||||
description = cfg.description;
|
||||
extraGroups = [ "users" "wheel" ];
|
||||
extraGroups = [
|
||||
"users"
|
||||
"wheel"
|
||||
];
|
||||
initialHashedPassword = cfg.hashedPassword;
|
||||
isNormalUser = true;
|
||||
isSystemUser = false;
|
||||
shell = pkgs.zsh;
|
||||
uid = 1000;
|
||||
|
||||
packages = with pkgs; lib.mkIf cfg.flatpak [ flatpak gnome.gnome-software ];
|
||||
packages =
|
||||
with pkgs;
|
||||
lib.mkIf cfg.flatpak [
|
||||
flatpak
|
||||
gnome.gnome-software
|
||||
];
|
||||
};
|
||||
|
||||
console.keyMap = "it";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.avahi;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.tailscale;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.download-pod-old;
|
||||
in
|
||||
|
|
@ -37,8 +42,7 @@ in
|
|||
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
podman.enable = true;
|
||||
|
||||
systemd.services.pod-download = {
|
||||
|
|
@ -72,7 +76,10 @@ in
|
|||
"--init=true"
|
||||
"--pod=download"
|
||||
];
|
||||
volumes = [ "jackett_config:/config" "${cfg.dataDir}:/data" ];
|
||||
volumes = [
|
||||
"jackett_config:/config"
|
||||
"${cfg.dataDir}:/data"
|
||||
];
|
||||
};
|
||||
|
||||
radarr = {
|
||||
|
|
@ -84,7 +91,10 @@ in
|
|||
"--init=true"
|
||||
"--pod=download"
|
||||
];
|
||||
volumes = [ "radarr_config:/config" "${cfg.dataDir}:/data" ];
|
||||
volumes = [
|
||||
"radarr_config:/config"
|
||||
"${cfg.dataDir}:/data"
|
||||
];
|
||||
};
|
||||
|
||||
sabnzbd = {
|
||||
|
|
@ -96,7 +106,10 @@ in
|
|||
"--init=true"
|
||||
"--pod=download"
|
||||
];
|
||||
volumes = [ "sabnzbd_config:/config" "${cfg.dataDir}:/data" ];
|
||||
volumes = [
|
||||
"sabnzbd_config:/config"
|
||||
"${cfg.dataDir}:/data"
|
||||
];
|
||||
};
|
||||
|
||||
sonarr = {
|
||||
|
|
@ -108,7 +121,10 @@ in
|
|||
"--init=true"
|
||||
"--pod=download"
|
||||
];
|
||||
volumes = [ "sonarr_config:/config" "${cfg.dataDir}:/data" ];
|
||||
volumes = [
|
||||
"sonarr_config:/config"
|
||||
"${cfg.dataDir}:/data"
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
|
|
@ -133,7 +149,6 @@ in
|
|||
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.download-pod;
|
||||
in
|
||||
|
|
@ -73,45 +78,47 @@ in
|
|||
jackett = {
|
||||
image = "linuxserver/jackett";
|
||||
autoStart = true;
|
||||
extraOptions = [
|
||||
"--pod=my-pod"
|
||||
extraOptions = [ "--pod=my-pod" ];
|
||||
volumes = [
|
||||
"jackett_config:/config"
|
||||
"jackett_data:/data"
|
||||
];
|
||||
volumes = [ "jackett_config:/config" "jackett_data:/data" ];
|
||||
};
|
||||
|
||||
radarr = {
|
||||
image = "linuxserver/radarr";
|
||||
autoStart = true;
|
||||
extraOptions = [
|
||||
"--pod=download"
|
||||
extraOptions = [ "--pod=download" ];
|
||||
volumes = [
|
||||
"radarr_config:/config"
|
||||
"radarr_data:/data"
|
||||
];
|
||||
volumes = [ "radarr_config:/config" "radarr_data:/data" ];
|
||||
};
|
||||
|
||||
sabnzbd = {
|
||||
image = "linuxserver/sabnzbd";
|
||||
autoStart = true;
|
||||
extraOptions = [
|
||||
"--pod=download"
|
||||
extraOptions = [ "--pod=download" ];
|
||||
volumes = [
|
||||
"sabnzbd_config:/config"
|
||||
"sabnzbd_data:/data"
|
||||
];
|
||||
volumes = [ "sabnzbd_config:/config" "sabnzbd_data:/data" ];
|
||||
};
|
||||
|
||||
sonarr = {
|
||||
image = "linuxserver/sonarr";
|
||||
autoStart = true;
|
||||
extraOptions = [
|
||||
"--pod=download"
|
||||
extraOptions = [ "--pod=download" ];
|
||||
volumes = [
|
||||
"sonarr_config:/config"
|
||||
"sonarr_data:/data"
|
||||
];
|
||||
volumes = [ "sonarr_config:/config" "sonarr_data:/data" ];
|
||||
};
|
||||
|
||||
prowlarr = {
|
||||
image = "linuxserver/prowlarr";
|
||||
autoStart = true;
|
||||
extraOptions = [
|
||||
"--pod=download"
|
||||
];
|
||||
extraOptions = [ "--pod=download" ];
|
||||
volumes = [ "prowlarr_config:/config" ];
|
||||
};
|
||||
|
||||
|
|
@ -139,5 +146,4 @@ in
|
|||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.nextcloud-pd;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,22 +1,40 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.rutorrent;
|
||||
|
||||
rutorrentPkgs = import ../packages/rutorrent.nix { inherit pkgs; inherit lib; };
|
||||
rutorrentPkgs = import ../packages/rutorrent.nix {
|
||||
inherit pkgs;
|
||||
inherit lib;
|
||||
};
|
||||
|
||||
rtorrentPluginDependencies = with pkgs; {
|
||||
_task = [ procps ];
|
||||
unpack = [ unzip unrar ];
|
||||
unpack = [
|
||||
unzip
|
||||
unrar
|
||||
];
|
||||
rss = [ curl ];
|
||||
mediainfo = [ mediainfo ];
|
||||
spectrogram = [ sox ];
|
||||
screenshots = [ ffmpeg ];
|
||||
};
|
||||
|
||||
python = with pkgs; (python312.withPackages (p: with p; [ cloudscraper cfscrape ]));
|
||||
python =
|
||||
with pkgs;
|
||||
(python312.withPackages (
|
||||
p: with p; [
|
||||
cloudscraper
|
||||
cfscrape
|
||||
]
|
||||
));
|
||||
|
||||
phpPluginDependencies = with pkgs; {
|
||||
_cloudflare = [ python ];
|
||||
|
|
@ -77,7 +95,13 @@ in
|
|||
};
|
||||
|
||||
poolSettings = mkOption {
|
||||
type = with types; attrsOf (oneOf [ str int bool ]);
|
||||
type =
|
||||
with types;
|
||||
attrsOf (oneOf [
|
||||
str
|
||||
int
|
||||
bool
|
||||
]);
|
||||
default = {
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 32;
|
||||
|
|
@ -118,7 +142,10 @@ in
|
|||
{
|
||||
assertions =
|
||||
let
|
||||
usedRpcPlugins = intersectLists cfg.plugins [ "httprpc" "rpc" ];
|
||||
usedRpcPlugins = intersectLists cfg.plugins [
|
||||
"httprpc"
|
||||
"rpc"
|
||||
];
|
||||
in
|
||||
[
|
||||
{
|
||||
|
|
@ -136,11 +163,17 @@ in
|
|||
nginxVhostCfg = config.services.nginx.virtualHosts."${cfg.hostName}";
|
||||
in
|
||||
[ ]
|
||||
++ (optional (cfg.nginx.exposeInsecureRPC2mount && (nginxVhostCfg.basicAuth == { } || nginxVhostCfg.basicAuthFile == null)) ''
|
||||
++ (optional
|
||||
(
|
||||
cfg.nginx.exposeInsecureRPC2mount
|
||||
&& (nginxVhostCfg.basicAuth == { } || nginxVhostCfg.basicAuthFile == null)
|
||||
)
|
||||
''
|
||||
You are using exposeInsecureRPC2mount without using basic auth on the virtual host. The exposed rpc mount allow for remote command execution.
|
||||
|
||||
Please make sure it is not accessible from the outside.
|
||||
'');
|
||||
''
|
||||
);
|
||||
|
||||
systemd = {
|
||||
services = {
|
||||
|
|
@ -230,7 +263,10 @@ in
|
|||
cp -r ${rutorrentPkgs}/php ${cfg.dataDir}/
|
||||
|
||||
${optionalString (cfg.plugins != [ ])
|
||||
''cp -r ${concatMapStringsSep " " (p: "${rutorrentPkgs}/plugins/${p}") cfg.plugins} ${cfg.dataDir}/plugins/''}
|
||||
''cp -r ${
|
||||
concatMapStringsSep " " (p: "${rutorrentPkgs}/plugins/${p}") cfg.plugins
|
||||
} ${cfg.dataDir}/plugins/''
|
||||
}
|
||||
|
||||
chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}/{conf,share,logs,plugins}
|
||||
chmod -R 755 ${cfg.dataDir}/{conf,share,logs,plugins}
|
||||
|
|
@ -263,7 +299,10 @@ in
|
|||
{
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 80 443 ];
|
||||
allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
];
|
||||
};
|
||||
|
||||
services = {
|
||||
|
|
@ -303,11 +342,12 @@ in
|
|||
pool = {
|
||||
user = cfg.user;
|
||||
group = config.services.rtorrent.group;
|
||||
settings = mapAttrs (name: mkDefault)
|
||||
{
|
||||
settings =
|
||||
mapAttrs (name: mkDefault) {
|
||||
"listen.owner" = config.services.nginx.user;
|
||||
"listen.group" = config.services.nginx.group;
|
||||
} // cfg.poolSettings;
|
||||
}
|
||||
// cfg.poolSettings;
|
||||
};
|
||||
in
|
||||
if (envPath == "") then pool else pool // { phpEnv.PATH = envPath; };
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.docker;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.libvirtd;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.lxc;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
# Save this as podman-pod.nix
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
|
|
@ -7,15 +12,20 @@ let
|
|||
cfg = config.services.podmanPods;
|
||||
|
||||
# Get the options from the original oci-containers module
|
||||
containerOptions = (filterAttrs (n: v: n != "definition")
|
||||
config.virtualisation.oci-containers.containers.type.getSubOptions);
|
||||
containerOptions = (
|
||||
filterAttrs (
|
||||
n: v: n != "definition"
|
||||
) config.virtualisation.oci-containers.containers.type.getSubOptions
|
||||
);
|
||||
|
||||
# Add our enable option
|
||||
extendedContainerOptions = containerOptions // {
|
||||
enable = mkEnableOption "Enable this container";
|
||||
};
|
||||
|
||||
podOptions = { name, config, ... }: {
|
||||
podOptions =
|
||||
{ name, config, ... }:
|
||||
{
|
||||
options = {
|
||||
|
||||
name = mkOption {
|
||||
|
|
@ -30,9 +40,7 @@ let
|
|||
};
|
||||
|
||||
containers = mkOption {
|
||||
type = types.attrsOf (types.submodule {
|
||||
options = extendedContainerOptions;
|
||||
});
|
||||
type = types.attrsOf (types.submodule { options = extendedContainerOptions; });
|
||||
default = { };
|
||||
description = "Attribute set of OCI container configurations for this set";
|
||||
};
|
||||
|
|
@ -40,7 +48,8 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
createPodScript = name: podDef:
|
||||
createPodScript =
|
||||
name: podDef:
|
||||
let
|
||||
podDefinitionString = builtins.toJSON { inherit (podDef) ports; };
|
||||
in
|
||||
|
|
@ -73,11 +82,11 @@ let
|
|||
fi
|
||||
'';
|
||||
|
||||
enabledContainers = lib.flatten (mapAttrs
|
||||
(podName: podConfig:
|
||||
filterAttrs (name: value: value.enable or true) podConfig.containers
|
||||
)
|
||||
cfg);
|
||||
enabledContainers = lib.flatten (
|
||||
mapAttrs (
|
||||
podName: podConfig: filterAttrs (name: value: value.enable or true) podConfig.containers
|
||||
) cfg
|
||||
);
|
||||
|
||||
in
|
||||
{
|
||||
|
|
@ -126,37 +135,38 @@ in
|
|||
# )
|
||||
# (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);
|
||||
networking.firewall.allowedTCPPorts = flatten (
|
||||
mapAttrsToList (
|
||||
name: podDef: map (portMapping: lib.toInt (lib.head (lib.splitString ":" portMapping))) podDef.ports
|
||||
) cfg
|
||||
);
|
||||
|
||||
systemd.services =
|
||||
let
|
||||
podServices = mapAttrs'
|
||||
(name: podDef:
|
||||
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 ];
|
||||
path = [
|
||||
pkgs.jq
|
||||
pkgs.podman
|
||||
];
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
}
|
||||
)
|
||||
cfg;
|
||||
containerServices = mapAttrs'
|
||||
(name: container:
|
||||
) 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.virtualisation.oci-containers.containers;
|
||||
) config.virtualisation.oci-containers.containers;
|
||||
in
|
||||
podServices // containerServices;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.podman;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.proxmox;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
{ pkgs ? import <nixpkgs> { }, lib, }:
|
||||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
lib,
|
||||
}:
|
||||
|
||||
with pkgs;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue