mirror of
https://github.com/oqyude/nixos.git
synced 2026-08-09 08:03:16 +03:00
Compare commits
1
Commits
dev
..
3120ceaf40
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3120ceaf40 |
@@ -1,2 +1 @@
|
|||||||
.vscode
|
.vscode
|
||||||
.omo
|
|
||||||
@@ -9,10 +9,4 @@
|
|||||||
sapphira = import ./server.nix flakeContext; # sapphira
|
sapphira = import ./server.nix flakeContext; # sapphira
|
||||||
wsl = import ./wsl.nix flakeContext; # wsl
|
wsl = import ./wsl.nix flakeContext; # wsl
|
||||||
};
|
};
|
||||||
nixOnDroidConfigurations = {
|
|
||||||
epral = import ./mobile.nix flakeContext; # epral (Android via nix-on-droid)
|
|
||||||
# Alias so a plain `nix-on-droid switch` from a local clone
|
|
||||||
# (~/.config/nix-on-droid) picks up the device config without `#epral`.
|
|
||||||
default = import ./mobile.nix flakeContext;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
kernel = {
|
kernel = {
|
||||||
sysctl = {
|
sysctl = {
|
||||||
"fs.inotify.max_user_watches" = "204800";
|
"fs.inotify.max_user_watches" = "204800";
|
||||||
"net.ipv4.ip_forward" = 1;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kernelModules = [
|
kernelModules = [
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ let
|
|||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable;
|
kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable;
|
||||||
|
#kernelParams = [ "usbcore.autosuspend=-1" ];
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = lib.mkDefault true;
|
systemd-boot.enable = lib.mkDefault true;
|
||||||
efi.canTouchEfiVariables = lib.mkDefault true;
|
efi.canTouchEfiVariables = lib.mkDefault true;
|
||||||
@@ -78,6 +79,8 @@ let
|
|||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "${xlib.device.hostname}";
|
hostName = "${xlib.device.hostname}";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}@flakeContext:
|
|
||||||
let
|
|
||||||
# Host: epral (Android device via nix-on-droid, aarch64-linux)
|
|
||||||
# Integrates with the base defaultModule (imports.self.nixosModules.default),
|
|
||||||
# which is trimmed for the "termux" device type: NixOS-only modules
|
|
||||||
# (essentials, users.nix, home-manager, sops-nix, disko, grub2-themes)
|
|
||||||
# and nixpkgs.overlays are skipped so it evaluates under nix-on-droid's
|
|
||||||
# module system (class = "nixOnDroid").
|
|
||||||
nixOnDroidModule =
|
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
inputs.self.nixosModules.strict
|
|
||||||
];
|
|
||||||
|
|
||||||
xlib.device = {
|
|
||||||
type = "termux";
|
|
||||||
hostname = "epral";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Login shell. nix-on-droid writes /etc/passwd from user.shell on every
|
|
||||||
# activation, so `chsh` is useless here — set it in nix instead.
|
|
||||||
# (default is bashInteractive)
|
|
||||||
user.shell = "${pkgs.zsh}/bin/zsh";
|
|
||||||
|
|
||||||
# SSH user (matches `User oqyude` in the client's ~/.ssh/config).
|
|
||||||
# Default is "nix-on-droid"; home stays at the read-only
|
|
||||||
# /data/data/com.termux.nix/files/home either way.
|
|
||||||
user.userName = "oqyude";
|
|
||||||
|
|
||||||
# Minimal termux settings (nix-on-droid options only:
|
|
||||||
# environment.*, nix.*, time.*, user.*, system.*, android-integration.*)
|
|
||||||
|
|
||||||
# user.userName defaults to "nix-on-droid"; set it to override.
|
|
||||||
# user.home is read-only: /data/data/com.termux.nix/files/home
|
|
||||||
|
|
||||||
# Simply install just the packages
|
|
||||||
environment.packages = with pkgs; [
|
|
||||||
# User-facing stuff that you really really want to have
|
|
||||||
vim # or some other editor, e.g. nano or neovim
|
|
||||||
nano
|
|
||||||
|
|
||||||
# Some common stuff that people expect to have
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
findutils
|
|
||||||
git
|
|
||||||
gnugrep
|
|
||||||
gnupg
|
|
||||||
gnused
|
|
||||||
gnutar
|
|
||||||
gzip
|
|
||||||
hostname
|
|
||||||
man
|
|
||||||
ncurses
|
|
||||||
openssh
|
|
||||||
procps
|
|
||||||
psmisc # provides killall (attr `killall` was removed from nixpkgs)
|
|
||||||
treefmt
|
|
||||||
tzdata
|
|
||||||
unzip
|
|
||||||
util-linux # renamed from utillinux
|
|
||||||
zip
|
|
||||||
];
|
|
||||||
|
|
||||||
# Backup etc files instead of failing to activate generation if a file already exists in /etc
|
|
||||||
environment.etcBackupExtension = ".bak";
|
|
||||||
|
|
||||||
# Shared userspace home-manager config (same cozy shell as on NixOS hosts).
|
|
||||||
# nix-on-droid forces home.username / home.homeDirectory from user.*,
|
|
||||||
# so the strict module must not set them.
|
|
||||||
# xlib is injected via home-manager.extraSpecialArgs (the HM submodule
|
|
||||||
# does not inherit the nix-on-droid module args).
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
backupFileExtension = "hm-bak";
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit xlib;
|
|
||||||
};
|
|
||||||
config = { ... }: {
|
|
||||||
imports = [
|
|
||||||
../home/termux.nix
|
|
||||||
];
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Read the changelog before changing this value
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
|
|
||||||
# Set up nix for flakes
|
|
||||||
nix.extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Set your time zone
|
|
||||||
time.timeZone = "Europe/Moscow";
|
|
||||||
|
|
||||||
android-integration.termux-setup-storage.enable = true;
|
|
||||||
|
|
||||||
# Provides `am` (termux-am) — required by termux-api's broadcast backend.
|
|
||||||
android-integration.am.enable = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
inputs.nix-on-droid.lib.nixOnDroidConfiguration {
|
|
||||||
pkgs = import inputs.nixpkgs {
|
|
||||||
system = "aarch64-linux";
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
nixOnDroidModule
|
|
||||||
];
|
|
||||||
extraSpecialArgs = {
|
|
||||||
deviceType = "termux";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -83,7 +83,10 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
power-profiles-daemon.enable = lib.mkForce false;
|
||||||
earlyoom.enable = true;
|
earlyoom.enable = true;
|
||||||
|
auto-cpufreq.enable = false;
|
||||||
|
throttled.enable = true;
|
||||||
journald = {
|
journald = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
SystemMaxUse=512M
|
SystemMaxUse=512M
|
||||||
@@ -110,10 +113,6 @@ let
|
|||||||
hostName = "${xlib.device.hostname}";
|
hostName = "${xlib.device.hostname}";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
firewall.enable = false;
|
firewall.enable = false;
|
||||||
# nameservers = [
|
|
||||||
# "192.168.1.1"
|
|
||||||
# "127.0.0.1"
|
|
||||||
# ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system = {
|
system = {
|
||||||
|
|||||||
Generated
+27
-223
@@ -13,11 +13,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785892481,
|
"lastModified": 1781023725,
|
||||||
"narHash": "sha256-1JTy9/LyITSBP1a4WZ9tmOv2yDh9OTbA3YUJbQHiMYc=",
|
"narHash": "sha256-Gt+qFANcrDRjl3xzidLYrAUQCd3808iuAsLwZbYYAEU=",
|
||||||
"owner": "serokell",
|
"owner": "serokell",
|
||||||
"repo": "deploy-rs",
|
"repo": "deploy-rs",
|
||||||
"rev": "f6f2359a6cb7e3c51ea673bcb39933ac2622350d",
|
"rev": "2ce9051767ee4d1a3c43b52ba327431783bfd463",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -88,11 +88,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1786031233,
|
"lastModified": 1781189114,
|
||||||
"narHash": "sha256-TIDlLTLI1/pB7IqgjzcKQjpODQsZE2oII4XGG9B6KjI=",
|
"narHash": "sha256-5inaamLgUMWy+MOBE9ChF9QAF1o/74LFuHkI0W/9rqc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "7834e82588860aaf780cec1366524456a70898d7",
|
"rev": "486595d2cf49cfcd649b58a284fa11ac0e34da22",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -101,70 +101,16 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-formatter-pack": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nix-on-droid",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nmd": [
|
|
||||||
"nix-on-droid",
|
|
||||||
"nmd"
|
|
||||||
],
|
|
||||||
"nmt": "nmt"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705252799,
|
|
||||||
"narHash": "sha256-HgSTREh7VoXjGgNDwKQUYcYo13rPkltW7IitHrTPA5c=",
|
|
||||||
"owner": "Gerschtli",
|
|
||||||
"repo": "nix-formatter-pack",
|
|
||||||
"rev": "2de39dedd79aab14c01b9e2934842051a160ffa5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Gerschtli",
|
|
||||||
"repo": "nix-formatter-pack",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-on-droid": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nix-formatter-pack": "nix-formatter-pack",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nixpkgs-docs": "nixpkgs-docs",
|
|
||||||
"nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap",
|
|
||||||
"nmd": "nmd"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1772387862,
|
|
||||||
"narHash": "sha256-o7q9flWMCsFW2mkz8TQhvPUcwFczO7VX9I6U2u2vN4o=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-on-droid",
|
|
||||||
"rev": "67b105336cb06b764366bfe241afa2352de6a926",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "testing",
|
|
||||||
"repo": "nix-on-droid",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785232496,
|
"lastModified": 1781168557,
|
||||||
"narHash": "sha256-65EQYIRRpTdpH8lUiB6Mvo5uBkG60aBIzAJuALfx+O0=",
|
"narHash": "sha256-LOnLQ2tpYF9gqIDDr3+j3DbpJJr/QCH6zPRT2GzEUOE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "2e790b0a6be8ec2b76174ac0931b8ff11919ec98",
|
"rev": "6358ff76821101c178e3ab4919a62799bfe3652e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -184,11 +130,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784642409,
|
"lastModified": 1781182279,
|
||||||
"narHash": "sha256-hcbDqFuySAJawljt5r0sKBCJKYnbtGD0T/ZIozH1Dq0=",
|
"narHash": "sha256-V5EQQbDnmdiXGQXrEF1PEL7QYsFqfH8N1E89Z5ONwFk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "eaeb18da90024448a60eb1ec7132eafa4003404e",
|
"rev": "5675822ba756e6e56f8f6a5a76e90e0da2ece94d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -243,45 +189,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-docs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705957679,
|
|
||||||
"narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "9a333eaa80901efe01df07eade2c16d183761fa3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "release-23.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-for-bootstrap": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1772047000,
|
|
||||||
"narHash": "sha256-7DaQVv4R97cii/Qdfy4tmDZMB2xxtyIvNGSwXBBhSmo=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1267bb4920d0fc06ea916734c11b0bf004bbe17e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1267bb4920d0fc06ea916734c11b0bf004bbe17e",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1786198689,
|
"lastModified": 1781298072,
|
||||||
"narHash": "sha256-XkvYmpRd4cmcrzKS8QplEHPZkDDeKwpalJQwosCd3+Q=",
|
"narHash": "sha256-p7sszdPeM3Gm7LA+NrWlxn5Rp6Qp+TGbt2qC/XBCxgI=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "94ec6671dbe7d4879c2c8103e67425e85bf066d7",
|
"rev": "633f0c001a27731ee16cc504e831a4a9ccf071d6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -291,29 +205,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-previous": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1767892417,
|
|
||||||
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782847189,
|
"lastModified": 1780952837,
|
||||||
"narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=",
|
"narHash": "sha256-Fwd1+spDtQ0hDyBwme6ufG3n4mY0UrjjFdYHv+G/Hds=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b6018f87da91d19d0ab4cf979885689b469cdd41",
|
"rev": "e820eb4a444b46a19b2e03e8dfd2359439ff30fe",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -323,29 +221,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1785975029,
|
|
||||||
"narHash": "sha256-X44cn5rzytELc3NNoQsh0aLkjWA/QzPfc6HPQmsG3sU=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "70ce234312134a463ba7728e94da2486a1d237ac",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785967620,
|
"lastModified": 1781074563,
|
||||||
"narHash": "sha256-IItrdb7Puk05RqOBWZYFC5X6Wl1sJmCfh5MWVHw5iMM=",
|
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b7c2ada94fe99c15b0dbcf4d11fd7850b957a436",
|
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -355,44 +237,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nmd": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nix-on-droid",
|
|
||||||
"nixpkgs-docs"
|
|
||||||
],
|
|
||||||
"scss-reset": "scss-reset"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705050560,
|
|
||||||
"narHash": "sha256-x3zzcdvhJpodsmdjqB4t5mkVW22V3wqHLOun0KRBzUI=",
|
|
||||||
"owner": "~rycee",
|
|
||||||
"repo": "nmd",
|
|
||||||
"rev": "66d9334933119c36f91a78d565c152a4fdc8d3d3",
|
|
||||||
"type": "sourcehut"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "~rycee",
|
|
||||||
"repo": "nmd",
|
|
||||||
"type": "sourcehut"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nmt": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1648075362,
|
|
||||||
"narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=",
|
|
||||||
"owner": "rycee",
|
|
||||||
"repo": "nmt",
|
|
||||||
"rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae",
|
|
||||||
"type": "gitlab"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "rycee",
|
|
||||||
"repo": "nmt",
|
|
||||||
"type": "gitlab"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"plasma-manager": {
|
"plasma-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": [
|
"home-manager": [
|
||||||
@@ -403,11 +247,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785762349,
|
"lastModified": 1775856943,
|
||||||
"narHash": "sha256-jZhZkzAwc7f3exzcTDJWP2WCAchCv0iNC3UF/QsahdQ=",
|
"narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "plasma-manager",
|
"repo": "plasma-manager",
|
||||||
"rev": "a19a2a029fa180911bd89c554dca1616e10f4c1d",
|
"rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -416,26 +260,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"proxy-suite": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1783174389,
|
|
||||||
"narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"deploy-rs": "deploy-rs",
|
"deploy-rs": "deploy-rs",
|
||||||
@@ -443,40 +267,20 @@
|
|||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"grub2-themes": "grub2-themes",
|
"grub2-themes": "grub2-themes",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nix-on-droid": "nix-on-droid",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-beets": "nixpkgs-beets",
|
"nixpkgs-beets": "nixpkgs-beets",
|
||||||
"nixpkgs-calibre": "nixpkgs-calibre",
|
"nixpkgs-calibre": "nixpkgs-calibre",
|
||||||
"nixpkgs-master": "nixpkgs-master",
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"nixpkgs-previous": "nixpkgs-previous",
|
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager",
|
||||||
"proxy-suite": "proxy-suite",
|
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"utils": "utils",
|
"utils": "utils",
|
||||||
"zapret": "zapret",
|
"zapret": "zapret",
|
||||||
"zeroq-credentials": "zeroq-credentials"
|
"zeroq-credentials": "zeroq-credentials"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scss-reset": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1631450058,
|
|
||||||
"narHash": "sha256-muDlZJPtXDIGevSEWkicPP0HQ6VtucbkMNygpGlBEUM=",
|
|
||||||
"owner": "andreymatin",
|
|
||||||
"repo": "scss-reset",
|
|
||||||
"rev": "0cf50e27a4e95e9bb5b1715eedf9c54dee1a5a91",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "andreymatin",
|
|
||||||
"repo": "scss-reset",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -484,11 +288,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783174389,
|
"lastModified": 1780547341,
|
||||||
"narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=",
|
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9",
|
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -7,10 +7,8 @@
|
|||||||
|
|
||||||
# nixpkgs
|
# nixpkgs
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
||||||
# nixpkgs-last-unstable.url = "github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f";
|
# nixpkgs-last-unstable.url = "github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f";
|
||||||
nixpkgs-calibre.url = "github:NixOS/nixpkgs/566acc07c54dc807f91625bb286cb9b321b5f42a";
|
nixpkgs-calibre.url = "github:NixOS/nixpkgs/566acc07c54dc807f91625bb286cb9b321b5f42a";
|
||||||
nixpkgs-previous.url = "github:NixOS/nixpkgs/3497aa5c9457a9d88d71fa93a4a8368816fbeeba";
|
|
||||||
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||||
nixpkgs-beets.url = "github:NixOS/nixpkgs/832efc09b4caf6b4569fbf9dc01bec3082a00611"; # 2343bbb58f99267223bc2aac4fc9ea301a155a16
|
nixpkgs-beets.url = "github:NixOS/nixpkgs/832efc09b4caf6b4569fbf9dc01bec3082a00611"; # 2343bbb58f99267223bc2aac4fc9ea301a155a16
|
||||||
@@ -24,13 +22,6 @@
|
|||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nix-on-droid = {
|
|
||||||
url = "github:nix-community/nix-on-droid/testing"; # testing branch, used on the device
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
|
||||||
home-manager.follows = "home-manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
deploy-rs = {
|
deploy-rs = {
|
||||||
url = "github:serokell/deploy-rs";
|
url = "github:serokell/deploy-rs";
|
||||||
inputs = {
|
inputs = {
|
||||||
@@ -66,10 +57,6 @@
|
|||||||
home-manager.follows = "home-manager";
|
home-manager.follows = "home-manager";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
proxy-suite = {
|
|
||||||
url = "github:Mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|||||||
@@ -1,9 +1,21 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
streamripPath = "${xlib.dirs.wsl-storage}/streamrip";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
# xdg = {
|
||||||
|
# configFile = {
|
||||||
|
# "streamrip" = {
|
||||||
|
# source = config.lib.file.mkOutOfStoreSymlink streamripPath;
|
||||||
|
# target = "streamrip";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.yt-dlp-light
|
pkgs.yt-dlp-light
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -8,6 +8,25 @@
|
|||||||
programs = {
|
programs = {
|
||||||
mangohud.enable = true;
|
mangohud.enable = true;
|
||||||
keepassxc.enable = true;
|
keepassxc.enable = true;
|
||||||
|
zed-editor = {
|
||||||
|
enable = false;
|
||||||
|
extensions = [
|
||||||
|
"nix"
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"telemetry" = {
|
||||||
|
"diagnostics" = false;
|
||||||
|
"metrics" = false;
|
||||||
|
};
|
||||||
|
"ui_font_size" = 20;
|
||||||
|
"buffer_font_size" = 26;
|
||||||
|
"theme" = {
|
||||||
|
"mode" = "system";
|
||||||
|
"light" = "Ayu Light";
|
||||||
|
"dark" = "Ayu Dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
@@ -15,6 +34,12 @@
|
|||||||
};
|
};
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
# Surfing
|
||||||
|
# (brave.override {
|
||||||
|
# commandLineArgs = [
|
||||||
|
# "--password-store=basic" # on purpose to make it break "--password-store=gnome-libsecret"
|
||||||
|
# ];
|
||||||
|
# })
|
||||||
brave
|
brave
|
||||||
v2rayn
|
v2rayn
|
||||||
|
|
||||||
@@ -23,6 +48,8 @@
|
|||||||
# amdgpu_top
|
# amdgpu_top
|
||||||
vscodium
|
vscodium
|
||||||
ayugram-desktop
|
ayugram-desktop
|
||||||
|
# vesktop
|
||||||
|
# discord
|
||||||
gramps
|
gramps
|
||||||
kdePackages.filelight
|
kdePackages.filelight
|
||||||
localsend
|
localsend
|
||||||
|
|||||||
-283
@@ -1,283 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
# Shared "strict" home-manager module.
|
|
||||||
# Works in BOTH contexts:
|
|
||||||
# - NixOS hosts (via home-manager.sharedModules or homeConfigurations)
|
|
||||||
# - nix-on-droid (via home-manager.config in droid/epral.nix)
|
|
||||||
# Only home-manager options are used here — no systemd.*, no services.*,
|
|
||||||
# no users.*, no environment.systemPackages. All paths are parameterized
|
|
||||||
# through config.home.homeDirectory so /home/oqyude (NixOS) and
|
|
||||||
# /data/data/com.termux.nix/files/home (termux) both work.
|
|
||||||
#
|
|
||||||
# NOTE: intentionally duplicates parts of modules/essentials/{shell,packages}.nix
|
|
||||||
# (which stay NixOS-only for now). When this module is wired into NixOS hosts
|
|
||||||
# via sharedModules, deduplicate those files.
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
# Lazy (alias lc)
|
|
||||||
lazycli
|
|
||||||
|
|
||||||
# IDE
|
|
||||||
fresh-editor # EDITOR
|
|
||||||
|
|
||||||
# Base utils
|
|
||||||
curl
|
|
||||||
wget
|
|
||||||
fd
|
|
||||||
tree
|
|
||||||
dust
|
|
||||||
gdu
|
|
||||||
mc
|
|
||||||
rsync
|
|
||||||
jq
|
|
||||||
unzip
|
|
||||||
zip
|
|
||||||
zstd
|
|
||||||
|
|
||||||
# Net diagnostic
|
|
||||||
mtr
|
|
||||||
dnsutils
|
|
||||||
|
|
||||||
# Monitoring
|
|
||||||
htop
|
|
||||||
];
|
|
||||||
sessionVariables = {
|
|
||||||
TUCKR_HOME = "$HOME/Storage/dotfiles";
|
|
||||||
EDITOR = "fresh";
|
|
||||||
};
|
|
||||||
file = {
|
|
||||||
".nanorc".text = ''
|
|
||||||
set nowrap
|
|
||||||
set tabstospaces
|
|
||||||
set tabsize 2
|
|
||||||
'';
|
|
||||||
# Authorized keys for sshd (see modules/termux/default.nix).
|
|
||||||
# Declarative for now — the Store/.ssh symlink scheme is postponed.
|
|
||||||
".ssh/authorized_keys".text = ''
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKduJia+unaQQdN6X5syaHvnpIutO+yZwvfiCP4qKQ/P
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
# ---- Shell: zsh ----
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
history.size = 10000;
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
theme = "robbyrussell";
|
|
||||||
};
|
|
||||||
loginExtra = "clear && fastfetch && cd ~/.config/nix-on-droid";
|
|
||||||
# .zshenv — sourced by zsh in ALL sessions incl. non-login ssh commands.
|
|
||||||
# runit from nixpkgs defaults to /var/service as SVDIR, but our tree
|
|
||||||
# lives at ~/service (symlinked as /etc/service). Export it so that
|
|
||||||
# `sv status sshd` works without qualifying the path.
|
|
||||||
envExtra = "export SVDIR=/etc/service";
|
|
||||||
initContent = ''
|
|
||||||
beet-p() {
|
|
||||||
local base="${config.home.homeDirectory}/.config/beets/My"
|
|
||||||
local rel
|
|
||||||
rel=$(realpath --relative-to="$base" "$PWD")
|
|
||||||
beet mod "path:$rel" playlist="$*"
|
|
||||||
}
|
|
||||||
beet-ims() {
|
|
||||||
beet im ./ -S $*
|
|
||||||
}
|
|
||||||
beet-path() {
|
|
||||||
realpath --relative-to="${config.home.homeDirectory}/.config/beets/My" "$1"
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
shellAliases = {
|
|
||||||
# shell
|
|
||||||
ff = "clear && fastfetch";
|
|
||||||
l = "ls -l";
|
|
||||||
lg = "lazygit";
|
|
||||||
lc = "lazycli";
|
|
||||||
gp = "git pull";
|
|
||||||
ns = "nix-on-droid switch --flake ~/.config/nix-on-droid#${xlib.device.hostname}";
|
|
||||||
gp-ns = "gp && ns";
|
|
||||||
gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'";
|
|
||||||
y = "yazi";
|
|
||||||
nix-shellp = "nix-shell --run $SHELL -p";
|
|
||||||
beet-path-library = "realpath --relative-to='${config.home.homeDirectory}/.config/beets/My' .";
|
|
||||||
z-proxy = "export ALL_PROXY=socks5://localhost:10808";
|
|
||||||
zh-proxy = "export HTTPS_PROXY=http://localhost:10808 && export HTTP_PROXY=http://localhost:10808";
|
|
||||||
nix-dir = "cd ~/.config/nix-on-droid";
|
|
||||||
q-ssh = "sv-start"; # start all supervised services (sshd, ...); manage with `sv status sshd` etc
|
|
||||||
|
|
||||||
# beets
|
|
||||||
beet-ima = "beet im ./ -A";
|
|
||||||
|
|
||||||
# ssh (hosts live in programs.ssh.settings below)
|
|
||||||
# NOTE: lamet / pubray-1 have no Host entry yet — kept as aliases.
|
|
||||||
z-l = "ssh lamet";
|
|
||||||
z-lt = "ssh lamet-tailscale";
|
|
||||||
z-p-1 = "ssh pubray-1";
|
|
||||||
z-map-local-proxy = "ssh -R 10808:localhost:10808";
|
|
||||||
|
|
||||||
# Extras
|
|
||||||
plasma-manager = "nix run github:nix-community/plasma-manager";
|
|
||||||
pip2nix = "nix run github:nix-community/pip2nix --"; # https://github.com/nix-community/pip2nix
|
|
||||||
pip2nix-g = "nix run github:nix-community/pip2nix -- generate -r";
|
|
||||||
json2nix = "nix run github:sempruijs/json2nix";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# ---- Editor ----
|
|
||||||
# NOTE: programs.nano is a NixOS-only module (does not exist in
|
|
||||||
# home-manager); write ~/.nanorc directly instead.
|
|
||||||
# ---- TUI tools ----
|
|
||||||
bat.enable = true;
|
|
||||||
lazygit.enable = true;
|
|
||||||
fzf.enable = true;
|
|
||||||
|
|
||||||
btop.enable = true;
|
|
||||||
broot.enable = true;
|
|
||||||
bottom.enable = true;
|
|
||||||
fastfetch.enable = true;
|
|
||||||
|
|
||||||
yazi = {
|
|
||||||
enable = true;
|
|
||||||
# explicit: shared module must behave identically on NixOS (26.05, "y")
|
|
||||||
# and nix-on-droid (24.05, legacy "yy")
|
|
||||||
shellWrapperName = "y";
|
|
||||||
plugins = {
|
|
||||||
inherit (pkgs.yaziPlugins)
|
|
||||||
gitui
|
|
||||||
git
|
|
||||||
sudo
|
|
||||||
ouch
|
|
||||||
rsync
|
|
||||||
diff
|
|
||||||
mount
|
|
||||||
chmod
|
|
||||||
dupes
|
|
||||||
lazygit
|
|
||||||
toggle-pane
|
|
||||||
rich-preview
|
|
||||||
smart-filter
|
|
||||||
full-border
|
|
||||||
recycle-bin
|
|
||||||
;
|
|
||||||
};
|
|
||||||
flavors = {
|
|
||||||
nord = pkgs.yaziPlugins.nord;
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
flavor = {
|
|
||||||
light = "nord";
|
|
||||||
dark = "nord";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keymap = {
|
|
||||||
mgr.prepend_keymap = [
|
|
||||||
{
|
|
||||||
on = [
|
|
||||||
"M"
|
|
||||||
];
|
|
||||||
run = "plugin mount";
|
|
||||||
desc = "Mount manager";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = [
|
|
||||||
"g"
|
|
||||||
"i"
|
|
||||||
];
|
|
||||||
run = "plugin lazygit";
|
|
||||||
desc = "run lazygit";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
run = "plugin ouch --args=zip";
|
|
||||||
on = [
|
|
||||||
"g"
|
|
||||||
"C"
|
|
||||||
];
|
|
||||||
desc = "Compress with ouch";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
mgr.ratio = [
|
|
||||||
1
|
|
||||||
1
|
|
||||||
4
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# ---- VCS ----
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
user = {
|
|
||||||
name = "oqyude";
|
|
||||||
email = "oqyude@gmail.com";
|
|
||||||
};
|
|
||||||
pull = {
|
|
||||||
rebase = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# ---- SSH ----
|
|
||||||
# Declarative ~/.ssh/config, same as the one previously copied by hand.
|
|
||||||
# matchBlocks is deprecated in current home-manager; use `settings`
|
|
||||||
# (bare attr names become `Host` headers, keys are upstream directives).
|
|
||||||
ssh = {
|
|
||||||
enable = true;
|
|
||||||
# Reproduce the old enableDefaultConfig values explicitly.
|
|
||||||
enableDefaultConfig = false;
|
|
||||||
settings = {
|
|
||||||
"*" = {
|
|
||||||
ForwardAgent = false;
|
|
||||||
AddKeysToAgent = "no";
|
|
||||||
Compression = false;
|
|
||||||
ServerAliveInterval = 0;
|
|
||||||
ServerAliveCountMax = 3;
|
|
||||||
HashKnownHosts = false;
|
|
||||||
UserKnownHostsFile = "~/.ssh/known_hosts";
|
|
||||||
ControlMaster = "no";
|
|
||||||
ControlPath = "~/.ssh/master-%r@%n:%p";
|
|
||||||
ControlPersist = "no";
|
|
||||||
};
|
|
||||||
sapphira = {
|
|
||||||
HostName = "192.168.1.20";
|
|
||||||
User = "oqyude";
|
|
||||||
};
|
|
||||||
sapphira-tailscale = {
|
|
||||||
HostName = "100.64.0.0";
|
|
||||||
User = "oqyude";
|
|
||||||
};
|
|
||||||
otreca-old = {
|
|
||||||
HostName = "217.60.3.12";
|
|
||||||
User = "oqyude";
|
|
||||||
};
|
|
||||||
otreca = {
|
|
||||||
HostName = "109.248.161.5";
|
|
||||||
User = "oqyude";
|
|
||||||
};
|
|
||||||
otreca-tailscale = {
|
|
||||||
HostName = "100.64.1.0";
|
|
||||||
User = "oqyude";
|
|
||||||
};
|
|
||||||
rydiwo = {
|
|
||||||
HostName = "192.168.1.102";
|
|
||||||
User = "oqyude";
|
|
||||||
};
|
|
||||||
epral = {
|
|
||||||
HostName = "192.168.1.101";
|
|
||||||
User = "oqyude";
|
|
||||||
Port = 8022;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -5,9 +5,6 @@
|
|||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
panel = "${xlib.dirs.services-nodes-folder}/${xlib.device.hostname}/3x-ui";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
podman = {
|
podman = {
|
||||||
@@ -28,8 +25,8 @@ in
|
|||||||
"TZ" = "Europe/Moscow";
|
"TZ" = "Europe/Moscow";
|
||||||
};
|
};
|
||||||
volumes = [
|
volumes = [
|
||||||
"${panel}/cert/:/root/cert:rw"
|
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/cert/:/root/cert:rw"
|
||||||
"${panel}/db/:/etc/x-ui:rw"
|
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/db/:/etc/x-ui:rw"
|
||||||
];
|
];
|
||||||
log-driver = "journald";
|
log-driver = "journald";
|
||||||
extraOptions = [
|
extraOptions = [
|
||||||
@@ -100,13 +97,12 @@ in
|
|||||||
};
|
};
|
||||||
# Folders
|
# Folders
|
||||||
tmpfiles.rules = [
|
tmpfiles.rules = [
|
||||||
"d ${xlib.dirs.services-mnt-folder} 0755 root root -"
|
"d /mnt 0755 root root -"
|
||||||
"d ${xlib.dirs.services-nodes-folder} 0755 root root -"
|
"d /mnt/containers 0755 root root -"
|
||||||
"d ${xlib.dirs.services-nodes-folder}/${xlib.device.hostname} 0755 root root -"
|
"d /mnt/services/containers 0755 root root -"
|
||||||
"d ${panel} 0755 root root -"
|
"d /mnt/services/containers/3x-ui 0755 root root -"
|
||||||
"d ${panel}/db 0755 root root -"
|
"d /mnt/services/containers/3x-ui/cert 0755 root root -"
|
||||||
"d ${panel}/cert 0755 root root -"
|
"d /mnt/services/containers/3x-ui/db 0755 root root -"
|
||||||
"Z ${panel} 0755 root root -"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+2
-28
@@ -9,14 +9,11 @@ let
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
# NixOS-only modules. termux runs nix-on-droid (its own module system,
|
|
||||||
# class = "nixOnDroid"): options like services.*, users.*, sops.*, disko.*
|
|
||||||
# and nixpkgs.overlays (flake assertion) do not exist there.
|
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
./essentials
|
./essentials
|
||||||
./options.nix
|
|
||||||
./users.nix
|
./users.nix
|
||||||
(./. + "/${deviceType}")
|
./options.nix
|
||||||
|
(./. + "/${deviceType}") # specific modules
|
||||||
|
|
||||||
home-manager.nixosModules.home-manager # home-manager module
|
home-manager.nixosModules.home-manager # home-manager module
|
||||||
# nix-index-database.nixosModules.nix-index # nix-index module
|
# nix-index-database.nixosModules.nix-index # nix-index module
|
||||||
@@ -50,28 +47,6 @@ let
|
|||||||
sops-nix.nixosModules.sops # sops module
|
sops-nix.nixosModules.sops # sops module
|
||||||
];
|
];
|
||||||
|
|
||||||
_module.args = {
|
|
||||||
inputs = inputs;
|
|
||||||
xlib = config.xlib;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
strictModule =
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
deviceType,
|
|
||||||
lib,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = with inputs; [
|
|
||||||
# ./essentials
|
|
||||||
# ./users.nix
|
|
||||||
./options.nix
|
|
||||||
(./. + "/${deviceType}")
|
|
||||||
# sops-nix.nixosModules.sops
|
|
||||||
];
|
|
||||||
|
|
||||||
_module.args = {
|
_module.args = {
|
||||||
inputs = inputs;
|
inputs = inputs;
|
||||||
xlib = config.xlib;
|
xlib = config.xlib;
|
||||||
@@ -82,6 +57,5 @@ in
|
|||||||
nixosModules = {
|
nixosModules = {
|
||||||
default = defaultModule;
|
default = defaultModule;
|
||||||
public = publicModule;
|
public = publicModule;
|
||||||
strict = strictModule;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,11 @@
|
|||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
master = import inputs.nixpkgs-master {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
root-ca: ENC[AES256_GCM,data:5WxHCyp8sWl+XMpmMFQGfs+IhZx0r61JVFp7TJsn4pnCwV2KY/eyh6pEF+GF+P7eXALPEWGzdFYTzMJd6KJ+D+Ew0bLomIZ+KVhlxhgVzKG0xThrLpxSuyrrRFFfXzMz7C28v1HlBht6xtwKouPnxQcXDYTLyV52w7FrhWTXPuJ+TvaYDlHJcs3wHY5U+UiCoQZMcM8ddNkgbMqCu+/QC4G213EoJvjhQz+woXzIuqN8SYsOVmQ5su9Xy1sDMc8vIF+vl1Ax1E+T7ZqnE4E/7Y7HNzBQFpBGZjTb3JLUoyO4ALo0S36Yls12MWj/AZBmoBG8yL4wwA48FBHzGyH1aYtbWA/twJLDYzmu9saORW/TKIMrzeruxdufWU9sRs1f2BxpefAa2kZ8QTxhx2+3kUiOC1lipIjdMu9RSeq7q4HmKRTmuuXW087ere+IMhogh11RoshttB1W0/BU/dz6sYwAnCioSoOCd3n+WBGfuMNyeDjkpNJ4veg2HuU/K84rLFjNsxWnRfQML0BjUDHzFypA4dNIDo/FI0Z1cOrPojiqjwKt5Fb0XljTwfDQvkRtcZOQLVln7HfJlsU67YUCBMgJUJUTC3XKo82smZbz8JV1z8I9hVfnSfoEMiqNvDu3wKPGDpjWq0hAKD2R82keKe3Ji33Z2O4HK0e0Q7vSPP/Z5gIAay2S2aS2YLpqlvgzipqiLo2owzM2Mr4NrKRL9Vg36na7bLBPEoz+l9EK8EEiZaq+c8H2+dpmXpdmnUMQDF5yBxs4EU2M6Ga+X+2SYd1q9aZBT0yxykFkQrMUcA==,iv:Ee4tvSVLdk0Clh8vohbajEaKXJlQJjqOIu2lxfWueAI=,tag:oy99+HrMV1uGCdcAy7epug==,type:str]
|
|
||||||
intermediate-ca: ENC[AES256_GCM,data:NUMdfNy+Opi/UypY1N2N8pZZK99m3VouzLxA7EKwC2sd2Q24uEflRfucjWupAASp7duncfSjmC1jQxCQpSzwV7Qbq3+PkKD+MnrceVzz40G97C5jEKEJG6ln5RdwGX5FeIF9tZpb/gBvkWcyrPQ6wDEpzd9rCDGJgvPzg/PaFuluO6UXKpppyC9Zzl2x/dms+2pV2aQcR0rEPEuXKK7NKxc+Zk3HFgcfhe26mbayZXZxdxs44vwPqPKr6xmWRiERBlCoMEfjLSWAiVjau/RXsW+/5Mtu80rbiRUHUesdZYIX4hqfoj914Mp1gsQ+bihnfBQ3xYyxtskBfHO8+oZNvOcDhx7zl8Vo+giD4435EYEFWNxjzRtbXoR0CHu50obmDDjpPcUpkRNzjpJK3VEJM45SEA2EZyupmf+Y8o4uHmOg/xTciVHLFqVOnchb6pm9WPbkyMT9K/+O9XvN3yVJzab6se6DdnEB/8PeA4s51M0ONk6PrFXSGdfwos84BmD8uaAqGhp64sXpTuunhfcmo02b1pZ2OqlGnjam5ZJOuyJ6vPeVYB/o60Dl/w5QtdeWc93EgsxNRAOyxOsrtSKdQPuZgp7+/I4S6kYaRJS8S7mvqSNdtCdrov1vYSEoHDXtu2XaDaJrStHJsP1FmTAAmXhzeyfGosB9JX7sdOGRkskesREqkzJ5V7+O0k3cpHFJvIZIFyj12rwpPSnrB66BELAQVxkqeol2dfPWn+G1aG9dmtq3T7+C3M5wW7VE41mmVgUrx9o4/8Z3wkHkBxZXiUkN4LfFHcZXmvuHFqRYYBOUpTzxRCkW6dl/gvP0qedMR3/zplhe51Gux7IFW7/s0wvTWHqWrpxirpW+c4l/IGf53Ox7kt3D,iv:atbEM7iZALuT1UipYmxlH0k0FOPJ7VKrfPrmCs3X9Mo=,tag:w6l49PKgjlzTZa1mIVpI4A==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSamN6dkxYalBZc25EYThR
|
|
||||||
NnV0YW5oQWgrQWNhSE9Gemt3VGljaE0rTGcwCnYyV2JpdW1GbEZTRElDNFk2Y213
|
|
||||||
bk1FY1grM2tuc0UzV21ROG5BanpjbFEKLS0tIG83dnpNQzEvYVZ1ODArRjlYSFRY
|
|
||||||
WHp0NktOQVF0UW1KajhYM3U5WkZCNmsKrN8T73fg7JoT+7WheveOC3Jlxa79EFjs
|
|
||||||
ePfVY07TKEHsycFhNyjcsFCWMF2ddE7q28A+Sjg+C3SA+/cHO8U9lw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
lastmodified: "2026-06-23T20:42:27Z"
|
|
||||||
mac: ENC[AES256_GCM,data:XftvodNnD0YXmd1GsNt2w820CWYY3v2pXOtlFYE0k25kuKNeKqqGDgN4geTA/xh6eYMrDut6mryNHOOoWXTuU9r/NvpXotwT5/vW2s4Nq+Cd9XySceJn/Ja6aN8R5ICbq3BhmpmC3SCVXDTce4+MwIHeBmp+Lrff+mXvZ5cT1A4=,iv:FqI/KdPJFHOMHykeZj0oEcuIZsCBWF1WCK4saz9Es7g=,tag:IZ1xHkB4eqkp04L2iAbkOw==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.13.1
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
settings = {
|
settings = {
|
||||||
require-sigs = false;
|
require-sigs = false;
|
||||||
substituters = [
|
substituters = [
|
||||||
"https://nix-cache.zeroq.su"
|
"http://100.64.0.0:5000"
|
||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://mirror.yandex.ru/nixos"
|
"https://mirror.yandex.ru/nixos"
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
# "https://nixos.snix.store" # https://nixos.snix.store/
|
# "https://nixos.snix.store" # https://nixos.snix.store/
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"nix-cache.zeroq.su:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s="
|
"cache.local:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
];
|
];
|
||||||
stalled-download-timeout = 8;
|
stalled-download-timeout = 8;
|
||||||
@@ -64,34 +64,6 @@
|
|||||||
});
|
});
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
pki.certificates = [
|
|
||||||
''
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIBlDCCATmgAwIBAgIQUR+DM/LKIbokKxYPGZbCCjAKBggqhkjOPQQDAjAoMQ4w
|
|
||||||
DAYDVQQKEwVaZXJvUTEWMBQGA1UEAxMNWmVyb1EgUm9vdCBDQTAeFw0yNjA2MTMy
|
|
||||||
MjU2MDZaFw0zNjA2MTAyMjU2MDZaMCgxDjAMBgNVBAoTBVplcm9RMRYwFAYDVQQD
|
|
||||||
Ew1aZXJvUSBSb290IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgbhGtnlm
|
|
||||||
qd2Uv1B1VBSeg6NlXFMj4BG/k5gVu9bVFBK4cw9HVx21aHw9HhFW94P2KaySR6bu
|
|
||||||
K8tLDtzvs0xkyqNFMEMwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C
|
|
||||||
AQEwHQYDVR0OBBYEFH07/1blaqp0MVuSZIUHS9W3SjIrMAoGCCqGSM49BAMCA0kA
|
|
||||||
MEYCIQD1coTa7hqU1PAdnamAIgq1ApadDWpWfNaXPGiLCrkxTwIhAJhj/YSzqTJR
|
|
||||||
HvurdJ9m2glxV3rQHIUiVqKbQRcibObd
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIBvjCCAWOgAwIBAgIRAMiJigRk8xbvHhCWN6a7D68wCgYIKoZIzj0EAwIwKDEO
|
|
||||||
MAwGA1UEChMFWmVyb1ExFjAUBgNVBAMTDVplcm9RIFJvb3QgQ0EwHhcNMjYwNjEz
|
|
||||||
MjI1NjA3WhcNMzYwNjEwMjI1NjA3WjAwMQ4wDAYDVQQKEwVaZXJvUTEeMBwGA1UE
|
|
||||||
AxMVWmVyb1EgSW50ZXJtZWRpYXRlIENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
|
|
||||||
QgAE2gUlKZ/z9kt5RrdYZHnGE1TVVegn+aDmGpZk5uvF04O9k/sfjD6QE7VtjwNH
|
|
||||||
ervZKu3iBXGRg92ba0k369VJpKNmMGQwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB
|
|
||||||
/wQIMAYBAf8CAQAwHQYDVR0OBBYEFCtYg4LEAHPIMrDPO7lrxKuFvw4PMB8GA1Ud
|
|
||||||
IwQYMBaAFH07/1blaqp0MVuSZIUHS9W3SjIrMAoGCCqGSM49BAMCA0kAMEYCIQD2
|
|
||||||
nNNHqs9/mIstOxetObgg8eqbrPWHXEVQ9CDucNFmQAIhANXAz2z1Rc7hxc6er23W
|
|
||||||
I8TU6UQc8dledPvalDJLyGym
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
''
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
systemd.network.wait-online.enable = false;
|
systemd.network.wait-online.enable = false;
|
||||||
|
|
||||||
@@ -103,23 +75,4 @@
|
|||||||
"ru_RU.UTF-8/UTF-8"
|
"ru_RU.UTF-8/UTF-8"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# sops.secrets = {
|
|
||||||
# intermediate-ca = {
|
|
||||||
# format = "yaml";
|
|
||||||
# key = "intermediate-ca";
|
|
||||||
# sopsFile = ./secrets/settings.yaml;
|
|
||||||
# # owner = "nobody";
|
|
||||||
# # group = "nogroup";
|
|
||||||
# mode = "0700";
|
|
||||||
# };
|
|
||||||
# root-ca = {
|
|
||||||
# format = "yaml";
|
|
||||||
# key = "root-ca";
|
|
||||||
# sopsFile = ./secrets/settings.yaml;
|
|
||||||
# # owner = "nobody";
|
|
||||||
# # group = "nogroup";
|
|
||||||
# mode = "0700";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,18 +19,15 @@
|
|||||||
theme = "robbyrussell";
|
theme = "robbyrussell";
|
||||||
};
|
};
|
||||||
shellInit = ''
|
shellInit = ''
|
||||||
|
beet-n() {
|
||||||
|
echo "$*" | aichat -cer beets
|
||||||
|
}
|
||||||
beet-p() {
|
beet-p() {
|
||||||
local base="/home/oqyude/.config/beets/My"
|
beet mod path:. playlist="$*"
|
||||||
local rel
|
|
||||||
rel=$(realpath --relative-to="$base" "$PWD")
|
|
||||||
beet mod "path:$rel" playlist="$*"
|
|
||||||
}
|
}
|
||||||
beet-ims() {
|
beet-ims() {
|
||||||
beet im ./ -S $*
|
beet im ./ -S $*
|
||||||
}
|
}
|
||||||
beet-path() {
|
|
||||||
realpath --relative-to="/home/oqyude/.config/beets/My" "$1"
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# shell
|
# shell
|
||||||
@@ -45,9 +42,7 @@
|
|||||||
gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'";
|
gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'";
|
||||||
y = "yazi";
|
y = "yazi";
|
||||||
nix-shellp = "nix-shell --run $SHELL -p";
|
nix-shellp = "nix-shell --run $SHELL -p";
|
||||||
beet-path-library = "realpath --relative-to='/home/oqyude/.config/beets/My' .";
|
|
||||||
z-proxy = "export ALL_PROXY=socks5://localhost:10808";
|
z-proxy = "export ALL_PROXY=socks5://localhost:10808";
|
||||||
zh-proxy = "export HTTPS_PROXY=http://localhost:10808 && export HTTP_PROXY=http://localhost:10808";
|
|
||||||
|
|
||||||
# beets
|
# beets
|
||||||
beet-ima = "beet im ./ -A";
|
beet-ima = "beet im ./ -A";
|
||||||
|
|||||||
@@ -4,4 +4,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
# imports = [
|
||||||
|
# ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
"vds"
|
"vds"
|
||||||
"vds-new"
|
"vds-new"
|
||||||
"wsl"
|
"wsl"
|
||||||
"termux"
|
|
||||||
];
|
];
|
||||||
default = "minimal";
|
default = "minimal";
|
||||||
description = "Type of device for this host.";
|
description = "Type of device for this host.";
|
||||||
@@ -118,11 +117,6 @@
|
|||||||
default = "/mnt/services";
|
default = "/mnt/services";
|
||||||
description = "All services folder.";
|
description = "All services folder.";
|
||||||
};
|
};
|
||||||
services-nodes-folder = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "${config.xlib.dirs.services-mnt-folder}/nodes";
|
|
||||||
description = "All nodes folder.";
|
|
||||||
};
|
|
||||||
postgresql-folder = lib.mkOption {
|
postgresql-folder = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "${config.xlib.dirs.services-mnt-folder}/postgresql";
|
default = "${config.xlib.dirs.services-mnt-folder}/postgresql";
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
xlib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
user = "snity";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
"${user}" = {
|
||||||
|
name = "${user}";
|
||||||
|
isNormalUser = true;
|
||||||
|
group = "users";
|
||||||
|
description = "Snity";
|
||||||
|
hashedPassword = "$y$j9T$851xwObfIp7SYzIyFtH.k1$mNofT2sxEAV50Kxgmwvqc6Kj/3B/fJoPP8qgn./siEB";
|
||||||
|
homeMode = "700";
|
||||||
|
home = "/home/${user}";
|
||||||
|
extraGroups = [
|
||||||
|
"audio"
|
||||||
|
"disk"
|
||||||
|
"gamemode"
|
||||||
|
"networkmanager"
|
||||||
|
"pipewire"
|
||||||
|
"wheel"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
security = {
|
|
||||||
acme = {
|
|
||||||
acceptTerms = true;
|
|
||||||
defaults = {
|
|
||||||
email = "oqyude@gmail.com";
|
|
||||||
};
|
|
||||||
# certs = {
|
|
||||||
# "home.arpa" = {
|
|
||||||
# email = "oqyude@zeroq.su";
|
|
||||||
# domain = "*.home.arpa";
|
|
||||||
# server = "https://localhost:9000/acme/acme/directory";
|
|
||||||
# listenHTTP = ":80";
|
|
||||||
# dnsProvider = null;
|
|
||||||
# };
|
|
||||||
# # "turn.home.arpa" = {
|
|
||||||
# # listenHTTP = "127.0.0.1:80";
|
|
||||||
# # group = "turnserver";
|
|
||||||
# # };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -3,17 +3,14 @@
|
|||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
# let
|
||||||
|
# pkgs-stable = import inputs.nixpkgs-stable { system = "x86_64-linux"; };
|
||||||
|
# in
|
||||||
{
|
{
|
||||||
services.bentopdf = {
|
services.bentopdf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "pdf.private";
|
domain = "bentopdf.local";
|
||||||
nginx = {
|
nginx.enable = true;
|
||||||
enable = true;
|
|
||||||
# virtualHost = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
# package = pkgs-stable.bentopdf;
|
# package = pkgs-stable.bentopdf;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,52 +6,32 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
stable = import inputs.nixpkgs-previous {
|
stable = import inputs.nixpkgs-calibre {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
services = {
|
services.calibre-web = {
|
||||||
calibre-web = {
|
package = stable.calibre-web;
|
||||||
# package = stable.calibre-web;
|
enable = true;
|
||||||
enable = true;
|
# dataDir = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
||||||
# dataDir = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
options = {
|
||||||
options = {
|
calibreLibrary = "${xlib.dirs.services-mnt-folder}/calibre-web-library";
|
||||||
calibreLibrary = "${xlib.dirs.services-mnt-folder}/calibre-web-library";
|
enableBookUploading = true;
|
||||||
enableBookUploading = true;
|
enableKepubify = true;
|
||||||
enableKepubify = true;
|
enableBookConversion = false;
|
||||||
enableBookConversion = false;
|
|
||||||
};
|
|
||||||
listen.ip = "0.0.0.0";
|
|
||||||
listen.port = 8083;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
};
|
||||||
# calibre-server = {
|
listen.ip = "0.0.0.0";
|
||||||
# enable = true;
|
listen.port = 8083;
|
||||||
# port = 8091;
|
openFirewall = true;
|
||||||
# host = "0.0.0.0";
|
|
||||||
# openFirewall = true;
|
|
||||||
# user = "calibre-web";
|
|
||||||
# group = "calibre-web";
|
|
||||||
# libraries = [
|
|
||||||
# "/var/lib/calibre-server"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
fileSystems."/var/lib/calibre-web" = {
|
||||||
"d ${xlib.dirs.services-mnt-folder}/calibre-web 0755 calibre-web calibre-web -"
|
device = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
||||||
"d ${xlib.dirs.services-mnt-folder}/calibre-web-library 0755 calibre-web calibre-web -"
|
fsType = "none";
|
||||||
];
|
options = [
|
||||||
|
"bind"
|
||||||
fileSystems = {
|
"nofail"
|
||||||
"/var/lib/calibre-web" = {
|
];
|
||||||
device = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
"nofail"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.chrony = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.coredns = {
|
|
||||||
enable = true;
|
|
||||||
config = ''
|
|
||||||
zeroq.su:53 {
|
|
||||||
hosts {
|
|
||||||
109.248.161.5 x.zeroq.su
|
|
||||||
192.168.1.20 calibre.zeroq.su
|
|
||||||
192.168.1.20 dns.zeroq.su
|
|
||||||
192.168.1.20 flux.zeroq.su
|
|
||||||
192.168.1.20 git.zeroq.su
|
|
||||||
192.168.1.20 glances.zeroq.su
|
|
||||||
192.168.1.20 homebox.zeroq.su
|
|
||||||
192.168.1.20 immich.zeroq.su
|
|
||||||
192.168.1.20 kuma.zeroq.su
|
|
||||||
192.168.1.20 navidrome.zeroq.su
|
|
||||||
192.168.1.20 nextcloud.zeroq.su
|
|
||||||
192.168.1.20 office.zeroq.su
|
|
||||||
192.168.1.20 pdf.zeroq.su
|
|
||||||
192.168.1.20 syncthing.zeroq.su
|
|
||||||
192.168.1.20 talk.zeroq.su
|
|
||||||
192.168.1.20 turn.zeroq.su
|
|
||||||
fallthrough
|
|
||||||
}
|
|
||||||
cache 300
|
|
||||||
log
|
|
||||||
}
|
|
||||||
home.arpa:53 {
|
|
||||||
hosts {
|
|
||||||
192.168.1.100 vetymae.home.arpa
|
|
||||||
192.168.1.20 ca.home.arpa
|
|
||||||
192.168.1.20 calibre.home.arpa
|
|
||||||
192.168.1.20 dns.home.arpa
|
|
||||||
192.168.1.20 flux.home.arpa
|
|
||||||
192.168.1.20 git.home.arpa
|
|
||||||
192.168.1.20 glances.home.arpa
|
|
||||||
192.168.1.20 home.arpa
|
|
||||||
192.168.1.20 homebox.home.arpa
|
|
||||||
192.168.1.20 immich.home.arpa
|
|
||||||
192.168.1.20 kuma.home.arpa
|
|
||||||
192.168.1.20 navidrome.home.arpa
|
|
||||||
192.168.1.20 nextcloud.home.arpa
|
|
||||||
192.168.1.20 office.home.arpa
|
|
||||||
192.168.1.20 pdf.home.arpa
|
|
||||||
192.168.1.20 sapphira.home.arpa
|
|
||||||
192.168.1.20 syncthing.home.arpa
|
|
||||||
fallthrough
|
|
||||||
}
|
|
||||||
cache 300
|
|
||||||
log
|
|
||||||
}
|
|
||||||
.:53 {
|
|
||||||
forward . 192.168.1.1 1.1.1.1
|
|
||||||
cache 300
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
# let
|
|
||||||
# acme-path = "/var/lib/acme";
|
|
||||||
# in
|
|
||||||
{
|
|
||||||
services.coturn = {
|
|
||||||
enable = false;
|
|
||||||
realm = "turn.home.arpa";
|
|
||||||
# cert = "${acme-path}/turn.home.arpa/fullchain.pem";
|
|
||||||
# pkey = "${acme-path}/turn.home.arpa/key.pem";
|
|
||||||
use-auth-secret = true;
|
|
||||||
static-auth-secret-file = config.sops.secrets.turn-secret.path;
|
|
||||||
no-cli = true;
|
|
||||||
listening-port = 3478; # TURN
|
|
||||||
# tls-listening-port = 5349; # TURNS
|
|
||||||
extraConfig = ''
|
|
||||||
min-port=49160
|
|
||||||
max-port=49200
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPorts = [
|
|
||||||
3478
|
|
||||||
# 5349
|
|
||||||
];
|
|
||||||
allowedUDPPorts = [
|
|
||||||
3478
|
|
||||||
];
|
|
||||||
allowedUDPPortRanges = [
|
|
||||||
{
|
|
||||||
from = 49160;
|
|
||||||
to = 49200;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
sops.secrets = {
|
|
||||||
turn-secret = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "turn-secret";
|
|
||||||
sopsFile = ./secrets/coturn.yaml;
|
|
||||||
group = "nextcloud-spreed-signaling";
|
|
||||||
owner = "turnserver";
|
|
||||||
mode = "0440";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -4,43 +4,35 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../containers/3x-ui.nix
|
|
||||||
../software/beets
|
../software/beets
|
||||||
./acme.nix
|
|
||||||
./bentopdf.nix
|
./bentopdf.nix
|
||||||
./calibre-web.nix
|
./calibre-web.nix
|
||||||
./chrony.nix
|
|
||||||
./coredns.nix
|
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
./glances.nix
|
./glances.nix
|
||||||
./homebox.nix
|
|
||||||
./immich.nix
|
./immich.nix
|
||||||
./miniflux.nix
|
./miniflux.nix
|
||||||
|
./n8n.nix
|
||||||
./navidrome.nix
|
./navidrome.nix
|
||||||
|
./netdata.nix
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./nix-serve.nix
|
./nix-serve.nix
|
||||||
./onlyoffice.nix
|
./open-webui.nix
|
||||||
./postgresql.nix
|
./postgresql.nix
|
||||||
./power.nix
|
|
||||||
./samba.nix
|
./samba.nix
|
||||||
|
./step-ca.nix
|
||||||
|
./stirling-pdf.nix
|
||||||
./syncthing.nix
|
./syncthing.nix
|
||||||
./systemd.nix
|
./systemd.nix
|
||||||
# ./step-ca.nix
|
./transmission.nix
|
||||||
|
./uptime-kuma.nix
|
||||||
# ../containers/remnawave.nix
|
# ../containers/remnawave.nix
|
||||||
# ./coturn.nix
|
|
||||||
# ./mealie.nix
|
# ./mealie.nix
|
||||||
# ./memos.nix
|
# ./memos.nix
|
||||||
# ./n8n.nix
|
|
||||||
# ./netdata.nix
|
|
||||||
# ./nfs.nix
|
# ./nfs.nix
|
||||||
# ./node-red.nix
|
# ./node-red.nix
|
||||||
# ./open-webui.nix
|
|
||||||
# ./rsync.nix
|
# ./rsync.nix
|
||||||
# ./stirling-pdf.nix
|
|
||||||
# ./transmission.nix
|
|
||||||
# ./trilium.nix
|
# ./trilium.nix
|
||||||
# ./uptime-kuma.nix
|
|
||||||
# ./zerotier.nix
|
# ./zerotier.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
appName = "ZeroQ Gitea Service";
|
appName = "ZeroQ Gitea Service";
|
||||||
settings = {
|
settings = {
|
||||||
server = {
|
server = {
|
||||||
DOMAIN = "git.zeroq.su";
|
DOMAIN = "gitea.local";
|
||||||
HTTP_PORT = 3000;
|
HTTP_PORT = 3000;
|
||||||
};
|
};
|
||||||
service.DISABLE_REGISTRATION = true;
|
service.DISABLE_REGISTRATION = true;
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d ${config.services.gitea.stateDir} 0755 gitea gitea -"
|
|
||||||
"z ${config.services.gitea.stateDir} 0755 gitea gitea -"
|
"z ${config.services.gitea.stateDir} 0755 gitea gitea -"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
configDir = "${xlib.dirs.services-mnt-folder}/homebox";
|
|
||||||
varDir = "/var/lib/homebox";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.homebox = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
HBOX_WEB_HOST = "0.0.0.0";
|
|
||||||
HBOX_WEB_PORT = "7745";
|
|
||||||
HBOX_STORAGE_CONN_STRING = "file://${varDir}";
|
|
||||||
HBOX_STORAGE_PREFIX_PATH = "data";
|
|
||||||
HBOX_DATABASE_DRIVER = "sqlite3";
|
|
||||||
HBOX_DATABASE_SQLITE_PATH = "${varDir}/data/homebox.db?_pragma=busy_timeout=999&_pragma=journal_mode=WAL&_fk=1";
|
|
||||||
HBOX_OPTIONS_ALLOW_REGISTRATION = "true";
|
|
||||||
HBOX_OPTIONS_GITHUB_RELEASE_CHECK = "false";
|
|
||||||
HBOX_MODE = "production";
|
|
||||||
HOME = "${varDir}";
|
|
||||||
TMPDIR = "${varDir}/tmp";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${configDir} 0755 homebox homebox -"
|
|
||||||
"z ${configDir} 0755 homebox homebox -"
|
|
||||||
];
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"${varDir}" = {
|
|
||||||
device = "${configDir}";
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
"nofail"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -6,10 +6,16 @@
|
|||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
master = import inputs.nixpkgs-master {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
immich = {
|
immich = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# package = master.immich;
|
||||||
port = 2283;
|
port = 2283;
|
||||||
host = "0.0.0.0";
|
host = "0.0.0.0";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
services.n8n = {
|
services.n8n = {
|
||||||
enable = false;
|
enable = true;
|
||||||
environment = {
|
environment = {
|
||||||
# N8N_USER_FOLDER = lib.mkForce "${configDir}";
|
# N8N_USER_FOLDER = lib.mkForce "${configDir}";
|
||||||
N8N_SECURE_COOKIE = "false";
|
N8N_SECURE_COOKIE = "false";
|
||||||
|
|||||||
@@ -6,31 +6,17 @@
|
|||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
navidromeDir = "/var/lib/services/navidrome-point";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
navidrome = {
|
navidrome = {
|
||||||
enable = true;
|
enable = false;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
# environmentFile = "";
|
# environmentFile = "";
|
||||||
settings = {
|
settings = {
|
||||||
Address = "0.0.0.0";
|
Address = "0.0.0.0";
|
||||||
Port = 4533;
|
Port = "4533";
|
||||||
MusicFolder = "${navidromeDir}";
|
MusicFolder = "/mnt/beets/music";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.mounts = [
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
options = "bind,x-systemd.automount,nofail";
|
|
||||||
requires = [ "local-fs.target" ];
|
|
||||||
type = "none";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
what = "${xlib.dirs.server-home}/Music";
|
|
||||||
where = "${navidromeDir}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,60 +1,34 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
inputs,
|
||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
master = import inputs.nixpkgs-master {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
# config.allowUnfree = true;
|
||||||
|
# config.allowUnfreePredicate = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
nextcloud-whiteboard-server = {
|
nextcloud-whiteboard-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
NEXTCLOUD_URL = "https://nextcloud.zeroq.su";
|
NEXTCLOUD_URL = "http://nextcloud.private";
|
||||||
};
|
};
|
||||||
secrets = [ config.sops.secrets.nextcloud-whiteboard-jwt.path ];
|
secrets = [ config.sops.secrets.nextcloud-whiteboard-jwt.path ];
|
||||||
};
|
};
|
||||||
nextcloud-spreed-signaling = {
|
|
||||||
enable = false;
|
|
||||||
hostName = "talk.private";
|
|
||||||
backends.nextcloud = {
|
|
||||||
urls = [
|
|
||||||
"https://nextcloud.zeroq.su"
|
|
||||||
# "https://nextcloud.home.arpa"
|
|
||||||
];
|
|
||||||
secretFile = config.sops.secrets.nextcloud-talk-secret.path;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
http.listen = "127.0.0.1:8080";
|
|
||||||
clients.internalsecretFile = config.sops.secrets.internal-secret.path;
|
|
||||||
sessions = {
|
|
||||||
hashkeyFile = config.sops.secrets.hashkey.path;
|
|
||||||
blockkeyFile = config.sops.secrets.blockkey.path;
|
|
||||||
};
|
|
||||||
mcu = {
|
|
||||||
type = "janus";
|
|
||||||
url = "ws://127.0.0.1:8188";
|
|
||||||
};
|
|
||||||
turn = {
|
|
||||||
secretFile = config.sops.secrets.turn-secret.path;
|
|
||||||
apikeyFile = config.sops.secrets.turn-api-key.path;
|
|
||||||
servers = [
|
|
||||||
"turn:turn.zeroq.su:3478?transport=udp"
|
|
||||||
"turn:turn.zeroq.su:3478?transport=tcp"
|
|
||||||
# "turns:turn.zeroq.su:5349?transport=tcp"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud34;
|
package = pkgs.nextcloud33;
|
||||||
hostName = "nextcloud.private";
|
hostName = "nextcloud.private";
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
home = "${xlib.dirs.services-mnt-folder}/nextcloud";
|
home = "${xlib.dirs.services-mnt-folder}/nextcloud";
|
||||||
configureRedis = true;
|
configureRedis = true;
|
||||||
https = true;
|
|
||||||
caching = {
|
caching = {
|
||||||
redis = true;
|
redis = true;
|
||||||
memcached = true;
|
memcached = true;
|
||||||
@@ -72,28 +46,24 @@
|
|||||||
trusted_domains = [
|
trusted_domains = [
|
||||||
"100.64.0.0"
|
"100.64.0.0"
|
||||||
"192.168.1.20"
|
"192.168.1.20"
|
||||||
"37.128.246.126"
|
|
||||||
"localhost"
|
"localhost"
|
||||||
"nextcloud.home.arpa"
|
"nextcloud.local"
|
||||||
"nextcloud.private"
|
"nextcloud.private"
|
||||||
"nextcloud.zeroq.su"
|
"nextcloud.zeroq.su"
|
||||||
"office.home.arpa"
|
"office.local"
|
||||||
"office.zeroq.su"
|
"office.zeroq.su"
|
||||||
];
|
];
|
||||||
trusted_proxies = [
|
trusted_proxies = [
|
||||||
"100.64.1.0"
|
"100.64.1.0"
|
||||||
"109.248.161.5"
|
"109.248.161.5"
|
||||||
"192.168.1.20"
|
|
||||||
"37.128.246.126"
|
|
||||||
];
|
];
|
||||||
overwriteprotocol = "https"; # maybe no
|
overwriteprotocol = ""; # maybe no
|
||||||
};
|
};
|
||||||
extraAppsEnable = true;
|
extraAppsEnable = true;
|
||||||
appstoreEnable = false;
|
appstoreEnable = false;
|
||||||
notify_push = {
|
notify_push = {
|
||||||
enable = true;
|
enable = false;
|
||||||
bendDomainToLocalhost = true;
|
bendDomainToLocalhost = true;
|
||||||
nextcloudUrl = "https://nextcloud.zeroq.su";
|
|
||||||
};
|
};
|
||||||
# phpPackage = pkgs.php85;
|
# phpPackage = pkgs.php85;
|
||||||
extraApps = {
|
extraApps = {
|
||||||
@@ -165,6 +135,15 @@
|
|||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
|
onlyoffice = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "office.local";
|
||||||
|
port = 8090;
|
||||||
|
allowLocalConnections = true;
|
||||||
|
wopi = true;
|
||||||
|
jwtSecretFile = config.sops.secrets.onlyoffice-jwt.path;
|
||||||
|
securityNonceFile = config.sops.secrets.onlyoffice-nonce.path;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# fonts.packages = [ work.corefonts ];
|
# fonts.packages = [ work.corefonts ];
|
||||||
@@ -225,51 +204,21 @@
|
|||||||
group = "nextcloud";
|
group = "nextcloud";
|
||||||
mode = "0650";
|
mode = "0650";
|
||||||
};
|
};
|
||||||
nextcloud-talk-secret = {
|
onlyoffice-nonce = {
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "nextcloud-talk-secret";
|
key = "nonce";
|
||||||
sopsFile = ./secrets/nextcloud.yaml;
|
sopsFile = ./secrets/onlyoffice.yaml;
|
||||||
# owner = "nextcloud-spreed-signaling";
|
owner = "onlyoffice";
|
||||||
# group = "nextcloud-spreed-signaling";
|
group = "onlyoffice";
|
||||||
mode = "0440";
|
mode = "0650";
|
||||||
};
|
};
|
||||||
internal-secret = {
|
onlyoffice-jwt = {
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "internal-secret";
|
key = "jwt";
|
||||||
sopsFile = ./secrets/nextcloud.yaml;
|
sopsFile = ./secrets/onlyoffice.yaml;
|
||||||
# owner = "nextcloud-spreed-signaling";
|
owner = "onlyoffice";
|
||||||
# group = "nextcloud-spreed-signaling";
|
group = "onlyoffice";
|
||||||
mode = "0440";
|
mode = "0650";
|
||||||
};
|
|
||||||
hashkey = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "hashkey";
|
|
||||||
sopsFile = ./secrets/nextcloud.yaml;
|
|
||||||
# owner = "nextcloud-spreed-signaling";
|
|
||||||
# group = "nextcloud-spreed-signaling";
|
|
||||||
mode = "0440";
|
|
||||||
};
|
|
||||||
blockkey = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "blockkey";
|
|
||||||
sopsFile = ./secrets/nextcloud.yaml;
|
|
||||||
# owner = "nextcloud-spreed-signaling";
|
|
||||||
# group = "nextcloud-spreed-signaling";
|
|
||||||
mode = "0440";
|
|
||||||
};
|
|
||||||
turn-secret = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "turn-secret";
|
|
||||||
sopsFile = ./secrets/coturn.yaml;
|
|
||||||
# group = "nextcloud-spreed-signaling";
|
|
||||||
mode = "0440";
|
|
||||||
};
|
|
||||||
turn-api-key = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "turn-api-key";
|
|
||||||
sopsFile = ./secrets/coturn.yaml;
|
|
||||||
# group = "nextcloud-spreed-signaling";
|
|
||||||
mode = "0440";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+110
-375
@@ -29,17 +29,29 @@ in
|
|||||||
addr = "192.168.1.20";
|
addr = "192.168.1.20";
|
||||||
port = 10000;
|
port = 10000;
|
||||||
}
|
}
|
||||||
{
|
|
||||||
addr = "127.0.0.1";
|
|
||||||
port = 10000;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"office.zeroq.su" = {
|
"office.local" = {
|
||||||
forceSSL = true;
|
forceSSL = false;
|
||||||
enableACME = true;
|
enableACME = false;
|
||||||
|
# locations = {
|
||||||
|
# "/" = {
|
||||||
|
# proxyPass = "http://localhost:8090";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# proxy_set_header Host $host;
|
||||||
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
# proxy_set_header X-Forwarded-Host $host;
|
||||||
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
# proxy_http_version 1.1;
|
||||||
|
# proxy_set_header Upgrade $http_upgrade;
|
||||||
|
# proxy_set_header Connection "upgrade";
|
||||||
|
# '';
|
||||||
};
|
};
|
||||||
"pdf.private" = {
|
"bentopdf.local" = {
|
||||||
forceSSL = false;
|
forceSSL = false;
|
||||||
enableACME = false;
|
enableACME = false;
|
||||||
listen = [
|
listen = [
|
||||||
@@ -55,311 +67,14 @@ in
|
|||||||
addr = "192.168.1.20";
|
addr = "192.168.1.20";
|
||||||
port = 8446;
|
port = 8446;
|
||||||
}
|
}
|
||||||
{
|
|
||||||
addr = "127.0.0.1";
|
|
||||||
port = 8446;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"z.zeroq.su" = {
|
"nextcloud.local" = {
|
||||||
forceSSL = true;
|
forceSSL = false;
|
||||||
enableACME = true;
|
enableACME = false;
|
||||||
locations = {
|
|
||||||
"/" = {
|
|
||||||
proxyPass = "http://${server}:2049";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
"/subs/" = {
|
|
||||||
proxyPass = "http://${server}:2096";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
"/subsjs/" = {
|
|
||||||
proxyPass = "http://${server}:2096";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
"/clash/" = {
|
|
||||||
proxyPass = "http://${server}:2096";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# "pdf.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations = {
|
|
||||||
# "/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:8446";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "homebox.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations = {
|
|
||||||
# "/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:7745";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "nextcloud.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations = {
|
|
||||||
# "/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:10000";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# "/whiteboard" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:3002";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "talk.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# # locations = {
|
|
||||||
# # "/" = {
|
|
||||||
# # proxyPass = "http://127.0.0.1:7880";
|
|
||||||
# # proxyWebsockets = true;
|
|
||||||
# # };
|
|
||||||
# # };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "turn.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations = {
|
|
||||||
# "/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:5349";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "ca.zeroq.su" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:9000";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "git.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:3000";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "n8n.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://${server}:5678";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "kuma.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:4001";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "flux.home.arpa" = {
|
|
||||||
# addSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:6061";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "navidrome.home.arpa" = {
|
|
||||||
# addSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:4533";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "immich.home.arpa" = {
|
|
||||||
# addSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:2283";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
"immich.zeroq.su" = {
|
|
||||||
addSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:2283";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"kuma.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:4001";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"health.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:19999";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"git.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:3000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"homebox.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:7745";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# "agent.zeroq.su" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://${server}:3000";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "node-red.zeroq.su" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# kTLS = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://${server}:1880";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
"zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
root = pkgs.writeTextDir "index.html" ''
|
|
||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<body>
|
|
||||||
<pre>What are you doing here?</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
'';
|
|
||||||
locations = {
|
|
||||||
"/guest/" = {
|
|
||||||
proxyPass = "http://${server}:80";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
# "/.well-known/discord" = {
|
|
||||||
# extraConfig = ''
|
|
||||||
# default_type text/plain;
|
|
||||||
# return 200 "dh=c2d103553a4cfdaa1b7952a87a7d8120a1e167cc";
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"flux.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:6061";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"navidrome.zeroq.su" = {
|
|
||||||
addSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:4533";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"vetymae.opencodes.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://100.86.62.4:4096";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"lamet.opencodes.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://100.106.21.39:6061";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"n8n.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:5678";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# "office.zeroq.su" = {
|
|
||||||
# enableACME = true;
|
|
||||||
# forceSSL = true;
|
|
||||||
# locations = {
|
|
||||||
# "/" = {
|
|
||||||
# proxyPass = "http://${server}:8090";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
"nextcloud.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations = {
|
locations = {
|
||||||
"/" = {
|
"/" = {
|
||||||
proxyPass = "http://${server}:10000";
|
proxyPass = "http://${server}:10000";
|
||||||
@@ -374,9 +89,90 @@ in
|
|||||||
client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"calibre.zeroq.su" = {
|
"gitea.local" = {
|
||||||
forceSSL = true;
|
forceSSL = false;
|
||||||
enableACME = true;
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:3000";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"n8n.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:5678";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"kuma.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:4001";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"health.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:19999";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"agent.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:3000";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"flux.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:6061";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"immich.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:2283";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
# "office.local" = {
|
||||||
|
# enableACME = false;
|
||||||
|
# forceSSL = false;
|
||||||
|
# locations = {
|
||||||
|
# "/" = {
|
||||||
|
# proxyPass = "http://${server}:8000"; # 9980
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
# proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
# ''; # absolute_redirect off;
|
||||||
|
# };
|
||||||
|
"calibre.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://${server}:8083";
|
proxyPass = "http://${server}:8083";
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
@@ -385,66 +181,9 @@ in
|
|||||||
client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"nix-cache.zeroq.su" = {
|
# "zeroq.local" = {
|
||||||
forceSSL = true;
|
# forceSSL = false;
|
||||||
enableACME = true;
|
# enableACME = false;
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:5000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"pdf.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:8446";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
# "calibre.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:8083";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "dns.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:53";
|
|
||||||
# };
|
|
||||||
# extraConfig = ''
|
|
||||||
# client_max_body_size 5G;
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# "glances.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:61208";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "syncthing.home.arpa" = {
|
|
||||||
# addSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://127.0.0.1:8384";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "zeroq.home.arpa" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# root = pkgs.writeTextDir "index.html" ''
|
# root = pkgs.writeTextDir "index.html" ''
|
||||||
# <!doctype html>
|
# <!doctype html>
|
||||||
# <html>
|
# <html>
|
||||||
@@ -467,8 +206,4 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
services = {
|
services = {
|
||||||
nix-serve = {
|
nix-serve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nix-serve-ng;
|
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
port = 5000;
|
port = 5000;
|
||||||
bindAddress = "0.0.0.0";
|
bindAddress = "0.0.0.0";
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
previous = import inputs.nixpkgs-master {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
config.allowUnfree = true;
|
|
||||||
config.allowUnfreePredicate = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.onlyoffice = {
|
|
||||||
enable = true;
|
|
||||||
# package = previous.onlyoffice-documentserver;
|
|
||||||
hostname = "office.zeroq.su";
|
|
||||||
port = 8090;
|
|
||||||
allowLocalConnections = true;
|
|
||||||
wopi = true;
|
|
||||||
jwtSecretFile = config.sops.secrets.onlyoffice-jwt.path;
|
|
||||||
securityNonceFile = config.sops.secrets.onlyoffice-nonce.path;
|
|
||||||
};
|
|
||||||
sops.secrets = {
|
|
||||||
onlyoffice-nonce = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "nonce";
|
|
||||||
sopsFile = ./secrets/onlyoffice.yaml;
|
|
||||||
owner = "onlyoffice";
|
|
||||||
group = "onlyoffice";
|
|
||||||
mode = "0650";
|
|
||||||
};
|
|
||||||
onlyoffice-jwt = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "jwt";
|
|
||||||
sopsFile = ./secrets/onlyoffice.yaml;
|
|
||||||
owner = "onlyoffice";
|
|
||||||
group = "onlyoffice";
|
|
||||||
mode = "0650";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -6,6 +6,11 @@
|
|||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
master = import inputs.nixpkgs-master {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
postgresql = {
|
postgresql = {
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
tuned = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
auto-cpufreq.enable = false;
|
|
||||||
power-profiles-daemon.enable = lib.mkForce false;
|
|
||||||
throttled.enable = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+44
-71
@@ -1,83 +1,56 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
services = {
|
services.samba = {
|
||||||
samba-wsdd = {
|
enable = true;
|
||||||
enable = true;
|
nmbd = {
|
||||||
openFirewall = true;
|
enable = false;
|
||||||
hostname = "sapphira";
|
|
||||||
discovery = true;
|
|
||||||
};
|
};
|
||||||
samba = {
|
settings = {
|
||||||
enable = true;
|
global = {
|
||||||
# package = pkgs.samba4Full;
|
"invalid users" = [ ];
|
||||||
nmbd = {
|
"passwd program" = "/run/wrappers/bin/passwd %u";
|
||||||
enable = true;
|
security = "user";
|
||||||
};
|
};
|
||||||
settings = {
|
nixos = {
|
||||||
global = {
|
"path" = "/etc/nixos";
|
||||||
"invalid users" = [ ];
|
"browseable" = "yes";
|
||||||
"passwd program" = "/run/wrappers/bin/passwd %u";
|
"read only" = "no";
|
||||||
security = "user";
|
"valid users" = "${xlib.device.username}";
|
||||||
};
|
"guest ok" = "no";
|
||||||
nixos = {
|
"writable" = "yes";
|
||||||
"path" = "/etc/nixos";
|
"create mask" = 755;
|
||||||
"browseable" = "yes";
|
"directory mask" = 755;
|
||||||
"read only" = "no";
|
"force user" = "${xlib.device.username}";
|
||||||
"valid users" = "${xlib.device.username}";
|
"force group" = "users";
|
||||||
"guest ok" = "no";
|
};
|
||||||
"writable" = "yes";
|
root = {
|
||||||
"create mask" = 755;
|
"path" = "/";
|
||||||
"directory mask" = 755;
|
"browseable" = "yes";
|
||||||
"force user" = "${xlib.device.username}";
|
"read only" = "no";
|
||||||
"force group" = "users";
|
"valid users" = "${xlib.device.username}";
|
||||||
};
|
"guest ok" = "no";
|
||||||
root = {
|
"writable" = "yes";
|
||||||
"path" = "/";
|
#"create mask" = 0644;
|
||||||
"browseable" = "yes";
|
#"directory mask" = 0644;
|
||||||
"read only" = "no";
|
"force user" = "root";
|
||||||
"valid users" = "${xlib.device.username}";
|
"force group" = "root";
|
||||||
"guest ok" = "no";
|
};
|
||||||
"writable" = "yes";
|
"${xlib.device.username}" = {
|
||||||
#"create mask" = 0644;
|
"path" = "${xlib.dirs.server-home}";
|
||||||
#"directory mask" = 0644;
|
"browseable" = "yes";
|
||||||
"force user" = "root";
|
"read only" = "no";
|
||||||
"force group" = "root";
|
"valid users" = "${xlib.device.username}";
|
||||||
};
|
"guest ok" = "no";
|
||||||
"${xlib.device.username}" = {
|
"writable" = "yes";
|
||||||
"path" = "${xlib.dirs.server-home}";
|
"create mask" = 700;
|
||||||
"browseable" = "yes";
|
"directory mask" = 700;
|
||||||
"read only" = "no";
|
"force user" = "${xlib.device.username}";
|
||||||
"valid users" = "${xlib.device.username}";
|
"force group" = "users";
|
||||||
"guest ok" = "no";
|
|
||||||
"writable" = "yes";
|
|
||||||
"create mask" = 700;
|
|
||||||
"directory mask" = 700;
|
|
||||||
"force user" = "${xlib.device.username}";
|
|
||||||
"force group" = "users";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/samba 0755 root root -"
|
|
||||||
"z ${xlib.dirs.services-mnt-folder}/samba 0755 root root -"
|
|
||||||
];
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"/var/lib/samba" = {
|
|
||||||
device = "${xlib.dirs.services-mnt-folder}/samba";
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
"nofail"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
turn-secret: ENC[AES256_GCM,data:M8dIzxKmv/x07/KNFTB+0JusGNA61J9r8VaR1Yy/j8Lo5x+NI2S1+rytvUutGxnTnYVqXynozs3ABfIDu/yzyA==,iv:X70EiZNkjbSL2R0S79D2Ey6tMiU35Gr4ROcxbX6df70=,tag:dJjSBSyK2RtIdXP5npWOQA==,type:str]
|
|
||||||
turn-api-key: ENC[AES256_GCM,data:xFV8ZCDSPrtybCSIas4JEamsYX6fqd0IZIdNqv7cfk0R5+rKsvJYzAFc2RcREOafiGrA6nR85NvldhoAB06HIQ==,iv:DeqlY9jBByn42ygx2TiRQscPYqKwxvGZyhLEo1nmAgw=,tag:RCW0LJqFANWycASBsBuKYA==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOdVI1aUJDZ2gxWUhpSllL
|
|
||||||
dVRZS0cvYjVBeWlhNytpK09nMVBFQU1aOUVrCnpOdit6bGxxYmhJNTYwMkdKOWdI
|
|
||||||
QTQzZUhDc3ZCeTlFVWZER2U5dUxDNG8KLS0tIDRYUW02ZjV4OFNyTkhRa0ZDMU1Q
|
|
||||||
NzNnQXloNE9LODA3SXpUTzExU0RuUFUKOSmHSr4oKj+MdSLv1bXzGWdj+xBS4cXq
|
|
||||||
93hxORbXILr96DUfQucNHkAHT4BcW0TIE1F5EyOL1HVEnI3/WEuR4w==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
lastmodified: "2026-06-30T08:02:46Z"
|
|
||||||
mac: ENC[AES256_GCM,data:NG0b9LrWQ1E6rQOxDvhAqu190a3EDmGwQV49ezuCVZmjr4okajomjCe3Q37KdG+d576RXldtciPq2ZNhEPzuC51kEvNk1x1oMn64lNDrYWXwev4tI+NcdpLm8W2hPeU6jsnY4NZAQf9YUvjJIwXyO2fhuR8AovRsUPj9A8fEjJU=,iv:H7C/GBsh8Zal3p+FXY7BjBCTVTEkC9ma4molPODsZDU=,tag:+V+mI88apssiXr3cJPQeiw==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.13.1
|
|
||||||
@@ -1,12 +1,9 @@
|
|||||||
adminpass: ENC[AES256_GCM,data:Fm+Q6YWXxouP5cX2WHU05Jr49FU=,iv:Exf/li6bL6xpR9HQ8XDDSprjx4ltHkJFl99Ga+gXwmQ=,tag:iB9d5O4982tr7lPu1nWccQ==,type:str]
|
adminpass: ENC[AES256_GCM,data:Fm+Q6YWXxouP5cX2WHU05Jr49FU=,iv:Exf/li6bL6xpR9HQ8XDDSprjx4ltHkJFl99Ga+gXwmQ=,tag:iB9d5O4982tr7lPu1nWccQ==,type:str]
|
||||||
whiteboard-jwt: ENC[AES256_GCM,data:5i+x8VODrBIhGEWS5Ua6lrk7tsfk6xTa/1qm1rXe4A==,iv:2gFEeudip7BxJh553QtZ1CZo9T8jro3Q/Afdo8ouHtw=,tag:HgBM9ta41rhXJlsQJ+asFg==,type:str]
|
whiteboard-jwt: ENC[AES256_GCM,data:5i+x8VODrBIhGEWS5Ua6lrk7tsfk6xTa/1qm1rXe4A==,iv:2gFEeudip7BxJh553QtZ1CZo9T8jro3Q/Afdo8ouHtw=,tag:HgBM9ta41rhXJlsQJ+asFg==,type:str]
|
||||||
nextcloud-talk-secret: ENC[AES256_GCM,data:rdPoTwP00N3VdYKVMG1JgBL4GdXbJAGYIyBHGrVoH1kP0+vU9ImHFfhPNOGTJasTcsVH9Ub+ewLw8cnhBpjFGw==,iv:dOY3kuYZt+Uw1RqNLMV1AJirQXl6UZrD4TCSibnM+nI=,tag:gzkJCN7ipqKV3UdrSF6aGQ==,type:str]
|
|
||||||
internal-secret: ENC[AES256_GCM,data:5dUblSAYYKaBXJj4nzHHggQp3+76Ubc0SE6VGbT6wzO+Zavdy/vo8JtVPkq3WZddyqJX9sgc2mn4fIXRRU+Zkg==,iv:A240Os4SEN+O9GT0HwX6WrGJx9TAYnJDSyW609vmES0=,tag:8p05AcrovwTaxxt+vFri9A==,type:str]
|
|
||||||
hashkey: ENC[AES256_GCM,data:49w+JLFgN1pcV8QqcW+URURIypnZMi5RC6E7U60HgrY=,iv:u0r2QgVehL/Y0xSiDTvBc2yOw1fWL/PQgT+n6ZSGf4M=,tag:NF9h6FWwjX2RUxy5YN6ODA==,type:str]
|
|
||||||
blockkey: ENC[AES256_GCM,data:t/w0aENV7X0/tiAoJWi74BKFsaGZblfCnsYPg271aBQ=,iv:hWiFMDEtq6g/11dAvtUun3wgZw2J4jbIMOz3ly4o34Q=,tag:z2DYXT+rylpgOp/0CY7qDQ==,type:str]
|
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- enc: |
|
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
||||||
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxNWFiUlZXMEEvNll0aFFk
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxNWFiUlZXMEEvNll0aFFk
|
||||||
UldxNitqaDgyenBFeWRhLzUxSVVhQk55Q1FBCkdLU3p4S0NTOVhERkRoaWVwbWVB
|
UldxNitqaDgyenBFeWRhLzUxSVVhQk55Q1FBCkdLU3p4S0NTOVhERkRoaWVwbWVB
|
||||||
@@ -14,8 +11,7 @@ sops:
|
|||||||
WGVQYjZtaHhaeC9pMzYxYmxTcVNtYk0KKxXXNA9h0fs+mA6U/Vsyg+q1CPl5hFrI
|
WGVQYjZtaHhaeC9pMzYxYmxTcVNtYk0KKxXXNA9h0fs+mA6U/Vsyg+q1CPl5hFrI
|
||||||
Ozjqh+dzwajQeqkCPUdCsoeIWsvBY2Cyabvs+f0zj8S00faXb8rVQQ==
|
Ozjqh+dzwajQeqkCPUdCsoeIWsvBY2Cyabvs+f0zj8S00faXb8rVQQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
lastmodified: "2026-03-30T12:49:45Z"
|
||||||
lastmodified: "2026-06-30T07:33:27Z"
|
mac: ENC[AES256_GCM,data:1EkbMGa6nK53GqGWYvXZP+sqy91AldGKy/32CVPshZwvTzJtk/VeK3W9A3fIGwvo7gl+QVWJmSiqrOTql4v+U4Yi3jVLEXsHXA5Bh28aJ7Ng9nkZmI10K7oaYF1xWNxzwss4gcDNIuomK+wG1WNLaiLbxwCBkN6xHugWQ4F+DLs=,iv:UmI6nC7dIHGeas54taf5kTIINvyd8YXyOVdIYghwHmE=,tag:VxdJLXRYin8D07r6CCA00A==,type:str]
|
||||||
mac: ENC[AES256_GCM,data:fZlKozBczGDWfhXKyJXmW/I/7GdKKoPG/NVNt2ncoK2a+pjHglJ0Ur9Zg02v05Fb37MmFznmHH2nn4W4av1TX118dX4jkni2aue06NEF3L8iali+sHFPUSI+uT8SvG0DW7ZvllPNwyPNgzeZPLIKqRRGZ7CgOqKe6IWOha4jAhg=,iv:7gfdmYmktzRXq7ANwXOdOKVgZEe0kfFIPKEvEnhfKrc=,tag:3tkVXh+89Q/uW8TCHZtWWQ==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.13.1
|
version: 3.12.2
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ sops:
|
|||||||
IUYmiWPlPd1IDV1NeMtlSYtO8exzB22XL9DqW4x/tJ7DeSZaBsjcOw==
|
IUYmiWPlPd1IDV1NeMtlSYtO8exzB22XL9DqW4x/tJ7DeSZaBsjcOw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
||||||
lastmodified: "2026-06-23T20:42:29Z"
|
lastmodified: "2026-06-13T22:59:34Z"
|
||||||
mac: ENC[AES256_GCM,data:pyayAQOBIBKwfpTCykHtVELGKmhrpS9Mu18wwl3aYyvEwdqqhfSbzt2fXURgWAbrsax6KzrTfi2bgixy8NxRibI+o5/magGAXdk0N5RUP68/FPe1cSL6ZRry+00WjJp8x75wbSp64GU0xY7uUuq+oUKfckGCsY/m4AODbZWU1Ic=,iv:jEpnTyllRd46vPiGG2VlZkFOgwcKQNSov1W813uLQEM=,tag:B7BNlVvhgm9HI/zUQneVQw==,type:str]
|
mac: ENC[AES256_GCM,data:72E73xauS1Xrfw6tcyN/PHSJZ4ZZnIeKp8JVUPFGPBvIzaD6ZThYZwQ10FDD4JF+YOwn3QhCEh3t0ozcSNNnJFkyBgSqFtRMkym0ede12VAOPu2wQFoNvMdkT7+n14lJ/9OOz6KDyMf0BQDJKlSfDBkt+mLi61zte5iUxPsWsp4=,iv:xuOwFBEnlRgbaVdMq4O6w9T2edpS6uEPh9yhNbYBJIk=,tag:Y+dtcU17Q83o/9Nt1LGCcg==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.13.1
|
version: 3.13.1
|
||||||
|
|||||||
@@ -22,34 +22,14 @@ in
|
|||||||
key = "${varDir}/secrets/intermediate_ca_key";
|
key = "${varDir}/secrets/intermediate_ca_key";
|
||||||
# address = "0.0.0.0:9000";
|
# address = "0.0.0.0:9000";
|
||||||
dnsNames = [
|
dnsNames = [
|
||||||
"*.zeroq.su"
|
"ca.zeroq.su"
|
||||||
"*.home.arpa"
|
|
||||||
"localhost"
|
|
||||||
];
|
];
|
||||||
db = {
|
db = {
|
||||||
type = "badgerv2";
|
type = "badgerv2";
|
||||||
dataSource = "${varDir}/db";
|
dataSource = "${varDir}/db";
|
||||||
};
|
};
|
||||||
authority = {
|
authority = {
|
||||||
claims = {
|
|
||||||
defaultTLSCertDuration = "2160h";
|
|
||||||
maxTLSCertDuration = "2160h";
|
|
||||||
};
|
|
||||||
provisioners = [
|
provisioners = [
|
||||||
{
|
|
||||||
type = "ACME";
|
|
||||||
name = "acme";
|
|
||||||
claims = {
|
|
||||||
enableSSHCA = false;
|
|
||||||
allowSANs = [
|
|
||||||
"*.home.arpa"
|
|
||||||
"*.zeroq.su"
|
|
||||||
"home.arpa"
|
|
||||||
"localhost"
|
|
||||||
];
|
|
||||||
maxTLSCertDuration = "2160h";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
type = "JWK";
|
type = "JWK";
|
||||||
name = "oqyude@zeroq.su";
|
name = "oqyude@zeroq.su";
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
# let
|
||||||
|
# pkgs-stable = import inputs.nixpkgs-stable { system = "x86_64-linux"; };
|
||||||
|
# in
|
||||||
|
{
|
||||||
|
services.stirling-pdf = {
|
||||||
|
enable = false;
|
||||||
|
# package = pkgs-stable.stirling-pdf;
|
||||||
|
environment = {
|
||||||
|
SERVER_PORT = 6060;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,13 +4,18 @@
|
|||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
master = import inputs.nixpkgs-master {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# package = master.syncthing;
|
# package = master.syncthing;
|
||||||
systemService = true;
|
systemService = true;
|
||||||
guiAddress = "0.0.0.0:8384";
|
guiAddress = "0.0.0.0:8384";
|
||||||
configDir = "${xlib.dirs.storage}/persist/Syncthing/${xlib.device.hostname}";
|
configDir = "${xlib.dirs.storage}/Syncthing/${xlib.device.hostname}";
|
||||||
dataDir = "${xlib.dirs.server-home}";
|
dataDir = "${xlib.dirs.server-home}";
|
||||||
group = "users";
|
group = "users";
|
||||||
user = "${xlib.device.username}";
|
user = "${xlib.device.username}";
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
xlib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.aichat
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -7,8 +7,31 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
stable = import inputs.nixpkgs-beets {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
let
|
||||||
|
# depsOverlay = import ./dependencies.nix {
|
||||||
|
# # ./dependencies-full.nix if broken
|
||||||
|
# inherit (pkgs) fetchurl fetchgit fetchhg;
|
||||||
|
# inherit pkgs;
|
||||||
|
# };
|
||||||
|
# python3 = pkgs.python3.override {
|
||||||
|
# packageOverrides = depsOverlay;
|
||||||
|
# };
|
||||||
beetsEnv = pkgs.python314.withPackages (
|
beetsEnv = pkgs.python314.withPackages (
|
||||||
ps: with ps; [
|
ps: with ps; [
|
||||||
|
# et-xmlfile
|
||||||
|
# exceptiongroup
|
||||||
|
# markdown-it-py
|
||||||
|
# mdurl
|
||||||
|
# munkres
|
||||||
|
# musicbrainzngs
|
||||||
|
# openpyxl
|
||||||
|
# pygments
|
||||||
|
# rich
|
||||||
|
# sniffio
|
||||||
anyio
|
anyio
|
||||||
beautifulsoup4
|
beautifulsoup4
|
||||||
beetcamp
|
beetcamp
|
||||||
@@ -45,6 +68,7 @@ let
|
|||||||
requests
|
requests
|
||||||
requests-ratelimiter
|
requests-ratelimiter
|
||||||
scipy
|
scipy
|
||||||
|
# setuptools
|
||||||
six
|
six
|
||||||
socksio
|
socksio
|
||||||
soupsieve
|
soupsieve
|
||||||
|
|||||||
@@ -0,0 +1,573 @@
|
|||||||
|
# Generated by pip2nix 0.8.0.dev1
|
||||||
|
# See https://github.com/nix-community/pip2nix
|
||||||
|
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
fetchurl,
|
||||||
|
fetchgit,
|
||||||
|
fetchhg,
|
||||||
|
}:
|
||||||
|
|
||||||
|
self: super: {
|
||||||
|
"PyYAML" = super.buildPythonPackage rec {
|
||||||
|
pname = "PyYAML";
|
||||||
|
version = "6.0.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz";
|
||||||
|
sha256 = "0gmwggzm0j0iprx074g5hah91y2f68sfhhldq0f8crddj7ndk16m";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"Unidecode" = super.buildPythonPackage rec {
|
||||||
|
pname = "Unidecode";
|
||||||
|
version = "1.3.8";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/84/b7/6ec57841fb67c98f52fc8e4a2d96df60059637cba077edc569a302a8ffc7/Unidecode-1.3.8-py3-none-any.whl";
|
||||||
|
sha256 = "0fgxj6h9lkjq4saynkjqf2wb9plsr5wyg3xxld482vv9wqfacc6i";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"anyio" = super.buildPythonPackage rec {
|
||||||
|
pname = "anyio";
|
||||||
|
version = "4.7.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a0/7a/4daaf3b6c08ad7ceffea4634ec206faeff697526421c20f07628c7372156/anyio-4.7.0-py3-none-any.whl";
|
||||||
|
sha256 = "0lp30wfn1hs2wvaz3wadzwwcb3l9ii4b1k78yzzscaxl79rc6q7a";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."exceptiongroup"
|
||||||
|
self."idna"
|
||||||
|
self."sniffio"
|
||||||
|
self."typing-extensions"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beautifulsoup4" = super.buildPythonPackage rec {
|
||||||
|
pname = "beautifulsoup4";
|
||||||
|
version = "4.12.3";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl";
|
||||||
|
sha256 = "1vc2w3wvnhbp2q287ilzjsiqyvd0vc5s52ysalz32481yk4ph25q";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."soupsieve"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beetcamp" = super.buildPythonPackage rec {
|
||||||
|
pname = "beetcamp";
|
||||||
|
version = "0.21.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/6c/d3/94cad1ba1e65a9445655968a6dcdd528cb1352e2389f0921a9f8c0ccd4a0/beetcamp-0.21.0-py3-none-any.whl";
|
||||||
|
sha256 = "08mxqmckg2fx9rkm5a1n9zs2sjccjj75vgxac22xjyi3fw1k0wz2";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
#self."beets" # its doesnt matter?
|
||||||
|
self."httpx"
|
||||||
|
self."packaging"
|
||||||
|
self."pycountry"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beets" = super.buildPythonPackage rec {
|
||||||
|
pname = "beets";
|
||||||
|
version = "2.2.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/f3/44/1c53c2ac111e5526083e58f50a22504ad7c609be1ce660c0339938a42c33/beets-2.2.0-py3-none-any.whl";
|
||||||
|
sha256 = "076hl1j74cgyh6n1piwprnzb89gihy2vmajm8lzfhy1jjcrfrpbd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."PyYAML"
|
||||||
|
self."Unidecode"
|
||||||
|
self."confuse"
|
||||||
|
self."jellyfish"
|
||||||
|
self."mediafile"
|
||||||
|
self."munkres"
|
||||||
|
self."musicbrainzngs"
|
||||||
|
self."platformdirs"
|
||||||
|
self."typing-extensions"
|
||||||
|
# ext
|
||||||
|
self."requests" # For spotify, deezer, embedart, fetchart, lyrics
|
||||||
|
self."python3-discogs-client" # For discogs
|
||||||
|
self."pylast" # For lastgenre
|
||||||
|
# self."beetcamp" # Another
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"certifi" = super.buildPythonPackage rec {
|
||||||
|
pname = "certifi";
|
||||||
|
version = "2024.12.14";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl";
|
||||||
|
sha256 = "0mpccx4yscnk6rhl12fk8wpgwrpq62m4w23k27y4wip9bfjgfx8j";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"charset-normalizer" = super.buildPythonPackage rec {
|
||||||
|
pname = "charset-normalizer";
|
||||||
|
version = "3.4.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz";
|
||||||
|
sha256 = "18sfsqpdmxbddr3g3yg0sln10ghq4sp0vl2xb1b5p9v8rlc1y9a4";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"colorama" = super.buildPythonPackage rec {
|
||||||
|
pname = "colorama";
|
||||||
|
version = "0.4.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl";
|
||||||
|
sha256 = "1ijz53xpmxds2qf02l9yf0rnp7bznwh3ci4xkw8wmh5cyn8rj7ag";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"confuse" = super.buildPythonPackage rec {
|
||||||
|
pname = "confuse";
|
||||||
|
version = "2.0.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/32/1f/cf496479814d41fc252004482deeb90b740b4a6a391a3355c0b11d7e0abf/confuse-2.0.1-py3-none-any.whl";
|
||||||
|
sha256 = "0amxm8vnxcayh7inahvj3fzj33n8gs8lvcfaicqrpjz2f2y5p7lv";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."PyYAML"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"exceptiongroup" = super.buildPythonPackage rec {
|
||||||
|
pname = "exceptiongroup";
|
||||||
|
version = "1.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "044alxyhkfdlr5z3xlpnf5lv78310bnsgnkdmm669l0k1ip1w4ad";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."typing-extensions"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"filetype" = super.buildPythonPackage rec {
|
||||||
|
pname = "filetype";
|
||||||
|
version = "1.2.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "099d3igvmfcdgg9dcylz8advva5n3qpplsf8gb7l24hqh1l1prvw";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"h11" = super.buildPythonPackage rec {
|
||||||
|
pname = "h11";
|
||||||
|
version = "0.14.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl";
|
||||||
|
sha256 = "0qd7z9p38dwx215048q708vd1sn2abdh1mb3hg66ii2ip324mzp3";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"httpcore" = super.buildPythonPackage rec {
|
||||||
|
pname = "httpcore";
|
||||||
|
version = "1.0.7";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl";
|
||||||
|
sha256 = "1p8f8bnrir1d50s6z19jndca98qghgqrr7rx6syxaq627psgizx3";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."certifi"
|
||||||
|
self."h11"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"httpx" = super.buildPythonPackage rec {
|
||||||
|
pname = "httpx";
|
||||||
|
version = "0.28.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl";
|
||||||
|
sha256 = "1barpaw8as8xb7b2bsmzdmdbq5nqljlq5jhlz3xcgy0hq76gq2fr";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."anyio"
|
||||||
|
self."certifi"
|
||||||
|
self."httpcore"
|
||||||
|
self."idna"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"idna" = super.buildPythonPackage rec {
|
||||||
|
pname = "idna";
|
||||||
|
version = "3.10";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl";
|
||||||
|
sha256 = "1lw72a5swas501zvkpd6dsryj5hzjijqxs3526kbp7151md1jvcl";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "jellyfish" = super.buildPythonPackage rec { # That is Rust package
|
||||||
|
# pname = "jellyfish";
|
||||||
|
# version = "1.1.3";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/5b/3a/f607d7d44ee5cbad51ce8e2966bde112789eeb53633558f500bc4e44c053/jellyfish-1.1.3.tar.gz";
|
||||||
|
# sha256 = "17wgy021wsp8jj95v638kfk34r9yzbry3q7shnglj5npmgfs22v5";
|
||||||
|
# };
|
||||||
|
# format = "setuptools";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
"langdetect" = super.buildPythonPackage rec {
|
||||||
|
pname = "langdetect";
|
||||||
|
version = "1.0.9";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/0e/72/a3add0e4eec4eb9e2569554f7c70f4a3c27712f40e3284d483e88094cc0e/langdetect-1.0.9.tar.gz";
|
||||||
|
sha256 = "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."six"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"mediafile" = super.buildPythonPackage rec {
|
||||||
|
pname = "mediafile";
|
||||||
|
version = "0.13.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/9f/b0/363b4d1443a593398f9d3784f406385f075e8fd0991c35356e73fc37638a/mediafile-0.13.0-py3-none-any.whl";
|
||||||
|
sha256 = "1jqlwmwpgn0fxkbxrj8y5a4wr3ikwgs2rsc678hbaw861qyii3fd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."filetype"
|
||||||
|
self."mutagen"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"munkres" = super.buildPythonPackage rec {
|
||||||
|
pname = "munkres";
|
||||||
|
version = "1.1.4";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/90/ab/0301c945a704218bc9435f0e3c88884f6b19ef234d8899fb47ce1ccfd0c9/munkres-1.1.4-py2.py3-none-any.whl";
|
||||||
|
sha256 = "0apdpkbhg4wq5pis5d2mkqg46ikwix5nwcm2mrjxi04499yqc0bb";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"musicbrainzngs" = super.buildPythonPackage rec {
|
||||||
|
pname = "musicbrainzngs";
|
||||||
|
version = "0.7.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/6d/fd/cef7b2580436910ccd2f8d3deec0f3c81743e15c0eb5b97dde3fbf33c0c8/musicbrainzngs-0.7.1-py2.py3-none-any.whl";
|
||||||
|
sha256 = "040s1q4ia6gl2bjjxrjs384980854s9za28b55r0lk0hfpwshhg8";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"mutagen" = super.buildPythonPackage rec {
|
||||||
|
pname = "mutagen";
|
||||||
|
version = "1.47.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b0/7a/620f945b96be1f6ee357d211d5bf74ab1b7fe72a9f1525aafbfe3aee6875/mutagen-1.47.0-py3-none-any.whl";
|
||||||
|
sha256 = "06d7miq4z6m7j8rx2czkmqhgbjb2bwjagfz5v0wraylhqm86zngd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"oauthlib" = super.buildPythonPackage rec {
|
||||||
|
pname = "oauthlib";
|
||||||
|
version = "3.2.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl";
|
||||||
|
sha256 = "1jpvcxq0xr3z50fdg828in1icgz8cfcy3sc04r85vqhkmjdg4fc1";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"packaging" = super.buildPythonPackage rec {
|
||||||
|
pname = "packaging";
|
||||||
|
version = "24.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl";
|
||||||
|
sha256 = "0nd7a421brjgd4prm8fbs8a6bcv4n1yplgxalgs02p16rnyb3aq9";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pillow" = super.buildPythonPackage rec {
|
||||||
|
pname = "pillow";
|
||||||
|
version = "11.0.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz";
|
||||||
|
sha256 = "0fbpcwgiac19ap0h1qa1imsqhq6vxv8kg67zkgm3y05c4jpwpfkj";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"platformdirs" = super.buildPythonPackage rec {
|
||||||
|
pname = "platformdirs";
|
||||||
|
version = "4.3.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl";
|
||||||
|
sha256 = "1yy39iay8fdb3c1r4gm011lla1sk1mc9fsw300wi1f4a83hpbrbk";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pycountry" = super.buildPythonPackage rec {
|
||||||
|
pname = "pycountry";
|
||||||
|
version = "24.6.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b1/ec/1fb891d8a2660716aadb2143235481d15ed1cbfe3ad669194690b0604492/pycountry-24.6.1-py3-none-any.whl";
|
||||||
|
sha256 = "0vz0dhfkbjld5jagh9wafwy27k5d83bmd5fkxy74y8fp3hwzp97i";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pylast" = super.buildPythonPackage rec {
|
||||||
|
pname = "pylast";
|
||||||
|
version = "5.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/9b/57/e25206d012afe3fe5e3336a875babb5413b81c00706411a645a38185ad3b/pylast-5.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "023ki92jgc9mk2k9c4li48zf23yz2wn022m1rsjj9bsvn3f7ri2c";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."httpx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"python-dateutil" = super.buildPythonPackage rec {
|
||||||
|
pname = "python-dateutil";
|
||||||
|
version = "2.9.0.post0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "09q48zvsbagfa3w87zkd2c5xl54wmb9rf2hlr20j4a5fzxxvrcm8";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."six"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"python3-discogs-client" = super.buildPythonPackage rec {
|
||||||
|
pname = "python3-discogs-client";
|
||||||
|
version = "2.7.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/02/eb/b3d321440728addb72296e75ae2bfddd8fd3518b5ce5bd54a1ad821227a2/python3_discogs_client-2.7.1-py3-none-any.whl";
|
||||||
|
sha256 = "0i3lfdn2ncxfvmmldg31gmdv7vdcicjl890mihncxa48yb9g7daz";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."oauthlib"
|
||||||
|
self."python-dateutil"
|
||||||
|
self."requests"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"requests" = super.buildPythonPackage rec {
|
||||||
|
pname = "requests";
|
||||||
|
version = "2.32.3";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl";
|
||||||
|
sha256 = "1inwsrhx0m16q0wa1z6dfm8i8xkrfns73xm25arcwwy70gz1qxkh";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."certifi"
|
||||||
|
self."charset-normalizer"
|
||||||
|
self."idna"
|
||||||
|
self."urllib3"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"six" = super.buildPythonPackage rec {
|
||||||
|
pname = "six";
|
||||||
|
version = "1.17.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "0x1jdic712dylbnyiqdj4xyxrlx0gaacynmbmkfiym4hxn8z68a7";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"sniffio" = super.buildPythonPackage rec {
|
||||||
|
pname = "sniffio";
|
||||||
|
version = "1.3.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl";
|
||||||
|
sha256 = "18i50l85yppn9w1ily8m342yd577h0bg8y24hkfzvq7is4ca8v9g";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"soupsieve" = super.buildPythonPackage rec {
|
||||||
|
pname = "soupsieve";
|
||||||
|
version = "2.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl";
|
||||||
|
sha256 = "1jfc0b39kwnh4n30458mr8gmh50mx3k5zxghm6sy9djgdvq4yb77";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"typing-extensions" = super.buildPythonPackage rec {
|
||||||
|
pname = "typing-extensions";
|
||||||
|
version = "4.12.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl";
|
||||||
|
sha256 = "03bhjivpvdhn4c3x0963z89hv7b5vxr415akd1fgiwz0a41wmr84";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"urllib3" = super.buildPythonPackage rec {
|
||||||
|
pname = "urllib3";
|
||||||
|
version = "2.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "1pz380a93mhdrzx5003inw5pm5n0fh1xazcbnjxzsyw6d79rmvhw";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
xlib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
depsOverlay = import ./dependencies.nix {
|
||||||
|
# ./dependencies-full.nix if broken
|
||||||
|
inherit (pkgs) fetchurl fetchgit fetchhg;
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
python3 = pkgs.python3.override {
|
||||||
|
packageOverrides = depsOverlay;
|
||||||
|
};
|
||||||
|
beetsEnv = python3.withPackages (
|
||||||
|
ps: with pkgs.python313Packages; [
|
||||||
|
#pkgs.beets # Из nixpkgs (проверь версию!) или оверлея
|
||||||
|
beautifulsoup4 # Из nixpkgs
|
||||||
|
certifi # Из nixpkgs
|
||||||
|
requests # Из nixpkgs
|
||||||
|
pyyaml # Из nixpkgs
|
||||||
|
unidecode # Из nixpkgs
|
||||||
|
pylast # Из nixpkgs
|
||||||
|
jellyfish # Из nixpkgs, если есть, или оверлея
|
||||||
|
confuse
|
||||||
|
#httpcore
|
||||||
|
httpx
|
||||||
|
packaging
|
||||||
|
pycountry
|
||||||
|
typing-extensions
|
||||||
|
anyio
|
||||||
|
ps.python3-discogs-client
|
||||||
|
ps.beetcamp # Из оверлея
|
||||||
|
]
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"z /mnt/beets 0700 ${xlib.device.username} users -" # beets absolute paths
|
||||||
|
];
|
||||||
|
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
"${xlib.device.username}" = {
|
||||||
|
packages = [
|
||||||
|
beetsEnv
|
||||||
|
pkgs.beets
|
||||||
|
pkgs.mp3gain
|
||||||
|
pkgs.imagemagick
|
||||||
|
#pkgs.ffmpeg
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,573 @@
|
|||||||
|
# Generated by pip2nix 0.8.0.dev1
|
||||||
|
# See https://github.com/nix-community/pip2nix
|
||||||
|
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
fetchurl,
|
||||||
|
fetchgit,
|
||||||
|
fetchhg,
|
||||||
|
}:
|
||||||
|
|
||||||
|
self: super: {
|
||||||
|
"PyYAML" = super.buildPythonPackage rec {
|
||||||
|
pname = "PyYAML";
|
||||||
|
version = "6.0.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz";
|
||||||
|
sha256 = "0gmwggzm0j0iprx074g5hah91y2f68sfhhldq0f8crddj7ndk16m";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"Unidecode" = super.buildPythonPackage rec {
|
||||||
|
pname = "Unidecode";
|
||||||
|
version = "1.3.8";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/84/b7/6ec57841fb67c98f52fc8e4a2d96df60059637cba077edc569a302a8ffc7/Unidecode-1.3.8-py3-none-any.whl";
|
||||||
|
sha256 = "0fgxj6h9lkjq4saynkjqf2wb9plsr5wyg3xxld482vv9wqfacc6i";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"anyio" = super.buildPythonPackage rec {
|
||||||
|
pname = "anyio";
|
||||||
|
version = "4.7.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a0/7a/4daaf3b6c08ad7ceffea4634ec206faeff697526421c20f07628c7372156/anyio-4.7.0-py3-none-any.whl";
|
||||||
|
sha256 = "0lp30wfn1hs2wvaz3wadzwwcb3l9ii4b1k78yzzscaxl79rc6q7a";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."exceptiongroup"
|
||||||
|
self."idna"
|
||||||
|
self."sniffio"
|
||||||
|
self."typing-extensions"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beautifulsoup4" = super.buildPythonPackage rec {
|
||||||
|
pname = "beautifulsoup4";
|
||||||
|
version = "4.12.3";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl";
|
||||||
|
sha256 = "1vc2w3wvnhbp2q287ilzjsiqyvd0vc5s52ysalz32481yk4ph25q";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."soupsieve"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beetcamp" = super.buildPythonPackage rec {
|
||||||
|
pname = "beetcamp";
|
||||||
|
version = "0.21.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/6c/d3/94cad1ba1e65a9445655968a6dcdd528cb1352e2389f0921a9f8c0ccd4a0/beetcamp-0.21.0-py3-none-any.whl";
|
||||||
|
sha256 = "08mxqmckg2fx9rkm5a1n9zs2sjccjj75vgxac22xjyi3fw1k0wz2";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
#self."beets" # its doesnt matter?
|
||||||
|
self."httpx"
|
||||||
|
self."packaging"
|
||||||
|
self."pycountry"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beets" = super.buildPythonPackage rec {
|
||||||
|
pname = "beets";
|
||||||
|
version = "2.2.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/f3/44/1c53c2ac111e5526083e58f50a22504ad7c609be1ce660c0339938a42c33/beets-2.2.0-py3-none-any.whl";
|
||||||
|
sha256 = "076hl1j74cgyh6n1piwprnzb89gihy2vmajm8lzfhy1jjcrfrpbd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."PyYAML"
|
||||||
|
self."Unidecode"
|
||||||
|
self."confuse"
|
||||||
|
self."jellyfish"
|
||||||
|
self."mediafile"
|
||||||
|
self."munkres"
|
||||||
|
self."musicbrainzngs"
|
||||||
|
self."platformdirs"
|
||||||
|
self."typing-extensions"
|
||||||
|
# ext
|
||||||
|
self."requests" # For spotify, deezer, embedart, fetchart, lyrics
|
||||||
|
self."python3-discogs-client" # For discogs
|
||||||
|
self."pylast" # For lastgenre
|
||||||
|
self."beetcamp" # Another
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"certifi" = super.buildPythonPackage rec {
|
||||||
|
pname = "certifi";
|
||||||
|
version = "2024.12.14";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl";
|
||||||
|
sha256 = "0mpccx4yscnk6rhl12fk8wpgwrpq62m4w23k27y4wip9bfjgfx8j";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"charset-normalizer" = super.buildPythonPackage rec {
|
||||||
|
pname = "charset-normalizer";
|
||||||
|
version = "3.4.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz";
|
||||||
|
sha256 = "18sfsqpdmxbddr3g3yg0sln10ghq4sp0vl2xb1b5p9v8rlc1y9a4";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"colorama" = super.buildPythonPackage rec {
|
||||||
|
pname = "colorama";
|
||||||
|
version = "0.4.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl";
|
||||||
|
sha256 = "1ijz53xpmxds2qf02l9yf0rnp7bznwh3ci4xkw8wmh5cyn8rj7ag";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"confuse" = super.buildPythonPackage rec {
|
||||||
|
pname = "confuse";
|
||||||
|
version = "2.0.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/32/1f/cf496479814d41fc252004482deeb90b740b4a6a391a3355c0b11d7e0abf/confuse-2.0.1-py3-none-any.whl";
|
||||||
|
sha256 = "0amxm8vnxcayh7inahvj3fzj33n8gs8lvcfaicqrpjz2f2y5p7lv";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."PyYAML"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"exceptiongroup" = super.buildPythonPackage rec {
|
||||||
|
pname = "exceptiongroup";
|
||||||
|
version = "1.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "044alxyhkfdlr5z3xlpnf5lv78310bnsgnkdmm669l0k1ip1w4ad";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."typing-extensions"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"filetype" = super.buildPythonPackage rec {
|
||||||
|
pname = "filetype";
|
||||||
|
version = "1.2.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "099d3igvmfcdgg9dcylz8advva5n3qpplsf8gb7l24hqh1l1prvw";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"h11" = super.buildPythonPackage rec {
|
||||||
|
pname = "h11";
|
||||||
|
version = "0.14.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl";
|
||||||
|
sha256 = "0qd7z9p38dwx215048q708vd1sn2abdh1mb3hg66ii2ip324mzp3";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"httpcore" = super.buildPythonPackage rec {
|
||||||
|
pname = "httpcore";
|
||||||
|
version = "1.0.7";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl";
|
||||||
|
sha256 = "1p8f8bnrir1d50s6z19jndca98qghgqrr7rx6syxaq627psgizx3";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."certifi"
|
||||||
|
self."h11"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"httpx" = super.buildPythonPackage rec {
|
||||||
|
pname = "httpx";
|
||||||
|
version = "0.28.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl";
|
||||||
|
sha256 = "1barpaw8as8xb7b2bsmzdmdbq5nqljlq5jhlz3xcgy0hq76gq2fr";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."anyio"
|
||||||
|
self."certifi"
|
||||||
|
self."httpcore"
|
||||||
|
self."idna"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"idna" = super.buildPythonPackage rec {
|
||||||
|
pname = "idna";
|
||||||
|
version = "3.10";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl";
|
||||||
|
sha256 = "1lw72a5swas501zvkpd6dsryj5hzjijqxs3526kbp7151md1jvcl";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "jellyfish" = super.buildPythonPackage rec { # That is Rust package
|
||||||
|
# pname = "jellyfish";
|
||||||
|
# version = "1.1.3";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/5b/3a/f607d7d44ee5cbad51ce8e2966bde112789eeb53633558f500bc4e44c053/jellyfish-1.1.3.tar.gz";
|
||||||
|
# sha256 = "17wgy021wsp8jj95v638kfk34r9yzbry3q7shnglj5npmgfs22v5";
|
||||||
|
# };
|
||||||
|
# format = "setuptools";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
"langdetect" = super.buildPythonPackage rec {
|
||||||
|
pname = "langdetect";
|
||||||
|
version = "1.0.9";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/0e/72/a3add0e4eec4eb9e2569554f7c70f4a3c27712f40e3284d483e88094cc0e/langdetect-1.0.9.tar.gz";
|
||||||
|
sha256 = "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."six"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"mediafile" = super.buildPythonPackage rec {
|
||||||
|
pname = "mediafile";
|
||||||
|
version = "0.13.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/9f/b0/363b4d1443a593398f9d3784f406385f075e8fd0991c35356e73fc37638a/mediafile-0.13.0-py3-none-any.whl";
|
||||||
|
sha256 = "1jqlwmwpgn0fxkbxrj8y5a4wr3ikwgs2rsc678hbaw861qyii3fd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."filetype"
|
||||||
|
self."mutagen"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"munkres" = super.buildPythonPackage rec {
|
||||||
|
pname = "munkres";
|
||||||
|
version = "1.1.4";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/90/ab/0301c945a704218bc9435f0e3c88884f6b19ef234d8899fb47ce1ccfd0c9/munkres-1.1.4-py2.py3-none-any.whl";
|
||||||
|
sha256 = "0apdpkbhg4wq5pis5d2mkqg46ikwix5nwcm2mrjxi04499yqc0bb";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"musicbrainzngs" = super.buildPythonPackage rec {
|
||||||
|
pname = "musicbrainzngs";
|
||||||
|
version = "0.7.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/6d/fd/cef7b2580436910ccd2f8d3deec0f3c81743e15c0eb5b97dde3fbf33c0c8/musicbrainzngs-0.7.1-py2.py3-none-any.whl";
|
||||||
|
sha256 = "040s1q4ia6gl2bjjxrjs384980854s9za28b55r0lk0hfpwshhg8";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"mutagen" = super.buildPythonPackage rec {
|
||||||
|
pname = "mutagen";
|
||||||
|
version = "1.47.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b0/7a/620f945b96be1f6ee357d211d5bf74ab1b7fe72a9f1525aafbfe3aee6875/mutagen-1.47.0-py3-none-any.whl";
|
||||||
|
sha256 = "06d7miq4z6m7j8rx2czkmqhgbjb2bwjagfz5v0wraylhqm86zngd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"oauthlib" = super.buildPythonPackage rec {
|
||||||
|
pname = "oauthlib";
|
||||||
|
version = "3.2.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl";
|
||||||
|
sha256 = "1jpvcxq0xr3z50fdg828in1icgz8cfcy3sc04r85vqhkmjdg4fc1";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"packaging" = super.buildPythonPackage rec {
|
||||||
|
pname = "packaging";
|
||||||
|
version = "24.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl";
|
||||||
|
sha256 = "0nd7a421brjgd4prm8fbs8a6bcv4n1yplgxalgs02p16rnyb3aq9";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pillow" = super.buildPythonPackage rec {
|
||||||
|
pname = "pillow";
|
||||||
|
version = "11.0.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz";
|
||||||
|
sha256 = "0fbpcwgiac19ap0h1qa1imsqhq6vxv8kg67zkgm3y05c4jpwpfkj";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"platformdirs" = super.buildPythonPackage rec {
|
||||||
|
pname = "platformdirs";
|
||||||
|
version = "4.3.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl";
|
||||||
|
sha256 = "1yy39iay8fdb3c1r4gm011lla1sk1mc9fsw300wi1f4a83hpbrbk";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pycountry" = super.buildPythonPackage rec {
|
||||||
|
pname = "pycountry";
|
||||||
|
version = "24.6.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b1/ec/1fb891d8a2660716aadb2143235481d15ed1cbfe3ad669194690b0604492/pycountry-24.6.1-py3-none-any.whl";
|
||||||
|
sha256 = "0vz0dhfkbjld5jagh9wafwy27k5d83bmd5fkxy74y8fp3hwzp97i";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pylast" = super.buildPythonPackage rec {
|
||||||
|
pname = "pylast";
|
||||||
|
version = "5.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/9b/57/e25206d012afe3fe5e3336a875babb5413b81c00706411a645a38185ad3b/pylast-5.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "023ki92jgc9mk2k9c4li48zf23yz2wn022m1rsjj9bsvn3f7ri2c";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."httpx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"python-dateutil" = super.buildPythonPackage rec {
|
||||||
|
pname = "python-dateutil";
|
||||||
|
version = "2.9.0.post0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "09q48zvsbagfa3w87zkd2c5xl54wmb9rf2hlr20j4a5fzxxvrcm8";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."six"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"python3-discogs-client" = super.buildPythonPackage rec {
|
||||||
|
pname = "python3-discogs-client";
|
||||||
|
version = "2.7.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/02/eb/b3d321440728addb72296e75ae2bfddd8fd3518b5ce5bd54a1ad821227a2/python3_discogs_client-2.7.1-py3-none-any.whl";
|
||||||
|
sha256 = "0i3lfdn2ncxfvmmldg31gmdv7vdcicjl890mihncxa48yb9g7daz";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."oauthlib"
|
||||||
|
self."python-dateutil"
|
||||||
|
self."requests"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"requests" = super.buildPythonPackage rec {
|
||||||
|
pname = "requests";
|
||||||
|
version = "2.32.3";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl";
|
||||||
|
sha256 = "1inwsrhx0m16q0wa1z6dfm8i8xkrfns73xm25arcwwy70gz1qxkh";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."certifi"
|
||||||
|
self."charset-normalizer"
|
||||||
|
self."idna"
|
||||||
|
self."urllib3"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"six" = super.buildPythonPackage rec {
|
||||||
|
pname = "six";
|
||||||
|
version = "1.17.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "0x1jdic712dylbnyiqdj4xyxrlx0gaacynmbmkfiym4hxn8z68a7";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"sniffio" = super.buildPythonPackage rec {
|
||||||
|
pname = "sniffio";
|
||||||
|
version = "1.3.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl";
|
||||||
|
sha256 = "18i50l85yppn9w1ily8m342yd577h0bg8y24hkfzvq7is4ca8v9g";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"soupsieve" = super.buildPythonPackage rec {
|
||||||
|
pname = "soupsieve";
|
||||||
|
version = "2.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl";
|
||||||
|
sha256 = "1jfc0b39kwnh4n30458mr8gmh50mx3k5zxghm6sy9djgdvq4yb77";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"typing-extensions" = super.buildPythonPackage rec {
|
||||||
|
pname = "typing-extensions";
|
||||||
|
version = "4.12.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl";
|
||||||
|
sha256 = "03bhjivpvdhn4c3x0963z89hv7b5vxr415akd1fgiwz0a41wmr84";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"urllib3" = super.buildPythonPackage rec {
|
||||||
|
pname = "urllib3";
|
||||||
|
version = "2.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "1pz380a93mhdrzx5003inw5pm5n0fh1xazcbnjxzsyw6d79rmvhw";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,573 @@
|
|||||||
|
# Generated by pip2nix 0.8.0.dev1
|
||||||
|
# See https://github.com/nix-community/pip2nix
|
||||||
|
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
fetchurl,
|
||||||
|
fetchgit,
|
||||||
|
fetchhg,
|
||||||
|
}:
|
||||||
|
|
||||||
|
self: super: {
|
||||||
|
# "PyYAML" = super.buildPythonPackage rec {
|
||||||
|
# pname = "PyYAML";
|
||||||
|
# version = "6.0.2";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz";
|
||||||
|
# sha256 = "0gmwggzm0j0iprx074g5hah91y2f68sfhhldq0f8crddj7ndk16m";
|
||||||
|
# };
|
||||||
|
# format = "setuptools";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
# "Unidecode" = super.buildPythonPackage rec {
|
||||||
|
# pname = "Unidecode";
|
||||||
|
# version = "1.3.8";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/84/b7/6ec57841fb67c98f52fc8e4a2d96df60059637cba077edc569a302a8ffc7/Unidecode-1.3.8-py3-none-any.whl";
|
||||||
|
# sha256 = "0fgxj6h9lkjq4saynkjqf2wb9plsr5wyg3xxld482vv9wqfacc6i";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
# "anyio" = super.buildPythonPackage rec {
|
||||||
|
# pname = "anyio";
|
||||||
|
# version = "4.7.0";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/a0/7a/4daaf3b6c08ad7ceffea4634ec206faeff697526421c20f07628c7372156/anyio-4.7.0-py3-none-any.whl";
|
||||||
|
# sha256 = "0lp30wfn1hs2wvaz3wadzwwcb3l9ii4b1k78yzzscaxl79rc6q7a";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."exceptiongroup"
|
||||||
|
# self."idna"
|
||||||
|
# self."sniffio"
|
||||||
|
# self."typing-extensions"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# "beautifulsoup4" = super.buildPythonPackage rec {
|
||||||
|
# pname = "beautifulsoup4";
|
||||||
|
# version = "4.12.3";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl";
|
||||||
|
# sha256 = "1vc2w3wvnhbp2q287ilzjsiqyvd0vc5s52ysalz32481yk4ph25q";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."soupsieve"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
"beetcamp" = super.buildPythonPackage rec {
|
||||||
|
pname = "beetcamp";
|
||||||
|
version = "0.21.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/6c/d3/94cad1ba1e65a9445655968a6dcdd528cb1352e2389f0921a9f8c0ccd4a0/beetcamp-0.21.0-py3-none-any.whl";
|
||||||
|
sha256 = "08mxqmckg2fx9rkm5a1n9zs2sjccjj75vgxac22xjyi3fw1k0wz2";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."beets" # its doesnt matter?
|
||||||
|
# self."httpx"
|
||||||
|
# self."packaging"
|
||||||
|
# self."pycountry"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"beets" = super.buildPythonPackage rec {
|
||||||
|
pname = "beets";
|
||||||
|
version = "2.2.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/f3/44/1c53c2ac111e5526083e58f50a22504ad7c609be1ce660c0339938a42c33/beets-2.2.0-py3-none-any.whl";
|
||||||
|
sha256 = "076hl1j74cgyh6n1piwprnzb89gihy2vmajm8lzfhy1jjcrfrpbd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
#self."PyYAML"
|
||||||
|
#self."Unidecode"
|
||||||
|
#self."confuse"
|
||||||
|
#self."jellyfish"
|
||||||
|
self."mediafile"
|
||||||
|
self."munkres"
|
||||||
|
self."musicbrainzngs"
|
||||||
|
self."platformdirs"
|
||||||
|
#self."typing-extensions"
|
||||||
|
# ext
|
||||||
|
#self."requests" # For spotify, deezer, embedart, fetchart, lyrics
|
||||||
|
self."python3-discogs-client" # For discogs
|
||||||
|
#self."pylast" # For lastgenre
|
||||||
|
#self."beetcamp" # Another
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# "certifi" = super.buildPythonPackage rec {
|
||||||
|
# pname = "certifi";
|
||||||
|
# version = "2024.12.14";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl";
|
||||||
|
# sha256 = "0mpccx4yscnk6rhl12fk8wpgwrpq62m4w23k27y4wip9bfjgfx8j";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
"charset-normalizer" = super.buildPythonPackage rec {
|
||||||
|
pname = "charset-normalizer";
|
||||||
|
version = "3.4.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz";
|
||||||
|
sha256 = "18sfsqpdmxbddr3g3yg0sln10ghq4sp0vl2xb1b5p9v8rlc1y9a4";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"colorama" = super.buildPythonPackage rec {
|
||||||
|
pname = "colorama";
|
||||||
|
version = "0.4.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl";
|
||||||
|
sha256 = "1ijz53xpmxds2qf02l9yf0rnp7bznwh3ci4xkw8wmh5cyn8rj7ag";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "confuse" = super.buildPythonPackage rec {
|
||||||
|
# pname = "confuse";
|
||||||
|
# version = "2.0.1";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/32/1f/cf496479814d41fc252004482deeb90b740b4a6a391a3355c0b11d7e0abf/confuse-2.0.1-py3-none-any.whl";
|
||||||
|
# sha256 = "0amxm8vnxcayh7inahvj3fzj33n8gs8lvcfaicqrpjz2f2y5p7lv";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."PyYAML"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
"exceptiongroup" = super.buildPythonPackage rec {
|
||||||
|
pname = "exceptiongroup";
|
||||||
|
version = "1.3.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl";
|
||||||
|
sha256 = "044alxyhkfdlr5z3xlpnf5lv78310bnsgnkdmm669l0k1ip1w4ad";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."typing-extensions"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"filetype" = super.buildPythonPackage rec {
|
||||||
|
pname = "filetype";
|
||||||
|
version = "1.2.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "099d3igvmfcdgg9dcylz8advva5n3qpplsf8gb7l24hqh1l1prvw";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"h11" = super.buildPythonPackage rec {
|
||||||
|
pname = "h11";
|
||||||
|
version = "0.14.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl";
|
||||||
|
sha256 = "0qd7z9p38dwx215048q708vd1sn2abdh1mb3hg66ii2ip324mzp3";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "httpcore" = super.buildPythonPackage rec {
|
||||||
|
# pname = "httpcore";
|
||||||
|
# version = "1.0.7";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl";
|
||||||
|
# sha256 = "1p8f8bnrir1d50s6z19jndca98qghgqrr7rx6syxaq627psgizx3";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."certifi"
|
||||||
|
# self."h11"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# "httpx" = super.buildPythonPackage rec {
|
||||||
|
# pname = "httpx";
|
||||||
|
# version = "0.28.1";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl";
|
||||||
|
# sha256 = "1barpaw8as8xb7b2bsmzdmdbq5nqljlq5jhlz3xcgy0hq76gq2fr";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."anyio"
|
||||||
|
# self."certifi"
|
||||||
|
# self."httpcore"
|
||||||
|
# self."idna"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
"idna" = super.buildPythonPackage rec {
|
||||||
|
pname = "idna";
|
||||||
|
version = "3.10";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl";
|
||||||
|
sha256 = "1lw72a5swas501zvkpd6dsryj5hzjijqxs3526kbp7151md1jvcl";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "jellyfish" = super.buildPythonPackage rec { # That is Rust package
|
||||||
|
# pname = "jellyfish";
|
||||||
|
# version = "1.1.3";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/5b/3a/f607d7d44ee5cbad51ce8e2966bde112789eeb53633558f500bc4e44c053/jellyfish-1.1.3.tar.gz";
|
||||||
|
# sha256 = "17wgy021wsp8jj95v638kfk34r9yzbry3q7shnglj5npmgfs22v5";
|
||||||
|
# };
|
||||||
|
# format = "setuptools";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
"langdetect" = super.buildPythonPackage rec {
|
||||||
|
pname = "langdetect";
|
||||||
|
version = "1.0.9";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/0e/72/a3add0e4eec4eb9e2569554f7c70f4a3c27712f40e3284d483e88094cc0e/langdetect-1.0.9.tar.gz";
|
||||||
|
sha256 = "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."six"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"mediafile" = super.buildPythonPackage rec {
|
||||||
|
pname = "mediafile";
|
||||||
|
version = "0.13.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/9f/b0/363b4d1443a593398f9d3784f406385f075e8fd0991c35356e73fc37638a/mediafile-0.13.0-py3-none-any.whl";
|
||||||
|
sha256 = "1jqlwmwpgn0fxkbxrj8y5a4wr3ikwgs2rsc678hbaw861qyii3fd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."filetype"
|
||||||
|
self."mutagen"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"munkres" = super.buildPythonPackage rec {
|
||||||
|
pname = "munkres";
|
||||||
|
version = "1.1.4";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/90/ab/0301c945a704218bc9435f0e3c88884f6b19ef234d8899fb47ce1ccfd0c9/munkres-1.1.4-py2.py3-none-any.whl";
|
||||||
|
sha256 = "0apdpkbhg4wq5pis5d2mkqg46ikwix5nwcm2mrjxi04499yqc0bb";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"musicbrainzngs" = super.buildPythonPackage rec {
|
||||||
|
pname = "musicbrainzngs";
|
||||||
|
version = "0.7.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/6d/fd/cef7b2580436910ccd2f8d3deec0f3c81743e15c0eb5b97dde3fbf33c0c8/musicbrainzngs-0.7.1-py2.py3-none-any.whl";
|
||||||
|
sha256 = "040s1q4ia6gl2bjjxrjs384980854s9za28b55r0lk0hfpwshhg8";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"mutagen" = super.buildPythonPackage rec {
|
||||||
|
pname = "mutagen";
|
||||||
|
version = "1.47.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b0/7a/620f945b96be1f6ee357d211d5bf74ab1b7fe72a9f1525aafbfe3aee6875/mutagen-1.47.0-py3-none-any.whl";
|
||||||
|
sha256 = "06d7miq4z6m7j8rx2czkmqhgbjb2bwjagfz5v0wraylhqm86zngd";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"oauthlib" = super.buildPythonPackage rec {
|
||||||
|
pname = "oauthlib";
|
||||||
|
version = "3.2.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl";
|
||||||
|
sha256 = "1jpvcxq0xr3z50fdg828in1icgz8cfcy3sc04r85vqhkmjdg4fc1";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"packaging" = super.buildPythonPackage rec {
|
||||||
|
pname = "packaging";
|
||||||
|
version = "24.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl";
|
||||||
|
sha256 = "0nd7a421brjgd4prm8fbs8a6bcv4n1yplgxalgs02p16rnyb3aq9";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pillow" = super.buildPythonPackage rec {
|
||||||
|
pname = "pillow";
|
||||||
|
version = "11.0.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz";
|
||||||
|
sha256 = "0fbpcwgiac19ap0h1qa1imsqhq6vxv8kg67zkgm3y05c4jpwpfkj";
|
||||||
|
};
|
||||||
|
format = "setuptools";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"platformdirs" = super.buildPythonPackage rec {
|
||||||
|
pname = "platformdirs";
|
||||||
|
version = "4.3.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl";
|
||||||
|
sha256 = "1yy39iay8fdb3c1r4gm011lla1sk1mc9fsw300wi1f4a83hpbrbk";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"pycountry" = super.buildPythonPackage rec {
|
||||||
|
pname = "pycountry";
|
||||||
|
version = "24.6.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b1/ec/1fb891d8a2660716aadb2143235481d15ed1cbfe3ad669194690b0604492/pycountry-24.6.1-py3-none-any.whl";
|
||||||
|
sha256 = "0vz0dhfkbjld5jagh9wafwy27k5d83bmd5fkxy74y8fp3hwzp97i";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "pylast" = super.buildPythonPackage rec {
|
||||||
|
# pname = "pylast";
|
||||||
|
# version = "5.3.0";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/9b/57/e25206d012afe3fe5e3336a875babb5413b81c00706411a645a38185ad3b/pylast-5.3.0-py3-none-any.whl";
|
||||||
|
# sha256 = "023ki92jgc9mk2k9c4li48zf23yz2wn022m1rsjj9bsvn3f7ri2c";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."httpx"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
"python-dateutil" = super.buildPythonPackage rec {
|
||||||
|
pname = "python-dateutil";
|
||||||
|
version = "2.9.0.post0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "09q48zvsbagfa3w87zkd2c5xl54wmb9rf2hlr20j4a5fzxxvrcm8";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."six"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"python3-discogs-client" = super.buildPythonPackage rec {
|
||||||
|
pname = "python3-discogs-client";
|
||||||
|
version = "2.7.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/02/eb/b3d321440728addb72296e75ae2bfddd8fd3518b5ce5bd54a1ad821227a2/python3_discogs_client-2.7.1-py3-none-any.whl";
|
||||||
|
sha256 = "0i3lfdn2ncxfvmmldg31gmdv7vdcicjl890mihncxa48yb9g7daz";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
self."oauthlib"
|
||||||
|
self."python-dateutil"
|
||||||
|
#self."requests"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# "requests" = super.buildPythonPackage rec {
|
||||||
|
# pname = "requests";
|
||||||
|
# version = "2.32.3";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl";
|
||||||
|
# sha256 = "1inwsrhx0m16q0wa1z6dfm8i8xkrfns73xm25arcwwy70gz1qxkh";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [
|
||||||
|
# self."certifi"
|
||||||
|
# self."charset-normalizer"
|
||||||
|
# self."idna"
|
||||||
|
# self."urllib3"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
"six" = super.buildPythonPackage rec {
|
||||||
|
pname = "six";
|
||||||
|
version = "1.17.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl";
|
||||||
|
sha256 = "0x1jdic712dylbnyiqdj4xyxrlx0gaacynmbmkfiym4hxn8z68a7";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"sniffio" = super.buildPythonPackage rec {
|
||||||
|
pname = "sniffio";
|
||||||
|
version = "1.3.1";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl";
|
||||||
|
sha256 = "18i50l85yppn9w1ily8m342yd577h0bg8y24hkfzvq7is4ca8v9g";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"soupsieve" = super.buildPythonPackage rec {
|
||||||
|
pname = "soupsieve";
|
||||||
|
version = "2.6";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl";
|
||||||
|
sha256 = "1jfc0b39kwnh4n30458mr8gmh50mx3k5zxghm6sy9djgdvq4yb77";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
"typing-extensions" = super.buildPythonPackage rec {
|
||||||
|
pname = "typing-extensions";
|
||||||
|
version = "4.12.2";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl";
|
||||||
|
sha256 = "03bhjivpvdhn4c3x0963z89hv7b5vxr415akd1fgiwz0a41wmr84";
|
||||||
|
};
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
buildInputs = [ ];
|
||||||
|
checkInputs = [ ];
|
||||||
|
nativeBuildInputs = [ ];
|
||||||
|
propagatedBuildInputs = [ ];
|
||||||
|
};
|
||||||
|
# "urllib3" = super.buildPythonPackage rec {
|
||||||
|
# pname = "urllib3";
|
||||||
|
# version = "2.3.0";
|
||||||
|
# src = fetchurl {
|
||||||
|
# url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl";
|
||||||
|
# sha256 = "1pz380a93mhdrzx5003inw5pm5n0fh1xazcbnjxzsyw6d79rmvhw";
|
||||||
|
# };
|
||||||
|
# format = "wheel";
|
||||||
|
# doCheck = false;
|
||||||
|
# buildInputs = [ ];
|
||||||
|
# checkInputs = [ ];
|
||||||
|
# nativeBuildInputs = [ ];
|
||||||
|
# propagatedBuildInputs = [ ];
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
xlib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
# let
|
||||||
|
# work = import inputs.nixpkgs-master { system = "x86_64-linux"; };
|
||||||
|
# in
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.openai-whisper
|
||||||
|
|
||||||
|
# (work.openai-whisper.override {
|
||||||
|
# torch = pkgs.python313Packages.torch-bin; # Используй бинарный torch с ROCm, чтобы обойти сборочную хуйню
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
# systemd.tmpfiles.rules = ["L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"];
|
||||||
|
# hardware.graphics.extraPackages = with pkgs.rocmPackages; [ clr clr.icd ];
|
||||||
|
|
||||||
|
#nixpkgs.config.rocmSupport = true;
|
||||||
|
}
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
sshdDir = "${config.user.home}/sshd";
|
|
||||||
sshdTmpDir = "${config.user.home}/sshd-tmp";
|
|
||||||
port = 8022;
|
|
||||||
serviceDir = "${config.user.home}/service";
|
|
||||||
|
|
||||||
# runit run-scripts (executable store paths, linked into ~/service).
|
|
||||||
sshdRun = pkgs.writeScriptBin "sshd-run" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
exec ${pkgs.openssh}/bin/sshd -f /etc/ssh/sshd_config -D
|
|
||||||
'';
|
|
||||||
svLogRun = pkgs.writeScriptBin "sv-log-run" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
mkdir -p ./main
|
|
||||||
exec ${pkgs.runit}/bin/svlogd -tt ./main
|
|
||||||
'';
|
|
||||||
svStart = pkgs.writeScriptBin "sv-start" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
exec ${pkgs.runit}/bin/runsvdir ${serviceDir}
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Minimal sshd server for LAN access (e.g. `ssh epral` from other hosts).
|
|
||||||
# nix-on-droid has no systemd: sshd is started manually via `sshd-start`
|
|
||||||
# (or from Termux:Boot / a session). The host key is generated once on the
|
|
||||||
# first activation and kept in ~/sshd (NOT /etc — it is rebuilt on every
|
|
||||||
# activation).
|
|
||||||
environment.etc."ssh/sshd_config".text = ''
|
|
||||||
HostKey ${sshdDir}/ssh_host_ed25519_key
|
|
||||||
Port ${toString port}
|
|
||||||
PasswordAuthentication no
|
|
||||||
AllowUsers ${config.user.userName}
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Generate the host key on first activation (idempotent).
|
|
||||||
build.activation.sshd = ''
|
|
||||||
if [[ ! -d "${sshdDir}" ]]; then
|
|
||||||
$DRY_RUN_CMD rm -rf "${sshdTmpDir}"
|
|
||||||
$DRY_RUN_CMD mkdir -p "${sshdTmpDir}"
|
|
||||||
$VERBOSE_ECHO "Generating sshd host key..."
|
|
||||||
$DRY_RUN_CMD ${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f "${sshdTmpDir}/ssh_host_ed25519_key" -N ""
|
|
||||||
$DRY_RUN_CMD mv "${sshdTmpDir}" "${sshdDir}"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
# nix-on-droid's session-init adds ~/.nix-defexpr/channels to NIX_PATH
|
|
||||||
# unconditionally; nix warns about the missing dir on every invocation.
|
|
||||||
# Making it exist silences the warning. Must be done in activation (not
|
|
||||||
# home-manager): ~/.nix-defexpr/channels is a symlink into
|
|
||||||
# ~/.local/state/nix/profiles/channels (dangling until it exists), which
|
|
||||||
# home-manager cannot link into. mkdir -p refuses to traverse a dangling
|
|
||||||
# symlink, so create the real target dir instead.
|
|
||||||
build.activation.nixdefexpr = ''
|
|
||||||
$DRY_RUN_CMD mkdir -p "${config.user.home}/.local/state/nix/profiles/channels/nixpkgs"
|
|
||||||
$DRY_RUN_CMD touch "${config.user.home}/.local/state/nix/profiles/channels/nixpkgs/.keep"
|
|
||||||
'';
|
|
||||||
|
|
||||||
# runit service tree: ~/service/<name>/{run,log/run}. run/ and log/run are
|
|
||||||
# symlinks into the nix store (read-only is fine; runsvdir writes only to
|
|
||||||
# the <name>/supervise dirs). /etc/service is symlinked for `sv status`.
|
|
||||||
# NOTE: tailscaled was removed — nixpkgs' linux build cannot run inside
|
|
||||||
# proot (SELinux blocks netlink; needs GOOS=android or root). Re-add only
|
|
||||||
# if that gets solved.
|
|
||||||
build.activation.services = ''
|
|
||||||
$DRY_RUN_CMD rm -rf ${serviceDir}/tailscaled
|
|
||||||
$DRY_RUN_CMD mkdir -p ${serviceDir}/sshd/log
|
|
||||||
$DRY_RUN_CMD ln -sfn ${sshdRun}/bin/sshd-run ${serviceDir}/sshd/run
|
|
||||||
$DRY_RUN_CMD ln -sfn ${svLogRun}/bin/sv-log-run ${serviceDir}/sshd/log/run
|
|
||||||
$DRY_RUN_CMD ln -sfn ${serviceDir} /etc/service
|
|
||||||
'';
|
|
||||||
|
|
||||||
environment.packages = [
|
|
||||||
pkgs.runit
|
|
||||||
|
|
||||||
# one command brings up all supervised services (sshd, ...)
|
|
||||||
svStart
|
|
||||||
|
|
||||||
# manual fallback for sshd only
|
|
||||||
(pkgs.writeScriptBin "sshd-start" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
exec ${pkgs.openssh}/bin/sshd -f /etc/ssh/sshd_config -D "$@"
|
|
||||||
'')
|
|
||||||
|
|
||||||
# termux-battery-status, termux-notification, termux-clipboard-*, ...
|
|
||||||
# Needs the Termux:API Android app (com.termux.api, from F-Droid) as the
|
|
||||||
# actual backend; see termux-api.nix.
|
|
||||||
(pkgs.callPackage ./termux-api.nix { })
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# termux-api — C binary + scripts that talk to the Termux:API Android app.
|
|
||||||
#
|
|
||||||
# The Android app (com.termux.api, installed separately from F-Droid) is the
|
|
||||||
# actual backend: `termux-api-broadcast` sends an `am broadcast` intent to
|
|
||||||
# com.termux.api/.TermuxApiReceiver and pipes stdout/stdin over abstract unix
|
|
||||||
# sockets. The nix side only provides the CLI entry points:
|
|
||||||
# termux-battery-status, termux-notification, termux-clipboard-*,
|
|
||||||
# termux-toast, termux-share, termux-dialog, ...
|
|
||||||
#
|
|
||||||
# Adaptations for nix-on-droid (upstream assumes termux's /data prefix):
|
|
||||||
# - `am` is resolved from PATH (provided by android-integration.am)
|
|
||||||
# - scripts' shebang rewritten from the substituted `#!$out/bin/sh`
|
|
||||||
# - termux-callback referenced by absolute store path
|
|
||||||
{
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitHub,
|
|
||||||
cmake,
|
|
||||||
runtimeShell,
|
|
||||||
lib,
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "termux-api";
|
|
||||||
version = "0.59.1";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "termux";
|
|
||||||
repo = "termux-api-package";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "1pkdjxll9x9arrifppl7y37dmni5fi4jng2wfx0dgbgriyjrhxl7";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
|
||||||
|
|
||||||
# CMakeLists.txt declares cmake_minimum_required(VERSION 3.0.0), but modern
|
|
||||||
# CMake refuses to configure with < 3.5. Bump the floor via policy override.
|
|
||||||
cmakeFlags = [ "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" ];
|
|
||||||
|
|
||||||
# termux-api.c hardcodes PREFIX for `am` and `termux-callback`. On
|
|
||||||
# nix-on-droid `am` comes from android-integration.am (termux-am) via PATH;
|
|
||||||
# termux-callback lives in our own libexec dir.
|
|
||||||
patchPhase = ''
|
|
||||||
substituteInPlace termux-api.c \
|
|
||||||
--replace 'execv(PREFIX "/bin/am", child_argv);' 'execvp("am", child_argv);' \
|
|
||||||
--replace 'execl(PREFIX "/libexec/termux-callback", "termux-callback", NULL);' 'execl("${placeholder "out"}/libexec/termux-callback", "termux-callback", NULL);' \
|
|
||||||
--replace 'execl(PREFIX "/libexec/termux-callback", "termux-callback", fds, NULL);' 'execl("${placeholder "out"}/libexec/termux-callback", "termux-callback", fds, NULL);'
|
|
||||||
'';
|
|
||||||
|
|
||||||
# CMake substitutes @TERMUX_PREFIX@ (= CMAKE_INSTALL_PREFIX = $out) into the
|
|
||||||
# scripts' shebang, producing `#!$out/bin/sh` which does not exist. Rewrite
|
|
||||||
# all shebangs to the nix runtime shell.
|
|
||||||
postInstall = ''
|
|
||||||
for f in $out/bin/termux-* $out/libexec/termux-callback; do
|
|
||||||
sed -i "1s|^#!.*|#!${runtimeShell}|" "$f"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Termux API-RPC and companion package to launch API commands";
|
|
||||||
homepage = "https://github.com/termux/termux-api-package";
|
|
||||||
license = lib.licenses.asl20;
|
|
||||||
platforms = lib.platforms.linux;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+22
-1
@@ -6,6 +6,10 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
#imports = [
|
||||||
|
# ./others
|
||||||
|
#];
|
||||||
|
|
||||||
xlib.device.username = "oqyude";
|
xlib.device.username = "oqyude";
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
@@ -36,6 +40,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#systemd.tmpfiles.rules = [
|
||||||
|
# "z /home/shared 2775 root users -"
|
||||||
|
#];
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age = {
|
age = {
|
||||||
sshKeyPaths = [
|
sshKeyPaths = [
|
||||||
@@ -84,7 +92,7 @@
|
|||||||
ssh_key_public_root = {
|
ssh_key_public_root = {
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "ssh_key_public";
|
key = "ssh_key_public";
|
||||||
path = "/root/.ssh/id_ed25519.pub";
|
path = "/root/.ssh/id_ed25519";
|
||||||
owner = "root";
|
owner = "root";
|
||||||
group = "root";
|
group = "root";
|
||||||
mode = "0655";
|
mode = "0655";
|
||||||
@@ -98,5 +106,18 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# systemd.services.nixos-auto-rebuild-sops = {
|
||||||
|
# description = "Auto rebuild NixOS at boot";
|
||||||
|
# wantedBy = [ "multi-user.target" ];
|
||||||
|
# after = [ "network-online.target" ];
|
||||||
|
# serviceConfig = {
|
||||||
|
# Type = "oneshot";
|
||||||
|
# User = "${xlib.device.username}";
|
||||||
|
# Group = "users";
|
||||||
|
# WorkingDirectory = "/etc/nixos";
|
||||||
|
# ExecStart = [ "/run/wrappers/bin/sudo ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
# fileSystems."/etc/ssh".neededForBoot = true;
|
# fileSystems."/etc/ssh".neededForBoot = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,8 @@
|
|||||||
../containers/3x-ui.nix
|
../containers/3x-ui.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./samba.nix
|
./samba.nix
|
||||||
./systemd.nix
|
|
||||||
# ./glances.nix
|
# ./glances.nix
|
||||||
# ./netbird.nix
|
# ./netbird.nix
|
||||||
# ./xray.nix
|
# ./xray.nix
|
||||||
];
|
];
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d /mnt 0755 root root -"
|
|
||||||
"d /mnt/services 0755 root root -"
|
|
||||||
"d /mnt/services/containers 0755 root root -"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
+186
-2
@@ -8,6 +8,7 @@ let
|
|||||||
server = "100.64.0.0";
|
server = "100.64.0.0";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
# environment.etc."nginx/pubray".text = inputs.zeroq-credentials.services.xray.auth;
|
||||||
users.users.nginx.extraGroups = [ "acme" ];
|
users.users.nginx.extraGroups = [ "acme" ];
|
||||||
services = {
|
services = {
|
||||||
nginx = {
|
nginx = {
|
||||||
@@ -16,7 +17,22 @@ in
|
|||||||
recommendedOptimisation = true;
|
recommendedOptimisation = true;
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
recommendedTlsSettings = true;
|
recommendedTlsSettings = true;
|
||||||
|
# appendHttpConfig = inputs.zeroq-credentials.services.xray.maps;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
|
# "pubray.zeroq.su" = {
|
||||||
|
# enableACME = true;
|
||||||
|
# forceSSL = true;
|
||||||
|
# root = "${inputs.zeroq-credentials.services.xray.subs}";
|
||||||
|
# locations."/" = {
|
||||||
|
# extraConfig = ''
|
||||||
|
# auth_basic "Restricted";
|
||||||
|
# auth_basic_user_file /etc/nginx/pubray;
|
||||||
|
|
||||||
|
# if ($subfile = "") { return 403; }
|
||||||
|
# rewrite ^/$ $subfile break;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# };
|
||||||
"x.zeroq.su" = {
|
"x.zeroq.su" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
@@ -33,12 +49,180 @@ in
|
|||||||
proxyPass = "http://localhost:2096";
|
proxyPass = "http://localhost:2096";
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
"/clash/" = {
|
};
|
||||||
proxyPass = "http://localhost:2096";
|
};
|
||||||
|
"kuma.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:4001";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"health.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:19999";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"git.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:3000";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# "agent.zeroq.su" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:3000";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# "node-red.zeroq.su" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# kTLS = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:1880";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
"zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
root = pkgs.writeTextDir "index.html" ''
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<pre>What are you doing here?</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
'';
|
||||||
|
locations = {
|
||||||
|
"/guest/" = {
|
||||||
|
proxyPass = "http://${server}:80";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
# "/.well-known/discord" = {
|
||||||
|
# extraConfig = ''
|
||||||
|
# default_type text/plain;
|
||||||
|
# return 200 "dh=c2d103553a4cfdaa1b7952a87a7d8120a1e167cc";
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"flux.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:6061";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"n8n.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:5678";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"office.zeroq.su" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations = {
|
||||||
|
"/" = {
|
||||||
|
proxyPass = "http://${server}:8090";
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
|
||||||
|
# proxy_http_version 1.1;
|
||||||
|
# proxy_buffering off;
|
||||||
|
|
||||||
|
# proxy_set_header Host $host;
|
||||||
|
# proxy_set_header X-Forwarded-Host $host;
|
||||||
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
# proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
# proxy_set_header Authorization $http_authorization;
|
||||||
|
|
||||||
|
# proxy_set_header Upgrade $http_upgrade;
|
||||||
|
# proxy_set_header Connection "upgrade";
|
||||||
|
# ''; # absolute_redirect off;
|
||||||
};
|
};
|
||||||
|
"immich.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:2283";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"nextcloud.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations = {
|
||||||
|
"/" = {
|
||||||
|
proxyPass = "http://${server}:10000";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
"/whiteboard" = {
|
||||||
|
proxyPass = "http://${server}:3002";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"calibre.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:8083";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"pdf.zeroq.su" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${server}:8446";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
# "ai.zeroq.su" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:11112";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
serviceName = "rsync-services-sync";
|
|
||||||
serverAddress = "oqyude@100.64.0.0";
|
|
||||||
serverDir = "${xlib.dirs.services-nodes-folder}/${xlib.device.hostname}";
|
|
||||||
nodeDir = "${xlib.dirs.services-mnt-folder}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
systemd = {
|
|
||||||
services = {
|
|
||||||
"${serviceName}" = {
|
|
||||||
description = "Bidirectional rsync";
|
|
||||||
unitConfig.RequiresMountsFor = [ ];
|
|
||||||
after = [ "network-online.target" ];
|
|
||||||
wants = [ "network-online.target" ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
script = ''
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
RSYNC="${pkgs.rsync}/bin/rsync"
|
|
||||||
SSH="${pkgs.openssh}/bin/ssh"
|
|
||||||
|
|
||||||
SSH_CMD="$SSH \
|
|
||||||
-o BatchMode=yes \
|
|
||||||
-o ConnectTimeout=5 \
|
|
||||||
-o StrictHostKeyChecking=no"
|
|
||||||
|
|
||||||
echo "Waiting for server..."
|
|
||||||
|
|
||||||
for i in $(seq 1 60); do
|
|
||||||
echo "Attempt $i"
|
|
||||||
|
|
||||||
if $SSH_CMD ${serverAddress} true >/dev/null 2>&1; then
|
|
||||||
echo "Server available"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
# final check
|
|
||||||
$SSH_CMD ${serverAddress} true >/dev/null 2>&1
|
|
||||||
|
|
||||||
mkdir -p "${nodeDir}"
|
|
||||||
|
|
||||||
if [ ! -d "${nodeDir}" ] || [ -z "$(ls -A "${nodeDir}")" ]; then
|
|
||||||
echo "Pull <- ${serverAddress}"
|
|
||||||
|
|
||||||
mkdir -p "${nodeDir}"
|
|
||||||
|
|
||||||
$RSYNC \
|
|
||||||
-e "$SSH_CMD" \
|
|
||||||
-a \
|
|
||||||
"${serverAddress}:${serverDir}/" \
|
|
||||||
"${nodeDir}/"
|
|
||||||
else
|
|
||||||
echo "Push -> ${serverAddress}"
|
|
||||||
|
|
||||||
$RSYNC \
|
|
||||||
-e "$SSH_CMD" \
|
|
||||||
-a \
|
|
||||||
--delete \
|
|
||||||
"${nodeDir}/" \
|
|
||||||
"${serverAddress}:${serverDir}/"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "root";
|
|
||||||
Group = "root";
|
|
||||||
Nice = 10;
|
|
||||||
CPUQuota = "5%";
|
|
||||||
IOSchedulingClass = "idle";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
timers = {
|
|
||||||
"${serviceName}" = {
|
|
||||||
wantedBy = [ "timers.target" ];
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "daily";
|
|
||||||
Persistent = true;
|
|
||||||
Unit = "${serviceName}.service";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -6,10 +6,11 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
../software/aichat.nix
|
||||||
../software/beets
|
../software/beets
|
||||||
|
../software/whisper.nix
|
||||||
./containers
|
./containers
|
||||||
./nix-serve.nix
|
./tools
|
||||||
# ./tools
|
|
||||||
#../server/open-webui.nix
|
#../server/open-webui.nix
|
||||||
#../services/tts.nix
|
#../services/tts.nix
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
nix-serve = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nix-serve-ng;
|
|
||||||
openFirewall = true;
|
|
||||||
port = 5000;
|
|
||||||
bindAddress = "0.0.0.0";
|
|
||||||
secretKeyFile = config.sops.secrets.private-key.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
sops.secrets = {
|
|
||||||
private-key = {
|
|
||||||
key = "private-key";
|
|
||||||
sopsFile = ./secrets/nix-serve.yaml;
|
|
||||||
mode = "0600";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
private-key: ENC[AES256_GCM,data:VTj1cmhYLbBuUnIgtXI3CZtULaNZ5XOpoheJB0gUwrWrH5B0rmxcvZLlJWX7xhGs4oqcC3Wwmo+TBPhcgGylLVdCuhJG5A94UwOa9ZIV4s3x3IJ4RU3UcHTsA0xdtw7XxBfryw==,iv:8oZCojIU0JXWJgE5t+fNNW9trC109yOJp1UGAV76FbU=,tag:S74cHFy9B8C29npdcoVBeg==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6MHBkYzZneEdhUlN5MEpx
|
|
||||||
NGxud1BkVU1NUFdyVFE2VDJWb1M2cW9IcUVFCm9QZ3RvNHFaeWpFbnZ3Q1dKSDdn
|
|
||||||
RHQvUDgrZHRiUHpSR3FrWXRkQUxXWGMKLS0tIERsemNuL1BwR2xYYUpmbVFROWtN
|
|
||||||
RGI1WlRGMzlkS2tqQ0JPSFJHTUY1TUkKDeaivc+ST8MYtnJEDx07Y+IhtpvblR47
|
|
||||||
SLZf6WKQ8WNY4Bb5VeMWiCABPP/2L+VwoACqkOdZ01yGUVQSc9X6tw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-05-03T17:05:41Z"
|
|
||||||
mac: ENC[AES256_GCM,data:6jNp7N7lIvsLez3zQbDKTWPyvkL8u9g34I3q27GudgXzYw8B3Pb26jc9dCYCxCylCZxN5IeWWyHvUt4PadQABI4jrrIKnIfVV1A2c+A90chu+xSyE/B9OhkSC7yYVOnCURJPYku8799RIRkpHAWeKawkydbOiszCiC3qIKZDSTQ=,iv:xXivLDNnTABlNeWOOWsCESDUOnFv+9Lh0o029r7rk+A=,tag:vUoIZjcNtE3xJX/jNCao7Q==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.12.2
|
|
||||||
Reference in New Issue
Block a user