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
|
||||
.omo
|
||||
@@ -9,10 +9,4 @@
|
||||
sapphira = import ./server.nix flakeContext; # sapphira
|
||||
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 = {
|
||||
sysctl = {
|
||||
"fs.inotify.max_user_watches" = "204800";
|
||||
"net.ipv4.ip_forward" = 1;
|
||||
};
|
||||
};
|
||||
kernelModules = [
|
||||
|
||||
@@ -68,6 +68,7 @@ let
|
||||
|
||||
boot = {
|
||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable;
|
||||
#kernelParams = [ "usbcore.autosuspend=-1" ];
|
||||
loader = {
|
||||
systemd-boot.enable = lib.mkDefault true;
|
||||
efi.canTouchEfiVariables = lib.mkDefault true;
|
||||
@@ -78,6 +79,8 @@ let
|
||||
bluetooth.enable = true;
|
||||
};
|
||||
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
networking = {
|
||||
hostName = "${xlib.device.hostname}";
|
||||
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 = {
|
||||
power-profiles-daemon.enable = lib.mkForce false;
|
||||
earlyoom.enable = true;
|
||||
auto-cpufreq.enable = false;
|
||||
throttled.enable = true;
|
||||
journald = {
|
||||
extraConfig = ''
|
||||
SystemMaxUse=512M
|
||||
@@ -110,10 +113,6 @@ let
|
||||
hostName = "${xlib.device.hostname}";
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = false;
|
||||
# nameservers = [
|
||||
# "192.168.1.1"
|
||||
# "127.0.0.1"
|
||||
# ];
|
||||
};
|
||||
|
||||
system = {
|
||||
|
||||
Generated
+27
-223
@@ -13,11 +13,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785892481,
|
||||
"narHash": "sha256-1JTy9/LyITSBP1a4WZ9tmOv2yDh9OTbA3YUJbQHiMYc=",
|
||||
"lastModified": 1781023725,
|
||||
"narHash": "sha256-Gt+qFANcrDRjl3xzidLYrAUQCd3808iuAsLwZbYYAEU=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "f6f2359a6cb7e3c51ea673bcb39933ac2622350d",
|
||||
"rev": "2ce9051767ee4d1a3c43b52ba327431783bfd463",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -88,11 +88,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1786031233,
|
||||
"narHash": "sha256-TIDlLTLI1/pB7IqgjzcKQjpODQsZE2oII4XGG9B6KjI=",
|
||||
"lastModified": 1781189114,
|
||||
"narHash": "sha256-5inaamLgUMWy+MOBE9ChF9QAF1o/74LFuHkI0W/9rqc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7834e82588860aaf780cec1366524456a70898d7",
|
||||
"rev": "486595d2cf49cfcd649b58a284fa11ac0e34da22",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -101,70 +101,16 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785232496,
|
||||
"narHash": "sha256-65EQYIRRpTdpH8lUiB6Mvo5uBkG60aBIzAJuALfx+O0=",
|
||||
"lastModified": 1781168557,
|
||||
"narHash": "sha256-LOnLQ2tpYF9gqIDDr3+j3DbpJJr/QCH6zPRT2GzEUOE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "2e790b0a6be8ec2b76174ac0931b8ff11919ec98",
|
||||
"rev": "6358ff76821101c178e3ab4919a62799bfe3652e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -184,11 +130,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784642409,
|
||||
"narHash": "sha256-hcbDqFuySAJawljt5r0sKBCJKYnbtGD0T/ZIozH1Dq0=",
|
||||
"lastModified": 1781182279,
|
||||
"narHash": "sha256-V5EQQbDnmdiXGQXrEF1PEL7QYsFqfH8N1E89Z5ONwFk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NixOS-WSL",
|
||||
"rev": "eaeb18da90024448a60eb1ec7132eafa4003404e",
|
||||
"rev": "5675822ba756e6e56f8f6a5a76e90e0da2ece94d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -243,45 +189,13 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1786198689,
|
||||
"narHash": "sha256-XkvYmpRd4cmcrzKS8QplEHPZkDDeKwpalJQwosCd3+Q=",
|
||||
"lastModified": 1781298072,
|
||||
"narHash": "sha256-p7sszdPeM3Gm7LA+NrWlxn5Rp6Qp+TGbt2qC/XBCxgI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "94ec6671dbe7d4879c2c8103e67425e85bf066d7",
|
||||
"rev": "633f0c001a27731ee16cc504e831a4a9ccf071d6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -291,29 +205,13 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1782847189,
|
||||
"narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=",
|
||||
"lastModified": 1780952837,
|
||||
"narHash": "sha256-Fwd1+spDtQ0hDyBwme6ufG3n4mY0UrjjFdYHv+G/Hds=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b6018f87da91d19d0ab4cf979885689b469cdd41",
|
||||
"rev": "e820eb4a444b46a19b2e03e8dfd2359439ff30fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -323,29 +221,13 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1785967620,
|
||||
"narHash": "sha256-IItrdb7Puk05RqOBWZYFC5X6Wl1sJmCfh5MWVHw5iMM=",
|
||||
"lastModified": 1781074563,
|
||||
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b7c2ada94fe99c15b0dbcf4d11fd7850b957a436",
|
||||
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -355,44 +237,6 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"home-manager": [
|
||||
@@ -403,11 +247,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785762349,
|
||||
"narHash": "sha256-jZhZkzAwc7f3exzcTDJWP2WCAchCv0iNC3UF/QsahdQ=",
|
||||
"lastModified": 1775856943,
|
||||
"narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "plasma-manager",
|
||||
"rev": "a19a2a029fa180911bd89c554dca1616e10f4c1d",
|
||||
"rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -416,26 +260,6 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"deploy-rs": "deploy-rs",
|
||||
@@ -443,40 +267,20 @@
|
||||
"flake-compat": "flake-compat",
|
||||
"grub2-themes": "grub2-themes",
|
||||
"home-manager": "home-manager",
|
||||
"nix-on-droid": "nix-on-droid",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixos-wsl": "nixos-wsl",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-beets": "nixpkgs-beets",
|
||||
"nixpkgs-calibre": "nixpkgs-calibre",
|
||||
"nixpkgs-master": "nixpkgs-master",
|
||||
"nixpkgs-previous": "nixpkgs-previous",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"plasma-manager": "plasma-manager",
|
||||
"proxy-suite": "proxy-suite",
|
||||
"sops-nix": "sops-nix",
|
||||
"utils": "utils",
|
||||
"zapret": "zapret",
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -484,11 +288,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1783174389,
|
||||
"narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=",
|
||||
"lastModified": 1780547341,
|
||||
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9",
|
||||
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -7,10 +7,8 @@
|
||||
|
||||
# nixpkgs
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
# nixpkgs-last-unstable.url = "github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f";
|
||||
nixpkgs-calibre.url = "github:NixOS/nixpkgs/566acc07c54dc807f91625bb286cb9b321b5f42a";
|
||||
nixpkgs-previous.url = "github:NixOS/nixpkgs/3497aa5c9457a9d88d71fa93a4a8368816fbeeba";
|
||||
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||
nixpkgs-beets.url = "github:NixOS/nixpkgs/832efc09b4caf6b4569fbf9dc01bec3082a00611"; # 2343bbb58f99267223bc2aac4fc9ea301a155a16
|
||||
@@ -24,13 +22,6 @@
|
||||
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 = {
|
||||
url = "github:serokell/deploy-rs";
|
||||
inputs = {
|
||||
@@ -66,10 +57,6 @@
|
||||
home-manager.follows = "home-manager";
|
||||
};
|
||||
};
|
||||
proxy-suite = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
@@ -1,9 +1,21 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
xlib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
streamripPath = "${xlib.dirs.wsl-storage}/streamrip";
|
||||
in
|
||||
{
|
||||
# xdg = {
|
||||
# configFile = {
|
||||
# "streamrip" = {
|
||||
# source = config.lib.file.mkOutOfStoreSymlink streamripPath;
|
||||
# target = "streamrip";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
home.packages = [
|
||||
pkgs.yt-dlp-light
|
||||
];
|
||||
|
||||
@@ -8,6 +8,25 @@
|
||||
programs = {
|
||||
mangohud.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 = {
|
||||
kdeconnect.enable = true;
|
||||
@@ -15,6 +34,12 @@
|
||||
};
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
# Surfing
|
||||
# (brave.override {
|
||||
# commandLineArgs = [
|
||||
# "--password-store=basic" # on purpose to make it break "--password-store=gnome-libsecret"
|
||||
# ];
|
||||
# })
|
||||
brave
|
||||
v2rayn
|
||||
|
||||
@@ -23,6 +48,8 @@
|
||||
# amdgpu_top
|
||||
vscodium
|
||||
ayugram-desktop
|
||||
# vesktop
|
||||
# discord
|
||||
gramps
|
||||
kdePackages.filelight
|
||||
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,
|
||||
...
|
||||
}:
|
||||
let
|
||||
panel = "${xlib.dirs.services-nodes-folder}/${xlib.device.hostname}/3x-ui";
|
||||
in
|
||||
{
|
||||
virtualisation = {
|
||||
podman = {
|
||||
@@ -28,8 +25,8 @@ in
|
||||
"TZ" = "Europe/Moscow";
|
||||
};
|
||||
volumes = [
|
||||
"${panel}/cert/:/root/cert:rw"
|
||||
"${panel}/db/:/etc/x-ui:rw"
|
||||
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/cert/:/root/cert:rw"
|
||||
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/db/:/etc/x-ui:rw"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
@@ -100,13 +97,12 @@ in
|
||||
};
|
||||
# Folders
|
||||
tmpfiles.rules = [
|
||||
"d ${xlib.dirs.services-mnt-folder} 0755 root root -"
|
||||
"d ${xlib.dirs.services-nodes-folder} 0755 root root -"
|
||||
"d ${xlib.dirs.services-nodes-folder}/${xlib.device.hostname} 0755 root root -"
|
||||
"d ${panel} 0755 root root -"
|
||||
"d ${panel}/db 0755 root root -"
|
||||
"d ${panel}/cert 0755 root root -"
|
||||
"Z ${panel} 0755 root root -"
|
||||
"d /mnt 0755 root root -"
|
||||
"d /mnt/containers 0755 root root -"
|
||||
"d /mnt/services/containers 0755 root root -"
|
||||
"d /mnt/services/containers/3x-ui 0755 root root -"
|
||||
"d /mnt/services/containers/3x-ui/cert 0755 root root -"
|
||||
"d /mnt/services/containers/3x-ui/db 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; [
|
||||
./essentials
|
||||
./options.nix
|
||||
./users.nix
|
||||
(./. + "/${deviceType}")
|
||||
./options.nix
|
||||
(./. + "/${deviceType}") # specific modules
|
||||
|
||||
home-manager.nixosModules.home-manager # home-manager module
|
||||
# nix-index-database.nixosModules.nix-index # nix-index module
|
||||
@@ -50,28 +47,6 @@ let
|
||||
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 = {
|
||||
inputs = inputs;
|
||||
xlib = config.xlib;
|
||||
@@ -82,6 +57,5 @@ in
|
||||
nixosModules = {
|
||||
default = defaultModule;
|
||||
public = publicModule;
|
||||
strict = strictModule;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,6 +4,11 @@
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
master = import inputs.nixpkgs-master {
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
in
|
||||
{
|
||||
environment = {
|
||||
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 = {
|
||||
require-sigs = false;
|
||||
substituters = [
|
||||
"https://nix-cache.zeroq.su"
|
||||
"http://100.64.0.0:5000"
|
||||
"https://cache.nixos.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://mirror.yandex.ru/nixos"
|
||||
@@ -27,7 +27,7 @@
|
||||
# "https://nixos.snix.store" # https://nixos.snix.store/
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-cache.zeroq.su:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s="
|
||||
"cache.local:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
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;
|
||||
|
||||
@@ -103,23 +75,4 @@
|
||||
"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";
|
||||
};
|
||||
shellInit = ''
|
||||
beet-n() {
|
||||
echo "$*" | aichat -cer beets
|
||||
}
|
||||
beet-p() {
|
||||
local base="/home/oqyude/.config/beets/My"
|
||||
local rel
|
||||
rel=$(realpath --relative-to="$base" "$PWD")
|
||||
beet mod "path:$rel" playlist="$*"
|
||||
beet mod path:. playlist="$*"
|
||||
}
|
||||
beet-ims() {
|
||||
beet im ./ -S $*
|
||||
}
|
||||
beet-path() {
|
||||
realpath --relative-to="/home/oqyude/.config/beets/My" "$1"
|
||||
}
|
||||
'';
|
||||
shellAliases = {
|
||||
# shell
|
||||
@@ -45,9 +42,7 @@
|
||||
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='/home/oqyude/.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";
|
||||
|
||||
# beets
|
||||
beet-ima = "beet im ./ -A";
|
||||
|
||||
@@ -4,4 +4,6 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
# imports = [
|
||||
# ];
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
"vds"
|
||||
"vds-new"
|
||||
"wsl"
|
||||
"termux"
|
||||
];
|
||||
default = "minimal";
|
||||
description = "Type of device for this host.";
|
||||
@@ -118,11 +117,6 @@
|
||||
default = "/mnt/services";
|
||||
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 {
|
||||
type = lib.types.str;
|
||||
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,
|
||||
...
|
||||
}:
|
||||
# let
|
||||
# pkgs-stable = import inputs.nixpkgs-stable { system = "x86_64-linux"; };
|
||||
# in
|
||||
{
|
||||
services.bentopdf = {
|
||||
enable = true;
|
||||
domain = "pdf.private";
|
||||
nginx = {
|
||||
enable = true;
|
||||
# virtualHost = {
|
||||
# forceSSL = true;
|
||||
# enableACME = true;
|
||||
# };
|
||||
};
|
||||
domain = "bentopdf.local";
|
||||
nginx.enable = true;
|
||||
# package = pkgs-stable.bentopdf;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,52 +6,32 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
stable = import inputs.nixpkgs-previous {
|
||||
stable = import inputs.nixpkgs-calibre {
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
in
|
||||
{
|
||||
services = {
|
||||
calibre-web = {
|
||||
# package = stable.calibre-web;
|
||||
enable = true;
|
||||
# dataDir = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
||||
options = {
|
||||
calibreLibrary = "${xlib.dirs.services-mnt-folder}/calibre-web-library";
|
||||
enableBookUploading = true;
|
||||
enableKepubify = true;
|
||||
enableBookConversion = false;
|
||||
};
|
||||
listen.ip = "0.0.0.0";
|
||||
listen.port = 8083;
|
||||
openFirewall = true;
|
||||
services.calibre-web = {
|
||||
package = stable.calibre-web;
|
||||
enable = true;
|
||||
# dataDir = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
||||
options = {
|
||||
calibreLibrary = "${xlib.dirs.services-mnt-folder}/calibre-web-library";
|
||||
enableBookUploading = true;
|
||||
enableKepubify = true;
|
||||
enableBookConversion = false;
|
||||
};
|
||||
# calibre-server = {
|
||||
# enable = true;
|
||||
# port = 8091;
|
||||
# host = "0.0.0.0";
|
||||
# openFirewall = true;
|
||||
# user = "calibre-web";
|
||||
# group = "calibre-web";
|
||||
# libraries = [
|
||||
# "/var/lib/calibre-server"
|
||||
# ];
|
||||
# };
|
||||
listen.ip = "0.0.0.0";
|
||||
listen.port = 8083;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${xlib.dirs.services-mnt-folder}/calibre-web 0755 calibre-web calibre-web -"
|
||||
"d ${xlib.dirs.services-mnt-folder}/calibre-web-library 0755 calibre-web calibre-web -"
|
||||
];
|
||||
|
||||
fileSystems = {
|
||||
"/var/lib/calibre-web" = {
|
||||
device = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
||||
fsType = "none";
|
||||
options = [
|
||||
"bind"
|
||||
"nofail"
|
||||
];
|
||||
};
|
||||
fileSystems."/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 = [
|
||||
../containers/3x-ui.nix
|
||||
../software/beets
|
||||
./acme.nix
|
||||
./bentopdf.nix
|
||||
./calibre-web.nix
|
||||
./chrony.nix
|
||||
./coredns.nix
|
||||
./gitea.nix
|
||||
./glances.nix
|
||||
./homebox.nix
|
||||
./immich.nix
|
||||
./miniflux.nix
|
||||
./n8n.nix
|
||||
./navidrome.nix
|
||||
./netdata.nix
|
||||
./nextcloud.nix
|
||||
./nginx.nix
|
||||
./nix-serve.nix
|
||||
./onlyoffice.nix
|
||||
./open-webui.nix
|
||||
./postgresql.nix
|
||||
./power.nix
|
||||
./samba.nix
|
||||
./step-ca.nix
|
||||
./stirling-pdf.nix
|
||||
./syncthing.nix
|
||||
./systemd.nix
|
||||
# ./step-ca.nix
|
||||
./transmission.nix
|
||||
./uptime-kuma.nix
|
||||
# ../containers/remnawave.nix
|
||||
# ./coturn.nix
|
||||
# ./mealie.nix
|
||||
# ./memos.nix
|
||||
# ./n8n.nix
|
||||
# ./netdata.nix
|
||||
# ./nfs.nix
|
||||
# ./node-red.nix
|
||||
# ./open-webui.nix
|
||||
# ./rsync.nix
|
||||
# ./stirling-pdf.nix
|
||||
# ./transmission.nix
|
||||
# ./trilium.nix
|
||||
# ./uptime-kuma.nix
|
||||
# ./zerotier.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
appName = "ZeroQ Gitea Service";
|
||||
settings = {
|
||||
server = {
|
||||
DOMAIN = "git.zeroq.su";
|
||||
DOMAIN = "gitea.local";
|
||||
HTTP_PORT = 3000;
|
||||
};
|
||||
service.DISABLE_REGISTRATION = true;
|
||||
@@ -23,7 +23,6 @@
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${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,
|
||||
...
|
||||
}:
|
||||
let
|
||||
master = import inputs.nixpkgs-master {
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
in
|
||||
{
|
||||
services = {
|
||||
immich = {
|
||||
enable = true;
|
||||
# package = master.immich;
|
||||
port = 2283;
|
||||
host = "0.0.0.0";
|
||||
openFirewall = true;
|
||||
|
||||
@@ -12,7 +12,7 @@ let
|
||||
in
|
||||
{
|
||||
services.n8n = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
environment = {
|
||||
# N8N_USER_FOLDER = lib.mkForce "${configDir}";
|
||||
N8N_SECURE_COOKIE = "false";
|
||||
|
||||
@@ -6,31 +6,17 @@
|
||||
xlib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
navidromeDir = "/var/lib/services/navidrome-point";
|
||||
in
|
||||
{
|
||||
services = {
|
||||
navidrome = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
openFirewall = true;
|
||||
# environmentFile = "";
|
||||
settings = {
|
||||
Address = "0.0.0.0";
|
||||
Port = 4533;
|
||||
MusicFolder = "${navidromeDir}";
|
||||
Port = "4533";
|
||||
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,
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
xlib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
master = import inputs.nixpkgs-master {
|
||||
system = "x86_64-linux";
|
||||
# config.allowUnfree = true;
|
||||
# config.allowUnfreePredicate = true;
|
||||
};
|
||||
in
|
||||
{
|
||||
services = {
|
||||
nextcloud-whiteboard-server = {
|
||||
enable = true;
|
||||
settings = {
|
||||
NEXTCLOUD_URL = "https://nextcloud.zeroq.su";
|
||||
NEXTCLOUD_URL = "http://nextcloud.private";
|
||||
};
|
||||
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 = {
|
||||
enable = true;
|
||||
package = pkgs.nextcloud34;
|
||||
package = pkgs.nextcloud33;
|
||||
hostName = "nextcloud.private";
|
||||
database.createLocally = true;
|
||||
home = "${xlib.dirs.services-mnt-folder}/nextcloud";
|
||||
configureRedis = true;
|
||||
https = true;
|
||||
caching = {
|
||||
redis = true;
|
||||
memcached = true;
|
||||
@@ -72,28 +46,24 @@
|
||||
trusted_domains = [
|
||||
"100.64.0.0"
|
||||
"192.168.1.20"
|
||||
"37.128.246.126"
|
||||
"localhost"
|
||||
"nextcloud.home.arpa"
|
||||
"nextcloud.local"
|
||||
"nextcloud.private"
|
||||
"nextcloud.zeroq.su"
|
||||
"office.home.arpa"
|
||||
"office.local"
|
||||
"office.zeroq.su"
|
||||
];
|
||||
trusted_proxies = [
|
||||
"100.64.1.0"
|
||||
"109.248.161.5"
|
||||
"192.168.1.20"
|
||||
"37.128.246.126"
|
||||
];
|
||||
overwriteprotocol = "https"; # maybe no
|
||||
overwriteprotocol = ""; # maybe no
|
||||
};
|
||||
extraAppsEnable = true;
|
||||
appstoreEnable = false;
|
||||
notify_push = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
bendDomainToLocalhost = true;
|
||||
nextcloudUrl = "https://nextcloud.zeroq.su";
|
||||
};
|
||||
# phpPackage = pkgs.php85;
|
||||
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 ];
|
||||
@@ -225,51 +204,21 @@
|
||||
group = "nextcloud";
|
||||
mode = "0650";
|
||||
};
|
||||
nextcloud-talk-secret = {
|
||||
onlyoffice-nonce = {
|
||||
format = "yaml";
|
||||
key = "nextcloud-talk-secret";
|
||||
sopsFile = ./secrets/nextcloud.yaml;
|
||||
# owner = "nextcloud-spreed-signaling";
|
||||
# group = "nextcloud-spreed-signaling";
|
||||
mode = "0440";
|
||||
key = "nonce";
|
||||
sopsFile = ./secrets/onlyoffice.yaml;
|
||||
owner = "onlyoffice";
|
||||
group = "onlyoffice";
|
||||
mode = "0650";
|
||||
};
|
||||
internal-secret = {
|
||||
onlyoffice-jwt = {
|
||||
format = "yaml";
|
||||
key = "internal-secret";
|
||||
sopsFile = ./secrets/nextcloud.yaml;
|
||||
# owner = "nextcloud-spreed-signaling";
|
||||
# group = "nextcloud-spreed-signaling";
|
||||
mode = "0440";
|
||||
};
|
||||
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";
|
||||
key = "jwt";
|
||||
sopsFile = ./secrets/onlyoffice.yaml;
|
||||
owner = "onlyoffice";
|
||||
group = "onlyoffice";
|
||||
mode = "0650";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
+110
-375
@@ -29,17 +29,29 @@ in
|
||||
addr = "192.168.1.20";
|
||||
port = 10000;
|
||||
}
|
||||
{
|
||||
addr = "127.0.0.1";
|
||||
port = 10000;
|
||||
}
|
||||
];
|
||||
};
|
||||
"office.zeroq.su" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
"office.local" = {
|
||||
forceSSL = false;
|
||||
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;
|
||||
enableACME = false;
|
||||
listen = [
|
||||
@@ -55,311 +67,14 @@ in
|
||||
addr = "192.168.1.20";
|
||||
port = 8446;
|
||||
}
|
||||
{
|
||||
addr = "127.0.0.1";
|
||||
port = 8446;
|
||||
}
|
||||
];
|
||||
extraConfig = ''
|
||||
client_max_body_size 5G;
|
||||
'';
|
||||
};
|
||||
"z.zeroq.su" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
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;
|
||||
"nextcloud.local" = {
|
||||
forceSSL = false;
|
||||
enableACME = false;
|
||||
locations = {
|
||||
"/" = {
|
||||
proxyPass = "http://${server}:10000";
|
||||
@@ -374,9 +89,90 @@ in
|
||||
client_max_body_size 5G;
|
||||
'';
|
||||
};
|
||||
"calibre.zeroq.su" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
"gitea.local" = {
|
||||
forceSSL = false;
|
||||
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."/" = {
|
||||
proxyPass = "http://${server}:8083";
|
||||
proxyWebsockets = true;
|
||||
@@ -385,66 +181,9 @@ in
|
||||
client_max_body_size 5G;
|
||||
'';
|
||||
};
|
||||
"nix-cache.zeroq.su" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
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;
|
||||
# "zeroq.local" = {
|
||||
# forceSSL = false;
|
||||
# enableACME = false;
|
||||
# root = pkgs.writeTextDir "index.html" ''
|
||||
# <!doctype html>
|
||||
# <html>
|
||||
@@ -467,8 +206,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
];
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
services = {
|
||||
nix-serve = {
|
||||
enable = true;
|
||||
package = pkgs.nix-serve-ng;
|
||||
openFirewall = true;
|
||||
port = 5000;
|
||||
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,
|
||||
...
|
||||
}:
|
||||
let
|
||||
master = import inputs.nixpkgs-master {
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
in
|
||||
{
|
||||
services = {
|
||||
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,
|
||||
inputs,
|
||||
pkgs,
|
||||
xlib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services = {
|
||||
samba-wsdd = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
hostname = "sapphira";
|
||||
discovery = true;
|
||||
services.samba = {
|
||||
enable = true;
|
||||
nmbd = {
|
||||
enable = false;
|
||||
};
|
||||
samba = {
|
||||
enable = true;
|
||||
# package = pkgs.samba4Full;
|
||||
nmbd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
global = {
|
||||
"invalid users" = [ ];
|
||||
"passwd program" = "/run/wrappers/bin/passwd %u";
|
||||
security = "user";
|
||||
};
|
||||
settings = {
|
||||
global = {
|
||||
"invalid users" = [ ];
|
||||
"passwd program" = "/run/wrappers/bin/passwd %u";
|
||||
security = "user";
|
||||
};
|
||||
nixos = {
|
||||
"path" = "/etc/nixos";
|
||||
"browseable" = "yes";
|
||||
"read only" = "no";
|
||||
"valid users" = "${xlib.device.username}";
|
||||
"guest ok" = "no";
|
||||
"writable" = "yes";
|
||||
"create mask" = 755;
|
||||
"directory mask" = 755;
|
||||
"force user" = "${xlib.device.username}";
|
||||
"force group" = "users";
|
||||
};
|
||||
root = {
|
||||
"path" = "/";
|
||||
"browseable" = "yes";
|
||||
"read only" = "no";
|
||||
"valid users" = "${xlib.device.username}";
|
||||
"guest ok" = "no";
|
||||
"writable" = "yes";
|
||||
#"create mask" = 0644;
|
||||
#"directory mask" = 0644;
|
||||
"force user" = "root";
|
||||
"force group" = "root";
|
||||
};
|
||||
"${xlib.device.username}" = {
|
||||
"path" = "${xlib.dirs.server-home}";
|
||||
"browseable" = "yes";
|
||||
"read only" = "no";
|
||||
"valid users" = "${xlib.device.username}";
|
||||
"guest ok" = "no";
|
||||
"writable" = "yes";
|
||||
"create mask" = 700;
|
||||
"directory mask" = 700;
|
||||
"force user" = "${xlib.device.username}";
|
||||
"force group" = "users";
|
||||
};
|
||||
nixos = {
|
||||
"path" = "/etc/nixos";
|
||||
"browseable" = "yes";
|
||||
"read only" = "no";
|
||||
"valid users" = "${xlib.device.username}";
|
||||
"guest ok" = "no";
|
||||
"writable" = "yes";
|
||||
"create mask" = 755;
|
||||
"directory mask" = 755;
|
||||
"force user" = "${xlib.device.username}";
|
||||
"force group" = "users";
|
||||
};
|
||||
root = {
|
||||
"path" = "/";
|
||||
"browseable" = "yes";
|
||||
"read only" = "no";
|
||||
"valid users" = "${xlib.device.username}";
|
||||
"guest ok" = "no";
|
||||
"writable" = "yes";
|
||||
#"create mask" = 0644;
|
||||
#"directory mask" = 0644;
|
||||
"force user" = "root";
|
||||
"force group" = "root";
|
||||
};
|
||||
"${xlib.device.username}" = {
|
||||
"path" = "${xlib.dirs.server-home}";
|
||||
"browseable" = "yes";
|
||||
"read only" = "no";
|
||||
"valid users" = "${xlib.device.username}";
|
||||
"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]
|
||||
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:
|
||||
age:
|
||||
- enc: |
|
||||
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxNWFiUlZXMEEvNll0aFFk
|
||||
UldxNitqaDgyenBFeWRhLzUxSVVhQk55Q1FBCkdLU3p4S0NTOVhERkRoaWVwbWVB
|
||||
@@ -14,8 +11,7 @@ sops:
|
||||
WGVQYjZtaHhaeC9pMzYxYmxTcVNtYk0KKxXXNA9h0fs+mA6U/Vsyg+q1CPl5hFrI
|
||||
Ozjqh+dzwajQeqkCPUdCsoeIWsvBY2Cyabvs+f0zj8S00faXb8rVQQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
||||
lastmodified: "2026-06-30T07:33:27Z"
|
||||
mac: ENC[AES256_GCM,data:fZlKozBczGDWfhXKyJXmW/I/7GdKKoPG/NVNt2ncoK2a+pjHglJ0Ur9Zg02v05Fb37MmFznmHH2nn4W4av1TX118dX4jkni2aue06NEF3L8iali+sHFPUSI+uT8SvG0DW7ZvllPNwyPNgzeZPLIKqRRGZ7CgOqKe6IWOha4jAhg=,iv:7gfdmYmktzRXq7ANwXOdOKVgZEe0kfFIPKEvEnhfKrc=,tag:3tkVXh+89Q/uW8TCHZtWWQ==,type:str]
|
||||
lastmodified: "2026-03-30T12:49:45Z"
|
||||
mac: ENC[AES256_GCM,data:1EkbMGa6nK53GqGWYvXZP+sqy91AldGKy/32CVPshZwvTzJtk/VeK3W9A3fIGwvo7gl+QVWJmSiqrOTql4v+U4Yi3jVLEXsHXA5Bh28aJ7Ng9nkZmI10K7oaYF1xWNxzwss4gcDNIuomK+wG1WNLaiLbxwCBkN6xHugWQ4F+DLs=,iv:UmI6nC7dIHGeas54taf5kTIINvyd8YXyOVdIYghwHmE=,tag:VxdJLXRYin8D07r6CCA00A==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.1
|
||||
version: 3.12.2
|
||||
|
||||
@@ -10,7 +10,7 @@ sops:
|
||||
IUYmiWPlPd1IDV1NeMtlSYtO8exzB22XL9DqW4x/tJ7DeSZaBsjcOw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
||||
lastmodified: "2026-06-23T20:42:29Z"
|
||||
mac: ENC[AES256_GCM,data:pyayAQOBIBKwfpTCykHtVELGKmhrpS9Mu18wwl3aYyvEwdqqhfSbzt2fXURgWAbrsax6KzrTfi2bgixy8NxRibI+o5/magGAXdk0N5RUP68/FPe1cSL6ZRry+00WjJp8x75wbSp64GU0xY7uUuq+oUKfckGCsY/m4AODbZWU1Ic=,iv:jEpnTyllRd46vPiGG2VlZkFOgwcKQNSov1W813uLQEM=,tag:B7BNlVvhgm9HI/zUQneVQw==,type:str]
|
||||
lastmodified: "2026-06-13T22:59:34Z"
|
||||
mac: ENC[AES256_GCM,data:72E73xauS1Xrfw6tcyN/PHSJZ4ZZnIeKp8JVUPFGPBvIzaD6ZThYZwQ10FDD4JF+YOwn3QhCEh3t0ozcSNNnJFkyBgSqFtRMkym0ede12VAOPu2wQFoNvMdkT7+n14lJ/9OOz6KDyMf0BQDJKlSfDBkt+mLi61zte5iUxPsWsp4=,iv:xuOwFBEnlRgbaVdMq4O6w9T2edpS6uEPh9yhNbYBJIk=,tag:Y+dtcU17Q83o/9Nt1LGCcg==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.1
|
||||
|
||||
@@ -22,34 +22,14 @@ in
|
||||
key = "${varDir}/secrets/intermediate_ca_key";
|
||||
# address = "0.0.0.0:9000";
|
||||
dnsNames = [
|
||||
"*.zeroq.su"
|
||||
"*.home.arpa"
|
||||
"localhost"
|
||||
"ca.zeroq.su"
|
||||
];
|
||||
db = {
|
||||
type = "badgerv2";
|
||||
dataSource = "${varDir}/db";
|
||||
};
|
||||
authority = {
|
||||
claims = {
|
||||
defaultTLSCertDuration = "2160h";
|
||||
maxTLSCertDuration = "2160h";
|
||||
};
|
||||
provisioners = [
|
||||
{
|
||||
type = "ACME";
|
||||
name = "acme";
|
||||
claims = {
|
||||
enableSSHCA = false;
|
||||
allowSANs = [
|
||||
"*.home.arpa"
|
||||
"*.zeroq.su"
|
||||
"home.arpa"
|
||||
"localhost"
|
||||
];
|
||||
maxTLSCertDuration = "2160h";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "JWK";
|
||||
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,
|
||||
...
|
||||
}:
|
||||
let
|
||||
master = import inputs.nixpkgs-master {
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
in
|
||||
{
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
# package = master.syncthing;
|
||||
systemService = true;
|
||||
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}";
|
||||
group = "users";
|
||||
user = "${xlib.device.username}";
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
xlib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs.aichat
|
||||
];
|
||||
}
|
||||
@@ -7,8 +7,31 @@
|
||||
...
|
||||
}:
|
||||
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 (
|
||||
ps: with ps; [
|
||||
# et-xmlfile
|
||||
# exceptiongroup
|
||||
# markdown-it-py
|
||||
# mdurl
|
||||
# munkres
|
||||
# musicbrainzngs
|
||||
# openpyxl
|
||||
# pygments
|
||||
# rich
|
||||
# sniffio
|
||||
anyio
|
||||
beautifulsoup4
|
||||
beetcamp
|
||||
@@ -45,6 +68,7 @@ let
|
||||
requests
|
||||
requests-ratelimiter
|
||||
scipy
|
||||
# setuptools
|
||||
six
|
||||
socksio
|
||||
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";
|
||||
|
||||
users = {
|
||||
@@ -36,6 +40,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
#systemd.tmpfiles.rules = [
|
||||
# "z /home/shared 2775 root users -"
|
||||
#];
|
||||
|
||||
sops = {
|
||||
age = {
|
||||
sshKeyPaths = [
|
||||
@@ -84,7 +92,7 @@
|
||||
ssh_key_public_root = {
|
||||
format = "yaml";
|
||||
key = "ssh_key_public";
|
||||
path = "/root/.ssh/id_ed25519.pub";
|
||||
path = "/root/.ssh/id_ed25519";
|
||||
owner = "root";
|
||||
group = "root";
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -7,14 +7,8 @@
|
||||
../containers/3x-ui.nix
|
||||
./nginx.nix
|
||||
./samba.nix
|
||||
./systemd.nix
|
||||
# ./glances.nix
|
||||
# ./netbird.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";
|
||||
in
|
||||
{
|
||||
# environment.etc."nginx/pubray".text = inputs.zeroq-credentials.services.xray.auth;
|
||||
users.users.nginx.extraGroups = [ "acme" ];
|
||||
services = {
|
||||
nginx = {
|
||||
@@ -16,7 +17,22 @@ in
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
# appendHttpConfig = inputs.zeroq-credentials.services.xray.maps;
|
||||
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" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
@@ -33,12 +49,180 @@ in
|
||||
proxyPass = "http://localhost:2096";
|
||||
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;
|
||||
};
|
||||
};
|
||||
# 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 = [
|
||||
../software/aichat.nix
|
||||
../software/beets
|
||||
../software/whisper.nix
|
||||
./containers
|
||||
./nix-serve.nix
|
||||
# ./tools
|
||||
./tools
|
||||
#../server/open-webui.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