{ inputs = { nixpkgs.url = "nixpkgs/nixos-25.05"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: { nixosModules.default = ./contrib/nixos/modules/copyparty.nix; overlays.default = import ./contrib/package/nix/overlay.nix; } // flake-utils.lib.eachDefaultSystem ( system: let lib = import "${nixpkgs}/lib"; inherit (self) lastModifiedDate; year = lib.toIntBase10 (builtins.substring 0 4 lastModifiedDate); month = lib.toIntBase10 (builtins.substring 4 2 lastModifiedDate); day = lib.toIntBase10 (builtins.substring 6 2 lastModifiedDate); pkgs = import nixpkgs { inherit system; config = { allowAliases = false; }; overlays = [ self.overlays.default ] ++ lib.singleton (old: new: { # This is here in flake.nix rather than common/packages/nix because it needs to access the flake metadata to get the date of the most recent commit (lastModifiedDate) copyparty-unstable = new.copyparty.overrideAttrs (finalAttrs: previousAttrs: { version = "${previousAttrs.version}-unstable-${self.lastModifiedDate}"; src = self; postPatch = '' old_src="$(mktemp -d)" tar -C "$old_src" -xvf ${new.copyparty.src} cp -r "$old_src"/*/copyparty/web/deps/* copyparty/web/deps sed -i 's/^BUILD_DT =.*$/BUILD_DT = (${toString year}, ${toString month}, ${toString day})/' copyparty/__version__.py sed -i 's/^CODENAME =.*$/CODENAME = "unstable"/' copyparty/__version__.py ''; }); }); }; in { # check that copyparty builds with all optionals turned on checks.copyparty-full = self.packages.${system}.copyparty.override { withHashedPasswords = true; withCertgen = true; withThumbnails = true; withFastThumbnails = true; withMediaProcessing = true; withBasicAudioMetadata = true; withZeroMQ = true; withFTPS = true; withSMB = true; }; packages = { inherit (pkgs) copyparty copyparty-unstable ; default = self.packages.${system}.copyparty; }; formatter = pkgs.nixfmt-tree; } ); }