galanthus: Cleanup, add Copyparty

This commit is contained in:
Jan Kremer 2026-02-02 23:11:28 +01:00
parent be4409abcb
commit fe8273c4d3
No known key found for this signature in database
16 changed files with 103 additions and 265 deletions

55
flake.lock generated
View file

@ -23,6 +23,27 @@
"type": "github" "type": "github"
} }
}, },
"copyparty": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1770072317,
"narHash": "sha256-hxkLrjOO7pZ5m3ZRP3nCQEccSFDvC2cj7quEldSKhtM=",
"owner": "9001",
"repo": "copyparty",
"rev": "6694998985e98326ca4ca0a0724cfd4901be2430",
"type": "github"
},
"original": {
"owner": "9001",
"repo": "copyparty",
"type": "github"
}
},
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -52,11 +73,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768220509, "lastModified": 1768764703,
"narHash": "sha256-8wMrJP/Xk5Dkm0TxzaERLt3eGFEhHTWaJKUpK3AoL4o=", "narHash": "sha256-5ulSDyOG1U+1sJhkJHYsUOWEsmtLl97O0NTVMvgIVyc=",
"owner": "LnL7", "owner": "LnL7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "7b1d394e7d9112d4060e12ef3271b38a7c43e83b", "rev": "0fc4e7ac670a0ed874abacf73c4b072a6a58064b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -65,6 +86,21 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils": {
"locked": {
"lastModified": 1678901627,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -93,11 +129,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768410656, "lastModified": 1769978395,
"narHash": "sha256-9CfEGvHgQ8KdhBI5x6RVkuvqCCM7KiVxCM1n9e3lVBA=", "narHash": "sha256-gj1yP3spUb1vGtaF5qPhshd2j0cg4xf51pklDsIm19Q=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "85c83f70968516f571015e260fb21c774e586c0b", "rev": "984708c34d3495a518e6ab6b8633469bbca2f77a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -108,11 +144,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1768127708, "lastModified": 1770019141,
"narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", "narHash": "sha256-VKS4ZLNx4PNrABoB0L8KUpc1fE7CLpQXQs985tGfaCU=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", "rev": "cb369ef2efd432b3cdf8622b0ffc0a97a02f3137",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -125,6 +161,7 @@
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"copyparty": "copyparty",
"darwin": "darwin_2", "darwin": "darwin_2",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"

View file

@ -15,6 +15,10 @@
url = "github:ryantm/agenix"; url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
copyparty = {
url = "github:9001/copyparty";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =

View file

@ -7,6 +7,7 @@
{ {
imports = [ imports = [
inputs.agenix.nixosModules.default inputs.agenix.nixosModules.default
inputs.copyparty.nixosModules.default
./hardware-configuration.nix ./hardware-configuration.nix
../../modules/nixos ../../modules/nixos
]; ];

View file

@ -1,6 +0,0 @@
{
services.adguardhome = {
enable = true;
port = 3000;
};
}

View file

@ -1,31 +0,0 @@
{
containers.audiobooks = {
autoStart = true;
bindMounts = {
"/var/lib/audiobookshelf" = {
hostPath = "/mnt/sdb1/media/audiobooks";
isReadOnly = false;
};
};
config =
{ pkgs, ... }:
{
services = {
audiobookshelf = {
enable = true;
# port = 8000;
# host = "audiobooks.alpine-centauri.ts.net";
};
tailscale = {
enable = true;
useRoutingFeatures = "server";
interfaceName = "userspace-networking";
};
};
system.stateVersion = "24.05";
};
};
}

View file

@ -0,0 +1,46 @@
{
config,
pkgs,
...
}:
{
age.secrets."copyparty-jan" = {
file = ../secrets/copyparty-jan.age;
mode = "400";
owner = "copyparty";
};
environment.systemPackages = [ pkgs.copyparty ];
services.copyparty = {
enable = true;
settings = {
# p = 3923;
z = true;
ed = true;
e2dsa = true;
e2ts = true;
daw = true; # WebDAV
};
accounts = {
jan.passwordFile = config.age.secrets.copyparty-jan.path;
};
groups = {
family = [ "jan" ];
};
volumes = {
"/" = {
path = "/mnt/sdb1/cloud";
access = {
A = [ "jan" ];
r = "*";
};
# flags = { };
};
};
};
}

View file

@ -1,12 +1,11 @@
{ {
imports = [ imports = [
./copyparty.nix
# ./forgejo.nix # ./forgejo.nix
# ./immich.nix # ./immich.nix
./jellyfin.nix ./jellyfin.nix
# ./minecraft.nix # ./minecraft.nix
./opencloud.nix # ./samba.nix
# ./pinchflat.nix
./samba.nix
./tailscale.nix ./tailscale.nix
]; ];
} }

View file

@ -1,24 +0,0 @@
{
containers.freshrss = {
autoStart = true;
config = {
services = {
freshrss = {
enable = true;
language = "de";
authType = "none";
baseUrl = "https://freshrss.alpine-centauri.ts.net";
};
tailscale = {
enable = true;
useRoutingFeatures = "server";
interfaceName = "userspace-networking";
};
};
system.stateVersion = "24.05";
};
};
}

View file

@ -1,5 +1,5 @@
{ {
containers.immich = { containers.photos = {
autoStart = true; autoStart = true;
bindMounts = { bindMounts = {
@ -13,7 +13,8 @@
services = { services = {
immich = { immich = {
enable = true; enable = true;
host = "immich.alpine-centauri.ts.net"; # port = 2283;
host = "photos.alpine-centauri.ts.net";
}; };
tailscale = { tailscale = {

View file

@ -1,86 +0,0 @@
{ inputs, ... }:
{
containers.nextcloud = {
autoStart = true;
bindMounts = {
"/etc/ssh/ssh_host_ed25519_key".hostPath = "/etc/ssh/ssh_host_ed25519_key";
"/var/lib/nextcloud/data" = {
hostPath = "/mnt/sdb1/data";
isReadOnly = false;
};
};
config =
{ pkgs, config, ... }:
{
imports = [ inputs.agenix.nixosModules.default ];
age = {
identityPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
secrets."nextcloud" = {
file = ../secrets/nextcloud.age;
mode = "400";
owner = "nextcloud";
};
};
services = {
nextcloud = {
enable = true;
package = pkgs.nextcloud30;
hostName = "nextcloud";
https = true;
config = {
adminpassFile = config.age.secrets.nextcloud.path;
};
settings = {
trusted_domains = [ "nextcloud.alpine-centauri.ts.net" ];
enabledPreviewProviders = [
"OC\\Preview\\AVI"
"OC\\Preview\\BMP"
"OC\\Preview\\GIF"
"OC\\Preview\\HEIC"
"OC\\Preview\\JPEG"
"OC\\Preview\\Krita"
"OC\\Preview\\MKV"
"OC\\Preview\\MP3"
"OC\\Preview\\MP4"
"OC\\Preview\\MarkDown"
"OC\\Preview\\Movie"
"OC\\Preview\\OpenDocument"
"OC\\Preview\\PDF"
"OC\\Preview\\PNG"
"OC\\Preview\\TXT"
"OC\\Preview\\XBitmap"
];
};
database.createLocally = true;
configureRedis = true;
maxUploadSize = "1G";
## Set up non-declaratively for now
# extraAppsEnable = true;
# autoUpdateApps.enable = true;
# extraApps = {
# inherit (config.services.nextcloud.package.packages.apps)
# news
# contacts
# calendar
# tasks
# ;
# };
};
tailscale = {
enable = true;
useRoutingFeatures = "server";
interfaceName = "userspace-networking";
};
};
system.stateVersion = "24.05";
};
};
}

View file

@ -1,33 +0,0 @@
{
containers.cloud = {
autoStart = true;
bindMounts = {
"/var/lib/opencloud" = {
hostPath = "/mnt/sdb1/opencloud";
isReadOnly = false;
};
};
config = {
services = {
opencloud = {
enable = true;
# port = 9200;
# settings = { };
environment = {
OC_INSECURE = "true";
OC_URL = "https://cloud.alpine-centauri.ts.net";
};
};
tailscale = {
enable = true;
useRoutingFeatures = "server";
interfaceName = "userspace-networking";
};
};
system.stateVersion = "24.05";
};
};
}

View file

@ -1,31 +0,0 @@
{
virtualisation.oci-containers = {
containers = {
pinchflat = {
image = "ghcr.io/kieraneglin/pinchflat:latest";
environment.TZ = "Europe/Berlin";
ports = [ "127.0.0.1:8945:8945" ];
volumes = [
"/mnt/sdb1/media/youtube/config:/config"
"/mnt/sdb1/media/youtube/downloads:/downloads"
];
};
};
};
containers.youtube = {
autoStart = true;
config = {
services = {
tailscale = {
enable = true;
useRoutingFeatures = "server";
interfaceName = "userspace-networking";
};
};
system.stateVersion = "24.05";
};
};
}

View file

@ -1,32 +0,0 @@
{
containers.vault = {
autoStart = true;
bindMounts = {
"/var/backup/vaultwarden" = {
hostPath = "/mnt/sdb1/vaultwarden";
isReadOnly = false;
};
};
config = {
services = {
vaultwarden = {
enable = true;
backupDir = "/var/backup/vaultwarden";
dbBackend = "postgresql";
config = {
# SIGNUPS_ALLOWED = false;
};
};
tailscale = {
enable = true;
useRoutingFeatures = "server";
interfaceName = "userspace-networking";
};
};
system.stateVersion = "24.05";
};
};
}

Binary file not shown.

View file

@ -1,7 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 2otpcg 3veZJ75b0D5gej3P4fHkM8yGzVH5ldkGOCYBkdztoSw
KXDhfvj/wfpMXqQ1MspymfJBBqRJktcSngIkEBDSUu4
-> ssh-ed25519 40YjXQ L1yJYjyAmCi7W05BAVeFZi3mSCzBNU0/hqm2prEV/wI
J6lFx4DD+Lj4tjsBntIlzuvZfqTQ3P7xzNZs0vcZBko
--- 0uC4zy+Xahwt3nuFJyNyHVCIPcgwxVX8cXo0ivwQUaU
Q€½áÁã²±•!ÅR<C385>GÃEØ)®c¦@Ç n²‡¿ âôû…ŠÚ ñ‰nz„hµk²—µ€r

View file

@ -7,7 +7,7 @@ let
]; ];
in in
{ {
"nextcloud.age".publicKeys = all; "copyparty-jan.age".publicKeys = all;
"forgejo-runner-token.age".publicKeys = all; "forgejo-runner-token.age".publicKeys = all;
"tailscale.age".publicKeys = all; "tailscale.age".publicKeys = all;
} }