         // create variant groups of the base localisation first
         var baseLocalisationVariantGroups: [PBXVariantGroup] = []
 
-        let sourceExcludeFilePaths: Set<Path> = Set(
-            getSourceExcludes(targetSource: targetSource)
-        )
-
-        func isNotExcludeFilePath(_ path: Path) -> Bool {
-            return !path.lastComponent.contains(".DS_Store")
-                && !sourceExcludeFilePaths.contains(path)
-        }
-
         if let baseLocalisedDirectory = baseLocalisedDirectory {
             for filePath in try baseLocalisedDirectory.children()
-                .filter(isNotExcludeFilePath(_:))
+                .filter(isIncludedPath)
                 .sorted() {
                 let variantGroup = getVariantGroup(path: filePath, inPath: path)
                 groupChildren.append(variantGroup.reference)


    private let spec: ProjectSpec
    var addObjectClosure: (String, PBXObject) -> String

    var targetName: String = ""



    private func getSourceFiles(targetSource: TargetSource, path: Path) throws -> [SourceFile] {

        // generate excluded paths
        targetSourceExcludePaths = getSourceExcludes(targetSource: targetSource)

        let type = targetSource.type ?? (path.isFile || path.extension != nil ? .file : .group)
        let createIntermediateGroups = spec.options.createIntermediateGroups

