Compare commits
11 Commits
de0d6b0d7e
...
438ce4c58e
| Author | SHA1 | Date | |
|---|---|---|---|
| 438ce4c58e | |||
| 0b0634530f | |||
| 03a85fc670 | |||
| 2c218aef72 | |||
| 01af2f43ea | |||
| 5a61ac8367 | |||
| 421b9a7cd6 | |||
| 0a770e4094 | |||
| 8cfe8b7c6f | |||
| 497ca74787 | |||
| 83137ba3f3 |
@@ -32,21 +32,25 @@
|
|||||||
gsr-ui,
|
gsr-ui,
|
||||||
bcdl-free,
|
bcdl-free,
|
||||||
...
|
...
|
||||||
}:
|
}@inputs:
|
||||||
let
|
let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.desktop = nixpkgs.lib.nixosSystem {
|
||||||
inherit system;
|
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit sls-steam;
|
inherit
|
||||||
|
sls-steam
|
||||||
|
bcdl-free
|
||||||
|
xremap-flake
|
||||||
|
system
|
||||||
|
;
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
./configuration.nix
|
./hosts/desktop/configuration.nix
|
||||||
./hardware-configuration.nix
|
./hosts/desktop/hardware-configuration.nix
|
||||||
|
./modules/common.nix
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
xremap-flake.nixosModules.default
|
|
||||||
gsr-ui.nixosModules.default
|
gsr-ui.nixosModules.default
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
@@ -54,55 +58,29 @@
|
|||||||
millennium.overlays.default
|
millennium.overlays.default
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [ bcdl-free.packages.${system}.default ];
|
home-manager.users.user = import ./hosts/desktop/home-manager/home.nix;
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
|
|
||||||
home-manager.users.user = import ./home-manager/home.nix;
|
|
||||||
|
|
||||||
home-manager.extraSpecialArgs = {
|
home-manager.extraSpecialArgs = {
|
||||||
inherit zen-browser;
|
inherit zen-browser;
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.backupFileExtension = "backup";
|
|
||||||
|
|
||||||
programs.gpu-screen-recorder = {
|
programs.gpu-screen-recorder = {
|
||||||
package = gsr-ui.packages.${system}.gpu-screen-recorder;
|
package = gsr-ui.packages.${system}.gpu-screen-recorder;
|
||||||
enable = true;
|
enable = true;
|
||||||
ui.enable = true;
|
ui.enable = true;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
# xremap
|
];
|
||||||
services.xremap.enable = true;
|
|
||||||
services.xremap.withHypr = true;
|
|
||||||
|
|
||||||
services.xremap.config.modmap = [
|
|
||||||
{
|
|
||||||
name = "Global";
|
|
||||||
remap = {
|
|
||||||
"CapsLock" = "Esc";
|
|
||||||
};
|
};
|
||||||
}
|
nixosConfigurations.music-server = nixpkgs.lib.nixosSystem {
|
||||||
];
|
specialArgs = { inherit inputs bcdl-free system; };
|
||||||
|
modules = [
|
||||||
services.xremap.config.keymap = [
|
./hosts/music-server/configuration.nix
|
||||||
|
./hosts/music-server/hardware-configuration.nix
|
||||||
|
./modules/common.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
name = "curly braces";
|
home-manager.users.user = import ./hosts/music-server/home-manager/home.nix;
|
||||||
remap = {
|
|
||||||
"KEY_SEMICOLON" = "RIGHTALT-KEY_7";
|
|
||||||
}; # ä -> }
|
|
||||||
remap = {
|
|
||||||
"KEY_APOSTROPHE" = "RIGHTALT-KEY_0";
|
|
||||||
}; # ö -> {
|
|
||||||
remap = {
|
|
||||||
"RIGHTALT-KEY_A" = "KEY_APOSTROPHE";
|
|
||||||
}; # altgr + a -> ä
|
|
||||||
remap = {
|
|
||||||
"RIGHTALT-KEY_W" = "KEY_SEMICOLON";
|
|
||||||
}; # altgr + w -> ö
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cpuid-fault-emulation = pkgs.callPackage ./pkgs/cpuid-fault-emulation {
|
cpuid-fault-emulation = pkgs.callPackage ../../pkgs/cpuid-fault-emulation {
|
||||||
kernel = config.boot.kernelPackages.kernel;
|
kernel = config.boot.kernelPackages.kernel;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
@@ -15,6 +15,8 @@ in
|
|||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
|
../../modules/scripts.nix
|
||||||
|
../../modules/desktop/xremap.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# DISKS
|
# DISKS
|
||||||
@@ -103,7 +105,7 @@ in
|
|||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "nixos"; # Define your hostname.
|
networking.hostName = "nixos-desktop";
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./packages.nix
|
||||||
|
../../modules/server
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
fileSystems."/media/music" = {
|
||||||
|
device = "/dev/disk/by-uuid/8e6ae06e-a4b5-4ac8-ad15-cb288b14715f";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home/user/backup" = {
|
||||||
|
device = "/dev/disk/by-uuid/db7d96f1-5c72-42dc-abc1-00de9b73f017";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostId = "6054e036";
|
||||||
|
networking.hostName = "nixos-music";
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
keyMap = "de";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
users.users.user = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "user";
|
||||||
|
uid = 1000;
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
"docker"
|
||||||
|
];
|
||||||
|
shell = pkgs.fish;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
services.rsync.enable = true;
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
programs.nh.enable = true;
|
||||||
|
programs.neovim.enable = true;
|
||||||
|
programs.tmux.enable = true;
|
||||||
|
programs.bat.enable = true;
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
user = {
|
||||||
|
name = "KeksNino";
|
||||||
|
email = "KeksNino@proton.me";
|
||||||
|
};
|
||||||
|
init = {
|
||||||
|
defaultBranch = "main";
|
||||||
|
};
|
||||||
|
push = {
|
||||||
|
autoSetupRemote = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "26.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"usb_storage"
|
||||||
|
"uas"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "zpool/root";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/var" = {
|
||||||
|
device = "zpool/var";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "zpool/nix";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "zpool/home";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/FCFD-4472";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
programs.beets.enable = true;
|
||||||
|
|
||||||
|
# programs.beets.package = pkgs.beets.override {
|
||||||
|
# pluginOverrides = {
|
||||||
|
# filetote = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
programs.beets.settings = {
|
||||||
|
directory = "/home/user/Music/Tracks";
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
"fetchart"
|
||||||
|
"badfiles"
|
||||||
|
"edit"
|
||||||
|
"fish"
|
||||||
|
"hook"
|
||||||
|
];
|
||||||
|
|
||||||
|
import = {
|
||||||
|
copy = false;
|
||||||
|
move = true;
|
||||||
|
autotag = false;
|
||||||
|
write = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
paths = {
|
||||||
|
default = "$albumartist/$album/$track. $artist - $title";
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchart = {
|
||||||
|
auto = true;
|
||||||
|
sources = [ "filesystem" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
badfiles = {
|
||||||
|
check_on_import = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hook = {
|
||||||
|
hooks = [
|
||||||
|
{
|
||||||
|
event = "item_imported";
|
||||||
|
command = "echo test";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./beets.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.username = "user";
|
||||||
|
home.homeDirectory = "/home/user";
|
||||||
|
|
||||||
|
programs.yazi.enable = true;
|
||||||
|
programs.yazi.enableFishIntegration = true;
|
||||||
|
|
||||||
|
programs.fzf.enable = true;
|
||||||
|
programs.fzf.enableFishIntegration = true;
|
||||||
|
|
||||||
|
programs.zoxide.enable = true;
|
||||||
|
programs.zoxide.enableFishIntegration = true;
|
||||||
|
|
||||||
|
programs.gcc.enable = true;
|
||||||
|
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
git = true;
|
||||||
|
icons = "always";
|
||||||
|
extraOptions = [
|
||||||
|
"-1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.btop.enable = true;
|
||||||
|
programs.fastfetch.enable = true;
|
||||||
|
programs.fd.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
interactiveShellInit = ''
|
||||||
|
set -g fish_key_bindings fish_hybrid_key_bindings
|
||||||
|
set fish_greeting
|
||||||
|
'';
|
||||||
|
shellAliases = {
|
||||||
|
ls = "eza -al --no-time --no-user --no-permissions --no-filesize";
|
||||||
|
ll = "eza -la";
|
||||||
|
cat = "bat";
|
||||||
|
cd = "z";
|
||||||
|
cp = "cp -v";
|
||||||
|
ff = "fastfetch";
|
||||||
|
grep = "grep -i";
|
||||||
|
mv = "mv -v";
|
||||||
|
n = "nvim";
|
||||||
|
r = "rsync -avh --info=progress2";
|
||||||
|
rm = "gomi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.stateVersion = "26.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
|
||||||
|
environment.systemPackages = (
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
wget
|
||||||
|
nixfmt
|
||||||
|
tree-sitter
|
||||||
|
lsof
|
||||||
|
exiftool
|
||||||
|
trash-cli
|
||||||
|
ffmpeg
|
||||||
|
unzip
|
||||||
|
scdl
|
||||||
|
aria2
|
||||||
|
nodejs
|
||||||
|
gomi
|
||||||
|
bun
|
||||||
|
croc
|
||||||
|
mp3val
|
||||||
|
flac
|
||||||
|
(python314.withPackages (
|
||||||
|
ps: with ps; [
|
||||||
|
requests
|
||||||
|
python-dotenv
|
||||||
|
]
|
||||||
|
))
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ system, bcdl-free, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [ bcdl-free.packages.${system}.default ];
|
||||||
|
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
|
||||||
|
home-manager.backupFileExtension = "backup";
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{ xremap-flake, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
xremap-flake.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
services.xremap.enable = true;
|
||||||
|
services.xremap.withHypr = true;
|
||||||
|
|
||||||
|
services.xremap.config.modmap = [
|
||||||
|
{
|
||||||
|
name = "Global";
|
||||||
|
remap = {
|
||||||
|
"CapsLock" = "Esc";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
services.xremap.config.keymap = [
|
||||||
|
{
|
||||||
|
name = "curly braces";
|
||||||
|
remap = {
|
||||||
|
"KEY_SEMICOLON" = "RIGHTALT-KEY_7";
|
||||||
|
}; # ä -> }
|
||||||
|
remap = {
|
||||||
|
"KEY_APOSTROPHE" = "RIGHTALT-KEY_0";
|
||||||
|
}; # ö -> {
|
||||||
|
remap = {
|
||||||
|
"RIGHTALT-KEY_A" = "KEY_APOSTROPHE";
|
||||||
|
}; # altgr + a -> ä
|
||||||
|
remap = {
|
||||||
|
"RIGHTALT-KEY_W" = "KEY_SEMICOLON";
|
||||||
|
}; # altgr + w -> ö
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.writeShellScriptBin "scan" ''
|
||||||
|
find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.ogg" -o -iname "*.wav" -o -iname "*.aiff" \) -print0 |
|
||||||
|
xargs -0 -P"$(nproc)" -I{} bash -c '
|
||||||
|
if ffprobe -v quiet -show_entries format_tags \
|
||||||
|
-of default=nw=1:nk=1 "$1" 2>/dev/null |
|
||||||
|
grep -q -E "Visit https?://[^ ]+"; then
|
||||||
|
echo "Match found in: $1"
|
||||||
|
fi
|
||||||
|
' _ {} | sort
|
||||||
|
'')
|
||||||
|
(pkgs.writeShellScriptBin "2scan" ''
|
||||||
|
find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.ogg" -o -iname "*.wav" -o -iname "*.aiff" \) -print0 |
|
||||||
|
xargs -0 -P"$(nproc)" -I{} sh -c '
|
||||||
|
if ! ffprobe -v quiet -show_entries format_tags \
|
||||||
|
-of default=nw=1:nk=1 "$1" 2>/dev/null |
|
||||||
|
grep -q -E "Visit https?://[^ ]+"; then
|
||||||
|
echo "Match found in: $1"
|
||||||
|
fi
|
||||||
|
' _ {}
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./slskd.nix
|
||||||
|
./navidrome.nix
|
||||||
|
./nfs.nix
|
||||||
|
./services.nix
|
||||||
|
./smb.nix
|
||||||
|
./zfs.nix
|
||||||
|
../scripts.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.navidrome = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
settings = {
|
||||||
|
MusicFolder = "/home/user/Music";
|
||||||
|
PlaylistsPath = "Playlists";
|
||||||
|
Address = "0.0.0.0";
|
||||||
|
ScanSchedule = "@every 24h";
|
||||||
|
EnableInsightsCollector = false;
|
||||||
|
Scanner.PurgeMissing = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.navidrome.serviceConfig = {
|
||||||
|
ProtectHome = lib.mkForce false;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
services.nfs.server = {
|
||||||
|
enable = true;
|
||||||
|
exports = {
|
||||||
|
"/media/music" = {
|
||||||
|
"192.168.132.0/24" = [
|
||||||
|
"rw"
|
||||||
|
"async"
|
||||||
|
"no_subtree_check"
|
||||||
|
"fsid=1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
systemd.timers."bc-wishlist-scraper" = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
Unit = "bc-wishlist-scraper.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."bc-wishlist-scraper" = {
|
||||||
|
script = ''
|
||||||
|
${pkgs.bash}/bin/bash /home/user/bc-wishlist-scraper/run.sh
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.timers."scdl" = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
Unit = "scdl.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services."scdl" = {
|
||||||
|
script = ''
|
||||||
|
cd ~/Music/scdl && ${pkgs.scdl}/bin/scdl me -f -c --download-archive archive.txt
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.slskd = {
|
||||||
|
enable = true;
|
||||||
|
environmentFile = /home/user/slskd_secrets;
|
||||||
|
user = "user";
|
||||||
|
settings = {
|
||||||
|
remote_configuration = true;
|
||||||
|
remote_file_management = true;
|
||||||
|
directories = {
|
||||||
|
downloads = "/media/music/Soulseek";
|
||||||
|
};
|
||||||
|
shares = {
|
||||||
|
directories = [
|
||||||
|
"/media/music/Tracks"
|
||||||
|
"/media/music/Tracks2"
|
||||||
|
"/media/music/samples"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
rooms = [
|
||||||
|
"Rare Music"
|
||||||
|
"nicotine"
|
||||||
|
"! ! LGBTQ+ ! !"
|
||||||
|
"lossless"
|
||||||
|
"Linux"
|
||||||
|
"Breakcore"
|
||||||
|
"Jungle"
|
||||||
|
];
|
||||||
|
transfers = {
|
||||||
|
upload = {
|
||||||
|
speed_limit = 3700;
|
||||||
|
};
|
||||||
|
groups = {
|
||||||
|
blacklisted = {
|
||||||
|
members = [
|
||||||
|
"relay"
|
||||||
|
"smbd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
user_defined = {
|
||||||
|
my_buddies = {
|
||||||
|
upload = {
|
||||||
|
priority = 1;
|
||||||
|
strategy = "firstinfirstout";
|
||||||
|
slots = 1000;
|
||||||
|
};
|
||||||
|
members = [
|
||||||
|
"noamifur"
|
||||||
|
"mesityl"
|
||||||
|
"diphenhydramine"
|
||||||
|
"monfi"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
soulseek = {
|
||||||
|
description = ''
|
||||||
|
Fuck DRM. Fuck Spotify
|
||||||
|
Discord: keksnino
|
||||||
|
https://www.last.fm/user/KeksNino
|
||||||
|
'';
|
||||||
|
listen_port = 32895;
|
||||||
|
};
|
||||||
|
feature = {
|
||||||
|
swagger = true;
|
||||||
|
};
|
||||||
|
integrations = {
|
||||||
|
webhooks = {
|
||||||
|
discord_relay = {
|
||||||
|
call = {
|
||||||
|
url = "http://localhost:5001/slskd_webhook";
|
||||||
|
};
|
||||||
|
on = [ "UploadFileComplete" ];
|
||||||
|
timeout = 5000;
|
||||||
|
retry = {
|
||||||
|
attempts = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
retention = {
|
||||||
|
files = {
|
||||||
|
incomplete = 20160;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.slskd-speed = {
|
||||||
|
enable = true;
|
||||||
|
description = "Soulseek True Speed Shower";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
Environment = "PYTHONUNBUFFERED=1";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 30;
|
||||||
|
StandardOutput = "journal";
|
||||||
|
StandardError = "journal";
|
||||||
|
EnvironmentFile = "/home/user/slskd_secrets";
|
||||||
|
ExecStart = ''
|
||||||
|
${pkgs.python3}/bin/python3 /home/user/slskd-speed.py \
|
||||||
|
-u "$SLSKD_SLSK_USERNAME" \
|
||||||
|
-p "$SLSKD_SLSK_PASSWORD" \
|
||||||
|
-s 30mbit/s \
|
||||||
|
--slskd-url http://localhost:5030 \
|
||||||
|
--slskd-key "$SLSKD_API_KEY" \
|
||||||
|
--loop \
|
||||||
|
--poll-interval 30 \
|
||||||
|
--interval 900
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
services.samba = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
"workgroup" = "WORKGROUP";
|
||||||
|
"server string" = "smbnix";
|
||||||
|
"security" = "user";
|
||||||
|
"interfaces" = "lo eno1 tailscale0";
|
||||||
|
"hosts allow" = "192.168.132.0/24 100.64.0.0/10 127.0.0.1 localhost";
|
||||||
|
"hosts deny" = "0.0.0.0/0";
|
||||||
|
"guest account" = "nobody";
|
||||||
|
};
|
||||||
|
"Music" = {
|
||||||
|
"path" = "/media/music";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"valid users" = "user";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
boot.loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
zfsSupport = true;
|
||||||
|
efiSupport = true;
|
||||||
|
efiInstallAsRemovable = true;
|
||||||
|
mirroredBoots = [
|
||||||
|
{
|
||||||
|
devices = [ "nodev" ];
|
||||||
|
path = "/boot";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "zpool/root";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "zpool/nix";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
fileSystems."/var" = {
|
||||||
|
device = "zpool/var";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "zpool/home";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/FCFD-4472";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
boot.zfs.forceImportRoot = false;
|
||||||
|
services.zfs.autoScrub.enable = true;
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user