Compare commits

...
33 Commits
Author SHA1 Message Date
oqyude fe391211c4 path refactoring 2026-08-08 22:51:51 +03:00
oqyude 27d81a27e2 nix flake update 2026-08-08 19:24:19 +03:00
oqyude cedc856a02 server preparing migration 2026-08-08 19:24:14 +03:00
oqyude 5f6288bd15 unused code 2026-08-08 17:48:43 +03:00
oqyude 682ab4aa01 path moving 2026-08-07 20:40:27 +03:00
oqyude f61d45a279 termux-api: set CMAKE_POLICY_VERSION_MINIMUM=3.5
Upstream CMakeLists.txt declares cmake_minimum_required(3.0.0), but modern
CMake removed compatibility with < 3.5 and refuses to configure.
2026-08-07 19:32:08 +03:00
oqyude caad27900b termux: declarative ~/.ssh/config + termux-api package
- home/termux.nix: programs.ssh.settings with the 7 known hosts
  (replaces hand-copied ~/.ssh/config; ssh aliases z-s/z-st/z-o/z-ot
  removed, lamet/pubray-1 kept since they have no Host entry)
- modules/termux/termux-api.nix: build termux-api 0.59.1 (cmake,
  am resolved from PATH, shebangs fixed); adds termux-battery-status,
  termux-notification, termux-clipboard-*, etc. Needs the Termux:API
  Android app (com.termux.api from F-Droid) as the actual backend
- mobile.nix: enable android-integration.am (termux-am backend for am)
2026-08-07 19:28:29 +03:00
oqyude 1841f9394c termux: create channels/nixpkgs under real symlink target (dangling symlink blocks mkdir -p) 2026-08-07 03:37:43 +03:00
oqyude d5d62393e3 termux: create .nix-defexpr/channels/nixpkgs/.keep via activation (home-manager cannot link into symlinked dir) 2026-08-07 03:35:19 +03:00
oqyude 58c6e5d48e termux: drop tailscaled (cannot run in proot, SELinux netlink), export SVDIR=/etc/service in zshenv 2026-08-07 03:31:06 +03:00
oqyude 566bc12f00 supervisor termux 2026-08-07 03:03:47 +03:00
oqyude bc9b2dc792 sshd setup for termux 2026-08-07 01:38:46 +03:00
oqyude af90756661 termux setup 2026-08-06 22:57:19 +03:00
oqyude 1856f9e4fd droid: set user.shell to zsh (nix-on-droid manages passwd, chsh is useless) 2026-08-06 18:59:37 +03:00
oqyude 6b426eaa55 add termux device type with shared home-manager userspace module 2026-08-06 17:53:11 +03:00
oqyude 8434688515 nix-on-droid testing branch + lock 2026-08-06 16:19:48 +03:00
oqyude 2a8b15ce01 test 2026-08-06 14:42:27 +03:00
oqyude 30bf6f8da6 gitignore update 2026-08-06 11:53:51 +03:00
oqyude c846fa2321 add nix-on-droid epral config 2026-08-05 16:23:16 +03:00
oqyude 38948e0462 small changes 2026-08-05 11:57:07 +03:00
oqyude c9b15dea59 power settings for server 2026-08-04 11:26:31 +03:00
oqyude 868fa7cdd7 nix flake update 2026-08-03 11:19:04 +03:00
oqyude cb502e8972 coredns server fix 2026-07-31 10:52:24 +03:00
oqyude 5739ccfcaf nextcloud changes 2026-07-28 03:02:52 +03:00
oqyude 1f1b6efdf0 nix flake update 2026-07-25 23:51:36 +03:00
oqyude f1ac4662fd onlyoffice try to deny regress 2026-07-17 12:42:44 +03:00
oqyude 63c46c80ef navidrome setup 2026-07-17 12:32:29 +03:00
oqyude 521d922961 nextcloud update 2026-07-16 23:34:06 +03:00
oqyude e5e9dfd1de samba fixup 2026-07-16 17:33:19 +03:00
oqyude 867a3227b8 calibre fixup 2026-07-16 01:14:47 +03:00
oqyude 7e8cc45a85 nix flake update 2026-07-16 00:14:03 +03:00
oqyude 69c53ccd65 fixup for onlyoffice (disabling) 2026-07-16 00:12:52 +03:00
oqyude 536bdf801e homebox added 2026-07-15 23:08:18 +03:00
47 changed files with 1254 additions and 2371 deletions
+1
View File
@@ -1 +1,2 @@
.vscode .vscode
.omo
+6
View File
@@ -9,4 +9,10 @@
sapphira = import ./server.nix flakeContext; # sapphira sapphira = import ./server.nix flakeContext; # sapphira
wsl = import ./wsl.nix flakeContext; # wsl wsl = import ./wsl.nix flakeContext; # wsl
}; };
nixOnDroidConfigurations = {
epral = import ./mobile.nix flakeContext; # epral (Android via nix-on-droid)
# Alias so a plain `nix-on-droid switch` from a local clone
# (~/.config/nix-on-droid) picks up the device config without `#epral`.
default = import ./mobile.nix flakeContext;
};
} }
+1
View File
@@ -28,6 +28,7 @@
kernel = { kernel = {
sysctl = { sysctl = {
"fs.inotify.max_user_watches" = "204800"; "fs.inotify.max_user_watches" = "204800";
"net.ipv4.ip_forward" = 1;
}; };
}; };
kernelModules = [ kernelModules = [
-3
View File
@@ -68,7 +68,6 @@ let
boot = { boot = {
kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable; kernelPackages = lib.mkDefault pkgs.linuxPackages_xanmod_stable;
#kernelParams = [ "usbcore.autosuspend=-1" ];
loader = { loader = {
systemd-boot.enable = lib.mkDefault true; systemd-boot.enable = lib.mkDefault true;
efi.canTouchEfiVariables = lib.mkDefault true; efi.canTouchEfiVariables = lib.mkDefault true;
@@ -79,8 +78,6 @@ let
bluetooth.enable = true; bluetooth.enable = true;
}; };
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
networking = { networking = {
hostName = "${xlib.device.hostname}"; hostName = "${xlib.device.hostname}";
networkmanager.enable = true; networkmanager.enable = true;
+123
View File
@@ -0,0 +1,123 @@
{
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";
};
}
+4 -7
View File
@@ -83,10 +83,7 @@ let
]; ];
services = { services = {
power-profiles-daemon.enable = lib.mkForce false;
earlyoom.enable = true; earlyoom.enable = true;
auto-cpufreq.enable = true;
throttled.enable = false;
journald = { journald = {
extraConfig = '' extraConfig = ''
SystemMaxUse=512M SystemMaxUse=512M
@@ -113,10 +110,10 @@ let
hostName = "${xlib.device.hostname}"; hostName = "${xlib.device.hostname}";
networkmanager.enable = true; networkmanager.enable = true;
firewall.enable = false; firewall.enable = false;
nameservers = [ # nameservers = [
"127.0.0.1" # "192.168.1.1"
"192.168.1.1" # "127.0.0.1"
]; # ];
}; };
system = { system = {
Generated
+166 -25
View File
@@ -13,11 +13,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1781627888, "lastModified": 1785892481,
"narHash": "sha256-5yHuAh9k7rT7rtf3uRaXkiUyYvQE9oaCgzhprLm2mr8=", "narHash": "sha256-1JTy9/LyITSBP1a4WZ9tmOv2yDh9OTbA3YUJbQHiMYc=",
"owner": "serokell", "owner": "serokell",
"repo": "deploy-rs", "repo": "deploy-rs",
"rev": "6d3087eedff75a715b40c0e124ba15d2dd7bec28", "rev": "f6f2359a6cb7e3c51ea673bcb39933ac2622350d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -88,11 +88,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783823409, "lastModified": 1786031233,
"narHash": "sha256-OI4IkRjRXa1e7hYmCGJDPDq5H/kPwhsyoS80cNUF9fI=", "narHash": "sha256-TIDlLTLI1/pB7IqgjzcKQjpODQsZE2oII4XGG9B6KjI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "7566825d4652a1b885bd4ce65bd9e8def432fec9", "rev": "7834e82588860aaf780cec1366524456a70898d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -101,16 +101,70 @@
"type": "github" "type": "github"
} }
}, },
"nix-formatter-pack": {
"inputs": {
"nixpkgs": [
"nix-on-droid",
"nixpkgs"
],
"nmd": [
"nix-on-droid",
"nmd"
],
"nmt": "nmt"
},
"locked": {
"lastModified": 1705252799,
"narHash": "sha256-HgSTREh7VoXjGgNDwKQUYcYo13rPkltW7IitHrTPA5c=",
"owner": "Gerschtli",
"repo": "nix-formatter-pack",
"rev": "2de39dedd79aab14c01b9e2934842051a160ffa5",
"type": "github"
},
"original": {
"owner": "Gerschtli",
"repo": "nix-formatter-pack",
"type": "github"
}
},
"nix-on-droid": {
"inputs": {
"home-manager": [
"home-manager"
],
"nix-formatter-pack": "nix-formatter-pack",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-docs": "nixpkgs-docs",
"nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap",
"nmd": "nmd"
},
"locked": {
"lastModified": 1772387862,
"narHash": "sha256-o7q9flWMCsFW2mkz8TQhvPUcwFczO7VX9I6U2u2vN4o=",
"owner": "nix-community",
"repo": "nix-on-droid",
"rev": "67b105336cb06b764366bfe241afa2352de6a926",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "testing",
"repo": "nix-on-droid",
"type": "github"
}
},
"nixos-hardware": { "nixos-hardware": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1783792734, "lastModified": 1785232496,
"narHash": "sha256-50rvY9GdFvpYDcMLcD/4cWSi0hVxArT5wsGlVsHy8eY=", "narHash": "sha256-65EQYIRRpTdpH8lUiB6Mvo5uBkG60aBIzAJuALfx+O0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "8efb4337e857949f4cfac86d12ef1066f417f31f", "rev": "2e790b0a6be8ec2b76174ac0931b8ff11919ec98",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -130,11 +184,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783336371, "lastModified": 1784642409,
"narHash": "sha256-ZisTtweyb7JUwPP54HAXE9TypT8m89dIxDI36Ak0hAs=", "narHash": "sha256-hcbDqFuySAJawljt5r0sKBCJKYnbtGD0T/ZIozH1Dq0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "a9620cfa43f0c1c30a46c31ae3c6e58cdb124a14", "rev": "eaeb18da90024448a60eb1ec7132eafa4003404e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -189,13 +243,45 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-master": { "nixpkgs-docs": {
"locked": { "locked": {
"lastModified": 1783868082, "lastModified": 1705957679,
"narHash": "sha256-Y3chcYsoUJp8VqLl2x1JoZZ1OktO4oYAT1F74hwvLH8=", "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2b169ebe89d6fad56a1c84298d15f2c9ee5d8c60", "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=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "94ec6671dbe7d4879c2c8103e67425e85bf066d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -239,11 +325,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1783816212, "lastModified": 1785975029,
"narHash": "sha256-2aZisVTVGSFEk3MYcOiWQp3zvwyzbqpktB69Rcfp150=", "narHash": "sha256-X44cn5rzytELc3NNoQsh0aLkjWA/QzPfc6HPQmsG3sU=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3b32825de172d0bc85664f495edb096b10862524", "rev": "70ce234312134a463ba7728e94da2486a1d237ac",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -255,11 +341,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1783776592, "lastModified": 1785967620,
"narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=", "narHash": "sha256-IItrdb7Puk05RqOBWZYFC5X6Wl1sJmCfh5MWVHw5iMM=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3", "rev": "b7c2ada94fe99c15b0dbcf4d11fd7850b957a436",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -269,6 +355,44 @@
"type": "github" "type": "github"
} }
}, },
"nmd": {
"inputs": {
"nixpkgs": [
"nix-on-droid",
"nixpkgs-docs"
],
"scss-reset": "scss-reset"
},
"locked": {
"lastModified": 1705050560,
"narHash": "sha256-x3zzcdvhJpodsmdjqB4t5mkVW22V3wqHLOun0KRBzUI=",
"owner": "~rycee",
"repo": "nmd",
"rev": "66d9334933119c36f91a78d565c152a4fdc8d3d3",
"type": "sourcehut"
},
"original": {
"owner": "~rycee",
"repo": "nmd",
"type": "sourcehut"
}
},
"nmt": {
"flake": false,
"locked": {
"lastModified": 1648075362,
"narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=",
"owner": "rycee",
"repo": "nmt",
"rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae",
"type": "gitlab"
},
"original": {
"owner": "rycee",
"repo": "nmt",
"type": "gitlab"
}
},
"plasma-manager": { "plasma-manager": {
"inputs": { "inputs": {
"home-manager": [ "home-manager": [
@@ -279,11 +403,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783574839, "lastModified": 1785762349,
"narHash": "sha256-ICof1tV4/9XheBLBGf7dhMhfMq4dOs1zwTHrr7zGFlA=", "narHash": "sha256-jZhZkzAwc7f3exzcTDJWP2WCAchCv0iNC3UF/QsahdQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "plasma-manager", "repo": "plasma-manager",
"rev": "c551f0687658e4bb699cfff6015436ad7ee57a0d", "rev": "a19a2a029fa180911bd89c554dca1616e10f4c1d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -319,6 +443,7 @@
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"grub2-themes": "grub2-themes", "grub2-themes": "grub2-themes",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-on-droid": "nix-on-droid",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixos-wsl": "nixos-wsl", "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
@@ -336,6 +461,22 @@
"zeroq-credentials": "zeroq-credentials" "zeroq-credentials": "zeroq-credentials"
} }
}, },
"scss-reset": {
"flake": false,
"locked": {
"lastModified": 1631450058,
"narHash": "sha256-muDlZJPtXDIGevSEWkicPP0HQ6VtucbkMNygpGlBEUM=",
"owner": "andreymatin",
"repo": "scss-reset",
"rev": "0cf50e27a4e95e9bb5b1715eedf9c54dee1a5a91",
"type": "github"
},
"original": {
"owner": "andreymatin",
"repo": "scss-reset",
"type": "github"
}
},
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
+7
View File
@@ -24,6 +24,13 @@
nixpkgs.follows = "nixpkgs"; nixpkgs.follows = "nixpkgs";
}; };
}; };
nix-on-droid = {
url = "github:nix-community/nix-on-droid/testing"; # testing branch, used on the device
inputs = {
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
};
deploy-rs = { deploy-rs = {
url = "github:serokell/deploy-rs"; url = "github:serokell/deploy-rs";
inputs = { inputs = {
-12
View File
@@ -1,21 +1,9 @@
{ {
config, config,
pkgs, pkgs,
xlib,
... ...
}: }:
let
streamripPath = "${xlib.dirs.wsl-storage}/streamrip";
in
{ {
# xdg = {
# configFile = {
# "streamrip" = {
# source = config.lib.file.mkOutOfStoreSymlink streamripPath;
# target = "streamrip";
# };
# };
# };
home.packages = [ home.packages = [
pkgs.yt-dlp-light pkgs.yt-dlp-light
]; ];
-27
View File
@@ -8,25 +8,6 @@
programs = { programs = {
mangohud.enable = true; mangohud.enable = true;
keepassxc.enable = true; keepassxc.enable = true;
zed-editor = {
enable = false;
extensions = [
"nix"
];
userSettings = {
"telemetry" = {
"diagnostics" = false;
"metrics" = false;
};
"ui_font_size" = 20;
"buffer_font_size" = 26;
"theme" = {
"mode" = "system";
"light" = "Ayu Light";
"dark" = "Ayu Dark";
};
};
};
}; };
services = { services = {
kdeconnect.enable = true; kdeconnect.enable = true;
@@ -34,12 +15,6 @@
}; };
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
# Surfing
# (brave.override {
# commandLineArgs = [
# "--password-store=basic" # on purpose to make it break "--password-store=gnome-libsecret"
# ];
# })
brave brave
v2rayn v2rayn
@@ -48,8 +23,6 @@
# amdgpu_top # amdgpu_top
vscodium vscodium
ayugram-desktop ayugram-desktop
# vesktop
# discord
gramps gramps
kdePackages.filelight kdePackages.filelight
localsend localsend
+283
View File
@@ -0,0 +1,283 @@
{
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;
};
};
};
};
}
+12 -9
View File
@@ -5,6 +5,9 @@
xlib, xlib,
... ...
}: }:
let
panel = "${xlib.dirs.services-nodes-folder}/${xlib.device.hostname}/3x-ui";
in
{ {
virtualisation = { virtualisation = {
podman = { podman = {
@@ -25,8 +28,8 @@
"TZ" = "Europe/Moscow"; "TZ" = "Europe/Moscow";
}; };
volumes = [ volumes = [
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/cert/:/root/cert:rw" "${panel}/cert/:/root/cert:rw"
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/db/:/etc/x-ui:rw" "${panel}/db/:/etc/x-ui:rw"
]; ];
log-driver = "journald"; log-driver = "journald";
extraOptions = [ extraOptions = [
@@ -97,13 +100,13 @@
}; };
# Folders # Folders
tmpfiles.rules = [ tmpfiles.rules = [
"d /mnt 0755 root root -" "d ${xlib.dirs.services-mnt-folder} 0755 root root -"
"d /mnt/services 0755 root root -" "d ${xlib.dirs.services-nodes-folder} 0755 root root -"
"d /mnt/services/containers 0755 root root -" "d ${xlib.dirs.services-nodes-folder}/${xlib.device.hostname} 0755 root root -"
"d /mnt/services/containers/3x-ui 0755 root root -" "d ${panel} 0755 root root -"
"d /mnt/services/containers/3x-ui/cert 0755 root root -" "d ${panel}/db 0755 root root -"
"d /mnt/services/containers/3x-ui/db 0755 root root -" "d ${panel}/cert 0755 root root -"
"Z /mnt/services/containers/3x-ui 0755 root root -" "Z ${panel} 0755 root root -"
]; ];
}; };
+28 -2
View File
@@ -9,11 +9,14 @@ let
... ...
}: }:
{ {
# NixOS-only modules. termux runs nix-on-droid (its own module system,
# class = "nixOnDroid"): options like services.*, users.*, sops.*, disko.*
# and nixpkgs.overlays (flake assertion) do not exist there.
imports = with inputs; [ imports = with inputs; [
./essentials ./essentials
./users.nix
./options.nix ./options.nix
(./. + "/${deviceType}") # specific modules ./users.nix
(./. + "/${deviceType}")
home-manager.nixosModules.home-manager # home-manager module home-manager.nixosModules.home-manager # home-manager module
# nix-index-database.nixosModules.nix-index # nix-index module # nix-index-database.nixosModules.nix-index # nix-index module
@@ -47,6 +50,28 @@ let
sops-nix.nixosModules.sops # sops module sops-nix.nixosModules.sops # sops module
]; ];
_module.args = {
inputs = inputs;
xlib = config.xlib;
};
};
strictModule =
{
config,
deviceType,
lib,
xlib,
...
}:
{
imports = with inputs; [
# ./essentials
# ./users.nix
./options.nix
(./. + "/${deviceType}")
# sops-nix.nixosModules.sops
];
_module.args = { _module.args = {
inputs = inputs; inputs = inputs;
xlib = config.xlib; xlib = config.xlib;
@@ -57,5 +82,6 @@ in
nixosModules = { nixosModules = {
default = defaultModule; default = defaultModule;
public = publicModule; public = publicModule;
strict = strictModule;
}; };
} }
-5
View File
@@ -4,11 +4,6 @@
inputs, inputs,
... ...
}: }:
let
master = import inputs.nixpkgs-master {
system = "x86_64-linux";
};
in
{ {
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [
+2 -2
View File
@@ -15,7 +15,7 @@
settings = { settings = {
require-sigs = false; require-sigs = false;
substituters = [ substituters = [
"http://100.64.0.0:5000" "https://nix-cache.zeroq.su"
"https://cache.nixos.org" "https://cache.nixos.org"
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://mirror.yandex.ru/nixos" "https://mirror.yandex.ru/nixos"
@@ -27,7 +27,7 @@
# "https://nixos.snix.store" # https://nixos.snix.store/ # "https://nixos.snix.store" # https://nixos.snix.store/
]; ];
trusted-public-keys = [ trusted-public-keys = [
"nix-cache.home.arpa:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s=" "nix-cache.zeroq.su:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
]; ];
stalled-download-timeout = 8; stalled-download-timeout = 8;
+9 -4
View File
@@ -19,15 +19,18 @@
theme = "robbyrussell"; theme = "robbyrussell";
}; };
shellInit = '' shellInit = ''
beet-n() {
echo "$*" | aichat -cer beets
}
beet-p() { beet-p() {
beet mod path:. playlist="$*" local base="/home/oqyude/.config/beets/My"
local rel
rel=$(realpath --relative-to="$base" "$PWD")
beet mod "path:$rel" playlist="$*"
} }
beet-ims() { beet-ims() {
beet im ./ -S $* beet im ./ -S $*
} }
beet-path() {
realpath --relative-to="/home/oqyude/.config/beets/My" "$1"
}
''; '';
shellAliases = { shellAliases = {
# shell # shell
@@ -42,7 +45,9 @@
gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'"; gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'";
y = "yazi"; y = "yazi";
nix-shellp = "nix-shell --run $SHELL -p"; nix-shellp = "nix-shell --run $SHELL -p";
beet-path-library = "realpath --relative-to='/home/oqyude/.config/beets/My' .";
z-proxy = "export ALL_PROXY=socks5://localhost:10808"; z-proxy = "export ALL_PROXY=socks5://localhost:10808";
zh-proxy = "export HTTPS_PROXY=http://localhost:10808 && export HTTP_PROXY=http://localhost:10808";
# beets # beets
beet-ima = "beet im ./ -A"; beet-ima = "beet im ./ -A";
-2
View File
@@ -4,6 +4,4 @@
... ...
}: }:
{ {
# imports = [
# ];
} }
+6
View File
@@ -16,6 +16,7 @@
"vds" "vds"
"vds-new" "vds-new"
"wsl" "wsl"
"termux"
]; ];
default = "minimal"; default = "minimal";
description = "Type of device for this host."; description = "Type of device for this host.";
@@ -117,6 +118,11 @@
default = "/mnt/services"; default = "/mnt/services";
description = "All services folder."; description = "All services folder.";
}; };
services-nodes-folder = lib.mkOption {
type = lib.types.str;
default = "${config.xlib.dirs.services-mnt-folder}/nodes";
description = "All nodes folder.";
};
postgresql-folder = lib.mkOption { postgresql-folder = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "${config.xlib.dirs.services-mnt-folder}/postgresql"; default = "${config.xlib.dirs.services-mnt-folder}/postgresql";
-32
View File
@@ -1,32 +0,0 @@
{
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"
];
};
};
};
}
+11 -11
View File
@@ -8,20 +8,20 @@
acme = { acme = {
acceptTerms = true; acceptTerms = true;
defaults = { defaults = {
email = "oqyude@zeroq.su"; email = "oqyude@gmail.com";
server = "https://localhost:9000/acme/acme/directory";
dnsProvider = null;
}; };
# certs = { # certs = {
# # "home.arpa" = { # "home.arpa" = {
# # domain = "*.home.arpa"; # email = "oqyude@zeroq.su";
# # server = "https://localhost:9000/acme/acme/directory"; # domain = "*.home.arpa";
# # listenHTTP = ":80"; # server = "https://localhost:9000/acme/acme/directory";
# # }; # listenHTTP = ":80";
# "turn.home.arpa" = { # dnsProvider = null;
# listenHTTP = "127.0.0.1:80";
# group = "turnserver";
# }; # };
# # "turn.home.arpa" = {
# # listenHTTP = "127.0.0.1:80";
# # group = "turnserver";
# # };
# }; # };
}; };
}; };
+1 -1
View File
@@ -6,7 +6,7 @@
... ...
}: }:
let let
stable = import inputs.nixpkgs-calibre { stable = import inputs.nixpkgs-previous {
system = "x86_64-linux"; system = "x86_64-linux";
}; };
in in
+5 -1
View File
@@ -15,8 +15,10 @@
192.168.1.20 flux.zeroq.su 192.168.1.20 flux.zeroq.su
192.168.1.20 git.zeroq.su 192.168.1.20 git.zeroq.su
192.168.1.20 glances.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 immich.zeroq.su
192.168.1.20 kuma.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 nextcloud.zeroq.su
192.168.1.20 office.zeroq.su 192.168.1.20 office.zeroq.su
192.168.1.20 pdf.zeroq.su 192.168.1.20 pdf.zeroq.su
@@ -38,8 +40,10 @@
192.168.1.20 git.home.arpa 192.168.1.20 git.home.arpa
192.168.1.20 glances.home.arpa 192.168.1.20 glances.home.arpa
192.168.1.20 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 immich.home.arpa
192.168.1.20 kuma.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 nextcloud.home.arpa
192.168.1.20 office.home.arpa 192.168.1.20 office.home.arpa
192.168.1.20 pdf.home.arpa 192.168.1.20 pdf.home.arpa
@@ -51,7 +55,7 @@
log log
} }
.:53 { .:53 {
forward . 1.1.1.1 9.9.9.9 forward . 192.168.1.1 1.1.1.1
cache 300 cache 300
} }
''; '';
+5 -2
View File
@@ -12,14 +12,18 @@
./coredns.nix ./coredns.nix
./gitea.nix ./gitea.nix
./glances.nix ./glances.nix
./homebox.nix
./immich.nix ./immich.nix
./miniflux.nix ./miniflux.nix
./navidrome.nix
./nextcloud.nix ./nextcloud.nix
./nginx.nix ./nginx.nix
./nix-serve.nix ./nix-serve.nix
./onlyoffice.nix
./postgresql.nix ./postgresql.nix
./power.nix
./samba.nix ./samba.nix
./step-ca.nix # ./step-ca.nix
./syncthing.nix ./syncthing.nix
./systemd.nix ./systemd.nix
# ../containers/remnawave.nix # ../containers/remnawave.nix
@@ -27,7 +31,6 @@
# ./mealie.nix # ./mealie.nix
# ./memos.nix # ./memos.nix
# ./n8n.nix # ./n8n.nix
# ./navidrome.nix
# ./netdata.nix # ./netdata.nix
# ./nfs.nix # ./nfs.nix
# ./node-red.nix # ./node-red.nix
+2 -1
View File
@@ -14,7 +14,7 @@
appName = "ZeroQ Gitea Service"; appName = "ZeroQ Gitea Service";
settings = { settings = {
server = { server = {
DOMAIN = "git.home.arpa"; DOMAIN = "git.zeroq.su";
HTTP_PORT = 3000; HTTP_PORT = 3000;
}; };
service.DISABLE_REGISTRATION = true; service.DISABLE_REGISTRATION = true;
@@ -23,6 +23,7 @@
}; };
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d ${config.services.gitea.stateDir} 0755 gitea gitea -"
"z ${config.services.gitea.stateDir} 0755 gitea gitea -" "z ${config.services.gitea.stateDir} 0755 gitea gitea -"
]; ];
} }
+44
View File
@@ -0,0 +1,44 @@
{
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
View File
@@ -6,16 +6,10 @@
xlib, xlib,
... ...
}: }:
let
new = import inputs.nixpkgs-unstable {
system = "x86_64-linux";
};
in
{ {
services = { services = {
immich = { immich = {
enable = true; enable = true;
# package = new.immich;
port = 2283; port = 2283;
host = "0.0.0.0"; host = "0.0.0.0";
openFirewall = true; openFirewall = true;
+2 -2
View File
@@ -9,12 +9,12 @@
{ {
services = { services = {
navidrome = { navidrome = {
enable = false; enable = true;
openFirewall = true; openFirewall = true;
# environmentFile = ""; # environmentFile = "";
settings = { settings = {
Address = "0.0.0.0"; Address = "0.0.0.0";
Port = "4533"; Port = 4533;
MusicFolder = "/mnt/beets/music"; MusicFolder = "/mnt/beets/music";
}; };
}; };
+13 -44
View File
@@ -1,24 +1,17 @@
{ {
config, config,
inputs,
lib, lib,
pkgs, pkgs,
inputs,
xlib, xlib,
... ...
}: }:
let
previous = import inputs.nixpkgs-master {
system = "x86_64-linux";
config.allowUnfree = true;
config.allowUnfreePredicate = true;
};
in
{ {
services = { services = {
nextcloud-whiteboard-server = { nextcloud-whiteboard-server = {
enable = true; enable = true;
settings = { settings = {
NEXTCLOUD_URL = "https://nextcloud.home.arpa"; NEXTCLOUD_URL = "https://nextcloud.zeroq.su";
}; };
secrets = [ config.sops.secrets.nextcloud-whiteboard-jwt.path ]; secrets = [ config.sops.secrets.nextcloud-whiteboard-jwt.path ];
}; };
@@ -27,8 +20,8 @@ in
hostName = "talk.private"; hostName = "talk.private";
backends.nextcloud = { backends.nextcloud = {
urls = [ urls = [
"https://nextcloud.home.arpa"
"https://nextcloud.zeroq.su" "https://nextcloud.zeroq.su"
# "https://nextcloud.home.arpa"
]; ];
secretFile = config.sops.secrets.nextcloud-talk-secret.path; secretFile = config.sops.secrets.nextcloud-talk-secret.path;
}; };
@@ -47,16 +40,16 @@ in
secretFile = config.sops.secrets.turn-secret.path; secretFile = config.sops.secrets.turn-secret.path;
apikeyFile = config.sops.secrets.turn-api-key.path; apikeyFile = config.sops.secrets.turn-api-key.path;
servers = [ servers = [
"turn:turn.home.arpa:3478?transport=udp" "turn:turn.zeroq.su:3478?transport=udp"
"turn:turn.home.arpa:3478?transport=tcp" "turn:turn.zeroq.su:3478?transport=tcp"
# "turns:turn.home.arpa:5349?transport=tcp" # "turns:turn.zeroq.su:5349?transport=tcp"
]; ];
}; };
}; };
}; };
nextcloud = { nextcloud = {
enable = true; enable = true;
package = pkgs.nextcloud33; package = pkgs.nextcloud34;
hostName = "nextcloud.private"; hostName = "nextcloud.private";
database.createLocally = true; database.createLocally = true;
home = "${xlib.dirs.services-mnt-folder}/nextcloud"; home = "${xlib.dirs.services-mnt-folder}/nextcloud";
@@ -79,17 +72,19 @@ in
trusted_domains = [ trusted_domains = [
"100.64.0.0" "100.64.0.0"
"192.168.1.20" "192.168.1.20"
"37.128.246.126"
"localhost" "localhost"
"nextcloud.home.arpa"
"nextcloud.private" "nextcloud.private"
"nextcloud.zeroq.su" "nextcloud.zeroq.su"
"office.zeroq.su"
"office.home.arpa" "office.home.arpa"
"nextcloud.home.arpa" "office.zeroq.su"
]; ];
trusted_proxies = [ trusted_proxies = [
"100.64.1.0" "100.64.1.0"
"192.168.1.20"
"109.248.161.5" "109.248.161.5"
"192.168.1.20"
"37.128.246.126"
]; ];
overwriteprotocol = "https"; # maybe no overwriteprotocol = "https"; # maybe no
}; };
@@ -98,7 +93,7 @@ in
notify_push = { notify_push = {
enable = true; enable = true;
bendDomainToLocalhost = true; bendDomainToLocalhost = true;
nextcloudUrl = "https://nextcloud.home.arpa"; nextcloudUrl = "https://nextcloud.zeroq.su";
}; };
# phpPackage = pkgs.php85; # phpPackage = pkgs.php85;
extraApps = { extraApps = {
@@ -170,16 +165,6 @@ in
# }; # };
# }; # };
# }; # };
onlyoffice = {
enable = true;
package = previous.onlyoffice-documentserver;
hostname = "office.home.arpa";
port = 8090;
allowLocalConnections = true;
wopi = true;
jwtSecretFile = config.sops.secrets.onlyoffice-jwt.path;
securityNonceFile = config.sops.secrets.onlyoffice-nonce.path;
};
}; };
# fonts.packages = [ work.corefonts ]; # fonts.packages = [ work.corefonts ];
@@ -240,22 +225,6 @@ in
group = "nextcloud"; group = "nextcloud";
mode = "0650"; mode = "0650";
}; };
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";
};
nextcloud-talk-secret = { nextcloud-talk-secret = {
format = "yaml"; format = "yaml";
key = "nextcloud-talk-secret"; key = "nextcloud-talk-secret";
+293 -95
View File
@@ -35,7 +35,7 @@ in
} }
]; ];
}; };
"office.home.arpa" = { "office.zeroq.su" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
}; };
@@ -64,36 +64,46 @@ in
client_max_body_size 5G; client_max_body_size 5G;
''; '';
}; };
"pdf.home.arpa" = { # "pdf.home.arpa" = {
forceSSL = true; # forceSSL = true;
enableACME = true; # enableACME = true;
locations = { # locations = {
"/" = { # "/" = {
proxyPass = "http://127.0.0.1:8446"; # proxyPass = "http://127.0.0.1:8446";
proxyWebsockets = true; # proxyWebsockets = true;
}; # };
}; # };
extraConfig = '' # extraConfig = ''
client_max_body_size 5G; # client_max_body_size 5G;
''; # '';
}; # };
"nextcloud.home.arpa" = { # "homebox.home.arpa" = {
forceSSL = true; # forceSSL = true;
enableACME = true; # enableACME = true;
locations = { # locations = {
"/" = { # "/" = {
proxyPass = "http://127.0.0.1:10000"; # proxyPass = "http://127.0.0.1:7745";
proxyWebsockets = true; # proxyWebsockets = true;
}; # };
"/whiteboard" = { # };
proxyPass = "http://127.0.0.1:3002"; # };
proxyWebsockets = true; # "nextcloud.home.arpa" = {
}; # forceSSL = true;
}; # enableACME = true;
extraConfig = '' # locations = {
client_max_body_size 5G; # "/" = {
''; # 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" = { # "talk.home.arpa" = {
# forceSSL = true; # forceSSL = true;
# enableACME = true; # enableACME = true;
@@ -120,39 +130,28 @@ in
# client_max_body_size 5G; # client_max_body_size 5G;
# ''; # '';
# }; # };
"ca.home.arpa" = { # "ca.zeroq.su" = {
forceSSL = true; # forceSSL = true;
enableACME = true; # enableACME = true;
locations."/" = { # locations."/" = {
proxyPass = "http://127.0.0.1:9000"; # proxyPass = "http://127.0.0.1:9000";
proxyWebsockets = true; # proxyWebsockets = true;
}; # };
extraConfig = '' # extraConfig = ''
client_max_body_size 5G; # client_max_body_size 5G;
''; # '';
}; # };
"git.home.arpa" = { # "git.home.arpa" = {
forceSSL = true; # forceSSL = true;
enableACME = true; # enableACME = true;
locations."/" = { # locations."/" = {
proxyPass = "http://127.0.0.1:3000"; # proxyPass = "http://127.0.0.1:3000";
proxyWebsockets = true; # proxyWebsockets = true;
}; # };
extraConfig = '' # extraConfig = ''
client_max_body_size 5G; # client_max_body_size 5G;
''; # '';
}; # };
"git.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:3000";
proxyWebsockets = true;
};
extraConfig = ''
client_max_body_size 5G;
'';
};
# "n8n.home.arpa" = { # "n8n.home.arpa" = {
# forceSSL = true; # forceSSL = true;
# enableACME = true; # enableACME = true;
@@ -164,68 +163,263 @@ in
# client_max_body_size 5G; # client_max_body_size 5G;
# ''; # '';
# }; # };
"kuma.home.arpa" = { # "kuma.home.arpa" = {
forceSSL = true; # forceSSL = true;
enableACME = true; # enableACME = true;
locations."/" = { # locations."/" = {
proxyPass = "http://127.0.0.1:4001"; # proxyPass = "http://127.0.0.1:4001";
proxyWebsockets = true; # proxyWebsockets = true;
}; # };
}; # };
"flux.home.arpa" = { # "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; addSSL = true;
enableACME = true; enableACME = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:6061"; proxyPass = "http://${server}:2283";
proxyWebsockets = true;
};
};
"immich.home.arpa" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:2283";
proxyWebsockets = true; proxyWebsockets = true;
}; };
extraConfig = '' extraConfig = ''
client_max_body_size 5G; client_max_body_size 5G;
''; '';
}; };
"calibre.home.arpa" = { "kuma.zeroq.su" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:8083"; proxyPass = "http://${server}:4001";
proxyWebsockets = true;
};
};
"health.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:19999";
proxyWebsockets = true;
};
};
"git.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:3000";
proxyWebsockets = true;
};
};
"homebox.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:7745";
proxyWebsockets = true;
};
};
# "agent.zeroq.su" = {
# forceSSL = true;
# enableACME = true;
# locations."/" = {
# proxyPass = "http://${server}:3000";
# proxyWebsockets = true;
# };
# };
# "node-red.zeroq.su" = {
# forceSSL = true;
# enableACME = true;
# kTLS = true;
# locations."/" = {
# proxyPass = "http://${server}:1880";
# proxyWebsockets = true;
# };
# extraConfig = ''
# client_max_body_size 5G;
# '';
# };
"zeroq.su" = {
forceSSL = true;
enableACME = true;
root = pkgs.writeTextDir "index.html" ''
<!doctype html>
<html>
<body>
<pre>What are you doing here?</pre>
</body>
</html>
'';
locations = {
"/guest/" = {
proxyPass = "http://${server}:80";
proxyWebsockets = true;
};
# "/.well-known/discord" = {
# extraConfig = ''
# default_type text/plain;
# return 200 "dh=c2d103553a4cfdaa1b7952a87a7d8120a1e167cc";
# '';
# };
};
};
"flux.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:6061";
proxyWebsockets = true;
};
};
"navidrome.zeroq.su" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:4533";
proxyWebsockets = true;
};
};
"vetymae.opencodes.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://100.86.62.4:4096";
proxyWebsockets = true;
};
};
"lamet.opencodes.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://100.106.21.39:6061";
proxyWebsockets = true;
};
};
"n8n.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:5678";
proxyWebsockets = true;
};
};
# "office.zeroq.su" = {
# enableACME = true;
# forceSSL = true;
# locations = {
# "/" = {
# proxyPass = "http://${server}:8090";
# proxyWebsockets = true;
# };
# };
# };
"nextcloud.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
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; proxyWebsockets = true;
}; };
extraConfig = '' extraConfig = ''
client_max_body_size 5G; client_max_body_size 5G;
''; '';
}; };
"dns.home.arpa" = { "nix-cache.zeroq.su" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:53"; proxyPass = "http://${server}:5000";
proxyWebsockets = true;
}; };
extraConfig = '' extraConfig = ''
client_max_body_size 5G; client_max_body_size 5G;
''; '';
}; };
"glances.home.arpa" = { "pdf.zeroq.su" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:61208"; proxyPass = "http://${server}:8446";
}; proxyWebsockets = true;
};
"syncthing.home.arpa" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8384";
}; };
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" = { # "zeroq.home.arpa" = {
# forceSSL = true; # forceSSL = true;
# enableACME = true; # enableACME = true;
@@ -251,4 +445,8 @@ in
}; };
}; };
}; };
networking.firewall.allowedTCPPorts = [
80
443
];
} }
+45
View File
@@ -0,0 +1,45 @@
{
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";
};
};
}
-5
View File
@@ -6,11 +6,6 @@
xlib, xlib,
... ...
}: }:
let
master = import inputs.nixpkgs-master {
system = "x86_64-linux";
};
in
{ {
services = { services = {
postgresql = { postgresql = {
+16
View File
@@ -0,0 +1,16 @@
{
config,
lib,
pkgs,
...
}:
{
services = {
tuned = {
enable = true;
};
auto-cpufreq.enable = false;
power-profiles-daemon.enable = lib.mkForce false;
throttled.enable = false;
};
}
+3 -2
View File
@@ -1,5 +1,6 @@
{ {
config, config,
inputs,
pkgs, pkgs,
xlib, xlib,
... ...
@@ -9,12 +10,12 @@
samba-wsdd = { samba-wsdd = {
enable = true; enable = true;
openFirewall = true; openFirewall = true;
hostname = "sapphira.home.arpa"; hostname = "sapphira";
discovery = true; discovery = true;
}; };
samba = { samba = {
enable = true; enable = true;
package = pkgs.samba4Full; # package = pkgs.samba4Full;
nmbd = { nmbd = {
enable = true; enable = true;
}; };
+1 -6
View File
@@ -4,18 +4,13 @@
inputs, inputs,
... ...
}: }:
let
master = import inputs.nixpkgs-master {
system = "x86_64-linux";
};
in
{ {
services.syncthing = { services.syncthing = {
enable = true; enable = true;
# package = master.syncthing; # package = master.syncthing;
systemService = true; systemService = true;
guiAddress = "0.0.0.0:8384"; guiAddress = "0.0.0.0:8384";
configDir = "${xlib.dirs.storage}/Syncthing/${xlib.device.hostname}"; configDir = "${xlib.dirs.storage}/persist/Syncthing/${xlib.device.hostname}";
dataDir = "${xlib.dirs.server-home}"; dataDir = "${xlib.dirs.server-home}";
group = "users"; group = "users";
user = "${xlib.device.username}"; user = "${xlib.device.username}";
-12
View File
@@ -1,12 +0,0 @@
{
config,
lib,
pkgs,
xlib,
...
}:
{
environment.systemPackages = [
pkgs.aichat
];
}
-24
View File
@@ -7,31 +7,8 @@
... ...
}: }:
let let
stable = import inputs.nixpkgs-beets {
system = "x86_64-linux";
};
in
let
# depsOverlay = import ./dependencies.nix {
# # ./dependencies-full.nix if broken
# inherit (pkgs) fetchurl fetchgit fetchhg;
# inherit pkgs;
# };
# python3 = pkgs.python3.override {
# packageOverrides = depsOverlay;
# };
beetsEnv = pkgs.python314.withPackages ( beetsEnv = pkgs.python314.withPackages (
ps: with ps; [ ps: with ps; [
# et-xmlfile
# exceptiongroup
# markdown-it-py
# mdurl
# munkres
# musicbrainzngs
# openpyxl
# pygments
# rich
# sniffio
anyio anyio
beautifulsoup4 beautifulsoup4
beetcamp beetcamp
@@ -68,7 +45,6 @@ let
requests requests
requests-ratelimiter requests-ratelimiter
scipy scipy
# setuptools
six six
socksio socksio
soupsieve soupsieve
-573
View File
@@ -1,573 +0,0 @@
# 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 = [ ];
};
}
-57
View File
@@ -1,57 +0,0 @@
{
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
];
};
};
};
}
@@ -1,573 +0,0 @@
# 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 = [ ];
};
}
@@ -1,573 +0,0 @@
# 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 = [ ];
# };
}
-24
View File
@@ -1,24 +0,0 @@
{
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;
}
+95
View File
@@ -0,0 +1,95 @@
{
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 { })
];
}
+64
View File
@@ -0,0 +1,64 @@
# 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;
};
}
-21
View File
@@ -6,10 +6,6 @@
... ...
}: }:
{ {
#imports = [
# ./others
#];
xlib.device.username = "oqyude"; xlib.device.username = "oqyude";
users = { users = {
@@ -40,10 +36,6 @@
}; };
}; };
#systemd.tmpfiles.rules = [
# "z /home/shared 2775 root users -"
#];
sops = { sops = {
age = { age = {
sshKeyPaths = [ sshKeyPaths = [
@@ -106,18 +98,5 @@
}; };
}; };
# systemd.services.nixos-auto-rebuild-sops = {
# description = "Auto rebuild NixOS at boot";
# wantedBy = [ "multi-user.target" ];
# after = [ "network-online.target" ];
# serviceConfig = {
# Type = "oneshot";
# User = "${xlib.device.username}";
# Group = "users";
# WorkingDirectory = "/etc/nixos";
# ExecStart = [ "/run/wrappers/bin/sudo ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch" ];
# };
# };
# fileSystems."/etc/ssh".neededForBoot = true; # fileSystems."/etc/ssh".neededForBoot = true;
} }
+2 -202
View File
@@ -8,7 +8,6 @@ let
server = "100.64.0.0"; server = "100.64.0.0";
in in
{ {
# environment.etc."nginx/pubray".text = inputs.zeroq-credentials.services.xray.auth;
users.users.nginx.extraGroups = [ "acme" ]; users.users.nginx.extraGroups = [ "acme" ];
services = { services = {
nginx = { nginx = {
@@ -17,22 +16,7 @@ in
recommendedOptimisation = true; recommendedOptimisation = true;
recommendedProxySettings = true; recommendedProxySettings = true;
recommendedTlsSettings = true; recommendedTlsSettings = true;
# appendHttpConfig = inputs.zeroq-credentials.services.xray.maps;
virtualHosts = { virtualHosts = {
# "pubray.zeroq.su" = {
# enableACME = true;
# forceSSL = true;
# root = "${inputs.zeroq-credentials.services.xray.subs}";
# locations."/" = {
# extraConfig = ''
# auth_basic "Restricted";
# auth_basic_user_file /etc/nginx/pubray;
# if ($subfile = "") { return 403; }
# rewrite ^/$ $subfile break;
# '';
# };
# };
"x.zeroq.su" = { "x.zeroq.su" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
@@ -49,197 +33,13 @@ in
proxyPass = "http://localhost:2096"; proxyPass = "http://localhost:2096";
proxyWebsockets = true; proxyWebsockets = true;
}; };
}; "/clash/" = {
}; proxyPass = "http://localhost:2096";
"kuma.zeroq.su" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server}:4001";
proxyWebsockets = true; 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}:4096";
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;
};
};
# 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;
# '';
# };
};
}; };
}; };
security.acme = { security.acme = {
+2 -2
View File
@@ -8,8 +8,8 @@
let let
serviceName = "rsync-services-sync"; serviceName = "rsync-services-sync";
serverAddress = "oqyude@100.64.0.0"; serverAddress = "oqyude@100.64.0.0";
serverDir = "/mnt/services/nodes/vds"; serverDir = "${xlib.dirs.services-nodes-folder}/${xlib.device.hostname}";
nodeDir = "/mnt/services"; nodeDir = "${xlib.dirs.services-mnt-folder}";
in in
{ {
systemd = { systemd = {
+1 -3
View File
@@ -6,12 +6,10 @@
}: }:
{ {
imports = [ imports = [
../software/aichat.nix
../software/beets ../software/beets
../software/whisper.nix
./containers ./containers
./nix-serve.nix ./nix-serve.nix
./tools # ./tools
#../server/open-webui.nix #../server/open-webui.nix
#../services/tts.nix #../services/tts.nix
]; ];