This commit is contained in:
2025-08-08 22:33:10 +03:00
parent 310f41d9eb
commit 90e9707d27
17 changed files with 69 additions and 56 deletions
+2 -2
View File
@@ -39,12 +39,12 @@ let
}; };
}; };
nixosModule = nixosModule =
{ config, ... }: { xlib, ... }:
{ {
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
users."${config.xlib.device.username}" = homeModule; users."${xlib.device.username}" = homeModule;
users.root = rootModule; users.root = rootModule;
sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ]; sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
}; };
+7 -6
View File
@@ -8,6 +8,7 @@ let
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
@@ -20,7 +21,7 @@ let
./hardware/logitech.nix ./hardware/logitech.nix
]; ];
fileSystems = { fileSystems = {
"${config.xlib.dirs.therima-drive}" = { "${xlib.dirs.therima-drive}" = {
device = "/dev/disk/by-uuid/C0A2DDEFA2DDEA44"; device = "/dev/disk/by-uuid/C0A2DDEFA2DDEA44";
fsType = "ntfs3"; fsType = "ntfs3";
options = [ options = [
@@ -33,7 +34,7 @@ let
#"x-systemd.device-timeout=0" #"x-systemd.device-timeout=0"
]; ];
}; };
"${config.xlib.dirs.vetymae-drive}" = { "${xlib.dirs.vetymae-drive}" = {
device = "/dev/disk/by-uuid/6E04EA7F04EA49A3"; device = "/dev/disk/by-uuid/6E04EA7F04EA49A3";
fsType = "ntfs3"; fsType = "ntfs3";
options = [ options = [
@@ -85,7 +86,7 @@ let
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
networking = { networking = {
hostName = "${config.xlib.device.hostname}"; hostName = "${xlib.device.hostname}";
networkmanager.enable = true; networkmanager.enable = true;
firewall.enable = false; firewall.enable = false;
}; };
@@ -114,10 +115,10 @@ let
syncthing = { syncthing = {
enable = true; enable = true;
systemService = true; systemService = true;
configDir = "${config.xlib.dirs.user-storage}/Syncthing/${config.system.name}"; configDir = "${xlib.dirs.user-storage}/Syncthing/${config.system.name}";
dataDir = "${config.xlib.dirs.user-home}"; dataDir = "${xlib.dirs.user-home}";
group = "users"; group = "users";
user = "${config.xlib.device.username}"; user = "${xlib.device.username}";
}; };
pipewire = { pipewire = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
+6 -6
View File
@@ -29,7 +29,7 @@ let
}; };
fileSystems = { fileSystems = {
"${config.xlib.dirs.therima-drive}" = { "${xlib.dirs.therima-drive}" = {
device = "/dev/disk/by-uuid/C0A2DDEFA2DDEA44"; device = "/dev/disk/by-uuid/C0A2DDEFA2DDEA44";
fsType = "ntfs3"; fsType = "ntfs3";
options = [ options = [
@@ -41,7 +41,7 @@ let
"nofail" "nofail"
]; ];
}; };
"${config.xlib.dirs.vetymae-drive}" = { "${xlib.dirs.vetymae-drive}" = {
device = "/dev/disk/by-uuid/38D63C6ED63C2E8E"; device = "/dev/disk/by-uuid/38D63C6ED63C2E8E";
fsType = "ntfs3"; fsType = "ntfs3";
options = [ options = [
@@ -74,7 +74,7 @@ let
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
networking = { networking = {
hostName = "${config.xlib.device.hostname}"; hostName = "${xlib.device.hostname}";
networkmanager.enable = true; networkmanager.enable = true;
firewall.enable = false; firewall.enable = false;
}; };
@@ -104,10 +104,10 @@ let
syncthing = { syncthing = {
enable = true; enable = true;
systemService = true; systemService = true;
configDir = "${config.xlib.dirs.user-storage}/Syncthing/${config.system.name}"; configDir = "${xlib.dirs.user-storage}/Syncthing/${config.system.name}";
dataDir = "${config.xlib.dirs.user-home}"; dataDir = "${xlib.dirs.user-home}";
group = "users"; group = "users";
user = "${config.xlib.device.username}"; user = "${xlib.device.username}";
}; };
pipewire = { pipewire = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
+3 -2
View File
@@ -5,6 +5,7 @@ let
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
@@ -36,7 +37,7 @@ let
fileSystems = { fileSystems = {
# External drive # External drive
"${config.xlib.dirs.server-home}" = { "${xlib.dirs.server-home}" = {
device = "/dev/disk/by-uuid/37e53ebc-5343-a94d-9fe2-0ca39e13a8de"; device = "/dev/disk/by-uuid/37e53ebc-5343-a94d-9fe2-0ca39e13a8de";
fsType = "ext4"; fsType = "ext4";
# options = [ # options = [
@@ -86,7 +87,7 @@ let
}; };
networking = { networking = {
hostName = "${config.xlib.device.hostname}"; hostName = "${xlib.device.hostname}";
networkmanager.enable = true; networkmanager.enable = true;
firewall.enable = false; firewall.enable = false;
}; };
+9 -8
View File
@@ -6,6 +6,7 @@ let
lib, lib,
modulesPath, modulesPath,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
@@ -59,19 +60,19 @@ let
"path" = "/etc/nixos"; "path" = "/etc/nixos";
"browseable" = "yes"; "browseable" = "yes";
"read only" = "no"; "read only" = "no";
"valid users" = "${config.xlib.device.username}"; "valid users" = "${xlib.device.username}";
"guest ok" = "no"; "guest ok" = "no";
"writable" = "yes"; "writable" = "yes";
"create mask" = 755; "create mask" = 755;
"directory mask" = 755; "directory mask" = 755;
"force user" = "${config.xlib.device.username}"; "force user" = "${xlib.device.username}";
"force group" = "users"; "force group" = "users";
}; };
root = { root = {
"path" = "/"; "path" = "/";
"browseable" = "yes"; "browseable" = "yes";
"read only" = "no"; "read only" = "no";
"valid users" = "${config.xlib.device.username}"; "valid users" = "${xlib.device.username}";
"guest ok" = "no"; "guest ok" = "no";
"writable" = "yes"; "writable" = "yes";
#"create mask" = 0644; #"create mask" = 0644;
@@ -79,16 +80,16 @@ let
"force user" = "root"; "force user" = "root";
"force group" = "root"; "force group" = "root";
}; };
"${config.xlib.device.username}" = { "${xlib.device.username}" = {
"path" = "/home/${config.xlib.device.username}"; "path" = "/home/${xlib.device.username}";
"browseable" = "yes"; "browseable" = "yes";
"read only" = "no"; "read only" = "no";
"valid users" = "${config.xlib.device.username}"; "valid users" = "${xlib.device.username}";
"guest ok" = "no"; "guest ok" = "no";
"writable" = "yes"; "writable" = "yes";
"create mask" = 700; "create mask" = 700;
"directory mask" = 700; "directory mask" = 700;
"force user" = "${config.xlib.device.username}"; "force user" = "${xlib.device.username}";
"force group" = "users"; "force group" = "users";
}; };
}; };
@@ -116,7 +117,7 @@ let
}; };
networking = { networking = {
hostName = "${config.xlib.device.hostname}"; hostName = "${xlib.device.hostname}";
networkmanager.enable = true; networkmanager.enable = true;
firewall.enable = true; firewall.enable = true;
}; };
+3 -2
View File
@@ -6,6 +6,7 @@ let
lib, lib,
pkgs, pkgs,
modulesPath, modulesPath,
xlib,
... ...
}: }:
{ {
@@ -30,14 +31,14 @@ let
networking = { networking = {
firewall.enable = false; firewall.enable = false;
hostName = config.xlib.device.hostname; hostName = xlib.device.hostname;
}; };
wsl = { wsl = {
enable = true; enable = true;
startMenuLaunchers = true; startMenuLaunchers = true;
#useWindowsDriver = true; #useWindowsDriver = true;
defaultUser = config.xlib.device.username; defaultUser = xlib.device.username;
}; };
system.stateVersion = "24.11"; system.stateVersion = "24.11";
+2 -1
View File
@@ -2,10 +2,11 @@
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
services = { services = {
tailscale.enable = config.xlib.device.type != "wsl"; # true, if not wsl tailscale.enable = xlib.device.type != "wsl"; # true, if not wsl
}; };
} }
+3 -2
View File
@@ -1,14 +1,15 @@
{ {
config, config,
xlib,
... ...
}: }:
{ {
services.calibre-web = { services.calibre-web = {
enable = true; enable = true;
group = "users"; group = "users";
user = "${config.xlib.device.username}"; user = "${xlib.device.username}";
options = { options = {
calibreLibrary = "${config.xlib.dirs.calibre-library}"; calibreLibrary = "${xlib.dirs.calibre-library}";
enableBookUploading = true; enableBookUploading = true;
enableKepubify = false; enableKepubify = false;
}; };
+5 -4
View File
@@ -2,16 +2,17 @@
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
services = { services = {
cloudflared = { cloudflared = {
enable = false; enable = false;
certificateFile = "${config.xlib.dirs.server-credentials}/cloudflared/cert.pem"; certificateFile = "${xlib.dirs.server-credentials}/cloudflared/cert.pem";
tunnels = { tunnels = {
"58b340ee-e98a-4af9-b786-74600c71f49e" = { "58b340ee-e98a-4af9-b786-74600c71f49e" = {
credentialsFile = "${config.xlib.dirs.server-credentials}/cloudflared/server.json"; credentialsFile = "${xlib.dirs.server-credentials}/cloudflared/server.json";
warp-routing.enabled = true; warp-routing.enabled = true;
ingress = { ingress = {
"immich.zeroq.ru" = { "immich.zeroq.ru" = {
@@ -24,7 +25,7 @@
default = "http_status:404"; default = "http_status:404";
}; };
# "58b340ee-e98a-4af9-b786-74600c71f49e" = { # "58b340ee-e98a-4af9-b786-74600c71f49e" = {
# credentialsFile = "${config.xlib.dirs.server-credentials}/cloudflared/server.json"; # credentialsFile = "${xlib.dirs.server-credentials}/cloudflared/server.json";
# warp-routing.enabled = true; # warp-routing.enabled = true;
# ingress = { # ingress = {
# "nextcloud.zeroq.ru" = { # "nextcloud.zeroq.ru" = {
@@ -56,7 +57,7 @@
# ]; # ];
# wantedBy = [ "multi-user.target" ]; # wantedBy = [ "multi-user.target" ];
# serviceConfig = { # serviceConfig = {
# ExecStart = "${pkgs.cloudflared}/bin/cloudflared tunnel --no-autoupdate --config=${config.xlib.dirs.server-credentials}/cloudflared/config.yaml --origincert=${config.xlib.dirs.server-credentials}/cloudflared/cert.pem --credentials-file=${config.xlib.dirs.server-credentials}/cloudflared/server.json run"; # ExecStart = "${pkgs.cloudflared}/bin/cloudflared tunnel --no-autoupdate --config=${xlib.dirs.server-credentials}/cloudflared/config.yaml --origincert=${xlib.dirs.server-credentials}/cloudflared/cert.pem --credentials-file=${xlib.dirs.server-credentials}/cloudflared/server.json run";
# Group = "root"; # Group = "root";
# User = "root"; # User = "root";
# Restart = "on-failure"; # Restart = "on-failure";
+2 -1
View File
@@ -3,6 +3,7 @@
lib, lib,
pkgs, pkgs,
inputs, inputs,
xlib,
... ...
}: }:
{ {
@@ -20,7 +21,7 @@
}; };
fileSystems."${config.services.immich.mediaLocation}" = { fileSystems."${config.services.immich.mediaLocation}" = {
device = "${config.xlib.dirs.immich-folder}"; device = "${xlib.dirs.immich-folder}";
options = [ options = [
"bind" "bind"
#"uid=1000" #"uid=1000"
+2 -1
View File
@@ -3,6 +3,7 @@
lib, lib,
pkgs, pkgs,
inputs, inputs,
xlib,
... ...
}: }:
{ {
@@ -76,7 +77,7 @@
}; };
fileSystems."/mnt/nextcloud" = { fileSystems."/mnt/nextcloud" = {
device = "${config.xlib.dirs.nextcloud-folder}"; device = "${xlib.dirs.nextcloud-folder}";
options = [ options = [
"bind" "bind"
#"uid=1000" #"uid=1000"
+8 -7
View File
@@ -1,5 +1,6 @@
{ {
config, config,
xlib,
... ...
}: }:
{ {
@@ -15,19 +16,19 @@
"path" = "/etc/nixos"; "path" = "/etc/nixos";
"browseable" = "yes"; "browseable" = "yes";
"read only" = "no"; "read only" = "no";
"valid users" = "${config.xlib.device.username}"; "valid users" = "${xlib.device.username}";
"guest ok" = "no"; "guest ok" = "no";
"writable" = "yes"; "writable" = "yes";
"create mask" = 755; "create mask" = 755;
"directory mask" = 755; "directory mask" = 755;
"force user" = "${config.xlib.device.username}"; "force user" = "${xlib.device.username}";
"force group" = "users"; "force group" = "users";
}; };
root = { root = {
"path" = "/"; "path" = "/";
"browseable" = "yes"; "browseable" = "yes";
"read only" = "no"; "read only" = "no";
"valid users" = "${config.xlib.device.username}"; "valid users" = "${xlib.device.username}";
"guest ok" = "no"; "guest ok" = "no";
"writable" = "yes"; "writable" = "yes";
#"create mask" = 0644; #"create mask" = 0644;
@@ -35,16 +36,16 @@
"force user" = "root"; "force user" = "root";
"force group" = "root"; "force group" = "root";
}; };
"${config.xlib.device.username}" = { "${xlib.device.username}" = {
"path" = "${config.xlib.dirs.server-home}"; "path" = "${xlib.dirs.server-home}";
"browseable" = "yes"; "browseable" = "yes";
"read only" = "no"; "read only" = "no";
"valid users" = "${config.xlib.device.username}"; "valid users" = "${xlib.device.username}";
"guest ok" = "no"; "guest ok" = "no";
"writable" = "yes"; "writable" = "yes";
"create mask" = 700; "create mask" = 700;
"directory mask" = 700; "directory mask" = 700;
"force user" = "${config.xlib.device.username}"; "force user" = "${xlib.device.username}";
"force group" = "users"; "force group" = "users";
}; };
}; };
+4 -3
View File
@@ -1,5 +1,6 @@
{ {
config, config,
xlib,
... ...
}: }:
{ {
@@ -7,9 +8,9 @@
enable = true; enable = true;
systemService = true; systemService = true;
guiAddress = "0.0.0.0:8384"; guiAddress = "0.0.0.0:8384";
configDir = "${config.xlib.dirs.storage}/Syncthing/${config.xlib.device.hostname}"; configDir = "${xlib.dirs.storage}/Syncthing/${xlib.device.hostname}";
dataDir = "${config.xlib.dirs.server-home}"; dataDir = "${xlib.dirs.server-home}";
group = "users"; group = "users";
user = "${config.xlib.device.username}"; user = "${xlib.device.username}";
}; };
} }
+3 -2
View File
@@ -2,6 +2,7 @@
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
@@ -12,8 +13,8 @@
#after = [ ]; #after = [ ];
requisite = [ "mnt-archive.mount" ]; # hard-code requisite = [ "mnt-archive.mount" ]; # hard-code
script = '' script = ''
${pkgs.rsync}/bin/rsync -rtv --delete ${config.xlib.dirs.immich-folder}/ ${config.xlib.dirs.archive-drive}/Services/immich/ ${pkgs.rsync}/bin/rsync -rtv --delete ${xlib.dirs.immich-folder}/ ${xlib.dirs.archive-drive}/Services/immich/
${pkgs.rsync}/bin/rsync -rtv --delete ${config.xlib.dirs.nextcloud-folder}/ ${config.xlib.dirs.archive-drive}/Services/nextcloud/ ${pkgs.rsync}/bin/rsync -rtv --delete ${xlib.dirs.nextcloud-folder}/ ${xlib.dirs.archive-drive}/Services/nextcloud/
''; '';
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
+5 -4
View File
@@ -1,19 +1,20 @@
{ {
config, config,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
services.transmission = { services.transmission = {
enable = false; enable = false;
#credentialsFile = "${config.xlib.dirs.server-home}/server/transmission/settings.json"; #credentialsFile = "${xlib.dirs.server-home}/server/transmission/settings.json";
openRPCPort = true; openRPCPort = true;
package = pkgs.transmission_4; package = pkgs.transmission_4;
user = "${config.xlib.device.username}"; user = "${xlib.device.username}";
group = "users"; group = "users";
settings = { settings = {
download-dir = "${config.xlib.dirs.server-home}/Downloads"; download-dir = "${xlib.dirs.server-home}/Downloads";
incomplete-dir = "${config.xlib.dirs.server-home}/Downloads/Temp"; incomplete-dir = "${xlib.dirs.server-home}/Downloads/Temp";
incomplete-dir-enabled = true; incomplete-dir-enabled = true;
rpc-bind-address = "0.0.0.0"; rpc-bind-address = "0.0.0.0";
rpc-port = 9091; rpc-port = 9091;
+2 -2
View File
@@ -1,8 +1,8 @@
{ inputs, ... }@flakeContext:
{ {
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
{ {
@@ -15,7 +15,7 @@
# HSA_OVERRIDE_GFX_VERSION = "11.5.0"; # HSA_OVERRIDE_GFX_VERSION = "11.5.0";
# HCC_AMDGPU_TARGET = "gfx1150"; # used to be necessary, but doesn't seem to anymore # HCC_AMDGPU_TARGET = "gfx1150"; # used to be necessary, but doesn't seem to anymore
# }; # };
# user = "ollama"; # "${config.xlib.device.username}"; # user = "ollama"; # "${xlib.device.username}";
# group = "ollama"; # group = "ollama";
# acceleration = "rocm"; # acceleration = "rocm";
# rocmOverrideGfx = "11.5.0"; # rocmOverrideGfx = "11.5.0";
@@ -1,8 +1,8 @@
{ inputs, ... }@flakeContext:
{ {
config, config,
lib, lib,
pkgs, pkgs,
xlib,
... ...
}: }:
let let
@@ -38,12 +38,12 @@ let
in in
{ {
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"z /mnt/beets 0700 ${config.xlib.device.username} users -" # beets absolute paths "z /mnt/beets 0700 ${xlib.device.username} users -" # beets absolute paths
]; ];
users = { users = {
users = { users = {
"${config.xlib.device.username}" = { "${xlib.device.username}" = {
packages = [ packages = [
beetsEnv beetsEnv
pkgs.beets pkgs.beets