nix fmt with "nixfmt-rfc-style"

This commit is contained in:
pazpi 2024-08-27 09:46:44 +02:00
parent 4a39b2cbfd
commit eb9f742b1e
26 changed files with 460 additions and 267 deletions

View file

@ -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; [ ];

View file

@ -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";

View file

@ -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";
};

View file

@ -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";
}

View file

@ -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";
}

View file

@ -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"
];
};

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.audio;
in

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.btrfsAutoscrub;
in

View file

@ -25,7 +25,10 @@ in
nix = {
settings.experimental-features = [ "nix-command" "flakes" ];
settings.experimental-features = [
"nix-command"
"flakes"
];
gc = {
# Auto delete old generations

View file

@ -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

View file

@ -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" ]; })
];
};
};

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.steam;
in

View file

@ -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";

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.avahi;
in

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.tailscale;
in

View file

@ -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
};
};
}

View file

@ -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
};
}

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.nextcloud-pd;
in

View file

@ -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; };

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.docker;
in

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.libvirtd;
in

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.lxc;
in

View file

@ -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;
};

View file

@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
cfg = config.podman;
in

View file

@ -1,4 +1,9 @@
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.proxmox;

View file

@ -1,4 +1,7 @@
{ pkgs ? import <nixpkgs> { }, lib, }:
{
pkgs ? import <nixpkgs> { },
lib,
}:
with pkgs;